Configurer ROS et travailler avec une caméra stéréo ZED sur NVIDIA Jetson

Bonjour, chers lecteurs! Dans des articles rĂ©cents, j'ai parlĂ© des mĂ©thodes SLAM et d'odomĂ©trie visuelle populaires prises en charge dans ROS. Dans cet article, je vais m'Ă©carter un peu du sujet et parler de la configuration et de l'utilisation de ROS sur le micro-ordinateur NVIDIA Jetson TK1 . AprĂšs avoir installĂ© tout ce dont nous avons besoin, nous allons nous connecter et essayer la camĂ©ra stĂ©rĂ©o ZED de streolabs . À qui c'est intĂ©ressant je demande sous kat.

À propos de NVIDIA Jetson


Pour commencer, envisagez la plate-forme NVIDIA Jetson TK1. NVIDIA Jetson TK1 est un micro-ordinateur NVIDIA basĂ© sur le Tegra K1 SOC (CPU + GPU sur une seule puce avec prise en charge CUDA). NVIDIA Jetson possĂšde un processeur ARM Cortex-A15 quad-core Ă  2,3 GHz, a les mĂȘmes composants que le Raspberry Pi (HDMI, USB 2.0 et 3.0, Ethernet), ainsi que des modules spĂ©cifiques au PC: SATA, mini-PCIe . Le processeur mobile Tegra K1 a des propriĂ©tĂ©s et une architecture trĂšs similaires aux GPU de bureau, ce qui lui permet de rĂ©sister Ă  de lourdes charges avec une consommation Ă©lectrique minimale. Comme indiquĂ© sur la page officielle, le processeur vous permet d'exĂ©cuter toutes les tĂąches graphiques gourmandes en ressources sur la carte, telles que la reconnaissance faciale, la rĂ©alitĂ© augmentĂ©e et mĂȘme les tĂąches de vision par ordinateur pour les vĂ©hicules sans pilote. Vous pouvez en savoir plus sur toutes les fonctionnalitĂ©s de la plateforme ici .

La mémoire interne du NVIDIA Jetson TK1 est représentée par un module eMMC de 16 Go. Par défaut, NVIDIA Jetson TK1 est préchargé avec le systÚme d'exploitation Ubuntu 14.04.

Un adaptateur 12 V CA / CC est utilisé pour alimenter le micro-ordinateur.

image

Caméra stéréo ZED


La caméra stéréo ZED est une caméra de profondeur passive, composée de deux caméras RVB ordinaires, distantes de 12 cm l'une de l'autre, avec une vue jusqu'à 20 mÚtres. Contrairement aux caméras actives (telles que ASUS Xtion et Microsoft Kinect), la caméra stéréo ZED n'a pas de laser infrarouge pour mesurer la distance. L'appareil photo est relativement peu coûteux (coûte 449 $). L'avantage de l'appareil photo est sa petite taille (175 x 30 x 33 mm) et sa légÚreté (159 g).

La camĂ©ra peut ĂȘtre utilisĂ©e pour construire des cartes de la zone Ă  l'extĂ©rieur sur le drone .
Vous pouvez en savoir plus sur l'appareil photo sur la page officielle .

image

Configuration d'Ubuntu sur NVIDIA Jetson TK1


Nous connectons le NVIDIA Jetson TK1 via HDMI au moniteur, un cĂąble Ethernet au connecteur correspondant, et enfin en utilisant l'adaptateur 12 V AC / DC Ă  la source d'alimentation.

Pour installer le systĂšme sur NVIDIA Jetson, vous devrez peut-ĂȘtre installer JetPack TK1 (les instructions se trouvent ici ). J'ai sous la main NVIDIA Jetson avec JetPack dĂ©jĂ  installĂ© et Ubuntu 14.04, donc ici je ne vais pas envisager de l'installer.

Le systÚme Ubuntu 14.04 démarre donc automatiquement. Pour l'autorisation, nous utilisons le nom d'utilisateur et le mot de passe ubuntu.

Découvrez l'adresse IP de l'hÎte Jetson:

ifconfig 

Obtenez les spécifications matérielles:

 lscpu 

La conclusion est la suivante:

 Architecture: armv7l Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 

Il peut y avoir un problÚme de connexion à Jetson via SSH: ifconfig affiche l'adresse IP, mais vous ne pouvez pas vous connecter à Jetson à cette adresse. Pour résoudre le problÚme, ouvrez le fichier / etc / network / interface depuis la racine:

 sudo nano /etc/network/interface 

et ajoutez les lignes:

 auto eth0 iface eth0 inet dhcp 

Nous avons fait une attribution dynamique des adresses IP. Enregistrez les modifications et exécutez:

 sudo ifup eth0 

Maintenant, tout devrait fonctionner. Cette décision a été prise d'ici .
Connectez-vous maintenant Ă  Jetson via SSH:

 ssh -X ubuntu@<ip_address> 

Installer CUDA


Pour fonctionner avec la caméra ZED, nous avons besoin du SDK ZED, qui nécessite la version 6.5 installée de CUDA. Téléchargez le fichier deb pour CUDA Toolkit 6.5 pour L4T à partir d'ici (instructions à partir d'ici ):

 wget http://developer.download.nvidia.com/compute/cuda/6_5/rel/installers/cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

Définissez les métadonnées du référentiel pour CUDA pour L4T que vous venez de télécharger:

 sudo dpkg -i cuda-repo-l4t-r21.1-6-5-prod_6.5-14_armhf.deb 

TĂ©lĂ©chargez et installez la boĂźte Ă  outils CUDA elle-mĂȘme, y compris la boĂźte Ă  outils OpenGL pour NVIDIA:

 sudo apt-get update 

Installez cuda-toolkit-6-5:

 sudo apt-get install cuda-toolkit-6-5 

Ajoutez l'utilisateur ubuntu au groupe «vidéo» pour donner accÚs au GPU:

 sudo usermod -a -G video $USER 

Ici, USER est ubuntu.
Ajoutez les chemins d'accÚs au dossier d'installation de CUDA au script .bashrc et exécutez-le dans le terminal actuel:

 echo "export PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc echo "export $PATH=/usr/local/cuda-6.5/bin:$PATH" >> ~/.bashrc source ~/.bashrc 

Vérifiez que la boßte à outils CUDA est installée sur l'appareil:

 nvcc -V 

Configuration de l'USB 3.0 sur le Jetson TK1


Par défaut, le port USB 3.0 est configuré par le systÚme sur le Jetson TK1 comme USB 2.0. Nous devons le configurer en USB 3.0. Pour ce faire, ouvrez le fichier /boot/extlinux/extlinux.conf sous la racine:

 sudo vi /boot/extlinux/extlinux.conf 

Recherchez la chaßne «usb_port_owner_info = 0». Si cette ligne apparaßt deux fois, modifiez la derniÚre inclusion. Réécrivez «usb_port_owner_info = 0» en «usb_port_owner_info = 2».

Installer le SDK ZED


La procédure d'installation ressemble à Linux de bureau. Il convient de noter que OpenCV est déjà installé lors de l'installation de JetPack afin que vous puissiez utiliser l'optimisation Tegra pour cela. Par conséquent, l'installation manuelle d'OpenCV n'est pas requise.

Pour utiliser la caméra stéréo ZED, nous devons installer le SDK ZED 1.2. Le programme d'installation utilise un fichier .run Jetson TK1 spécial. Téléchargez l'installateur:

 wget https://www.stereolabs.com/developers/downloads/archives/ZED_SDK_Linux_JTK1_v1.2.0.run 

Définissez les droits d'exécution du fichier et exécutez-le dans le terminal:

 sudo chmod +x ZED_SDK_Linux_JTK1_v1.2.0.run ./ZED_SDK_Linux_JTK1_v1.2.0.run 

Nous acceptons les termes du contrat de licence, appuyez sur «q» puis sur «Y». Ensuite, suivez les instructions.

Lancez ZED Explorer sur Jetson lui-mĂȘme (ne fonctionne pas lors de la connexion Ă  distance via SSH):

 /usr/local/zed/tools/ZED\ Explorer 

image

Installation du pilote ROS pour la caméra stéréo ZED


J'ai utilisé ROS Indigo dans mes expériences. Installez les dépendances du pilote ROS:

 sudo apt-get install ros-indigo-tf2-ros ros-indigo-image-transport ros-indigo-dynamic-reconfigure ros-indigo-urdf 

Installez le wrapper ROS pour la caméra ZED:

 cd ~/catkin_ws/src git clone https://github.com/zastrix/zed-ros-wrapper.git git checkout ef3ad46f14cf62ff21083829a1fa6879d20246de cd ~/catkin_ws catkin_make 

ExĂ©cutez zed_wrapper en exĂ©cutant les commandes suivantes dans diffĂ©rentes fenĂȘtres du terminal:

 roscore roslaunch zed_wrapper zed.launch 

Nous montrons les sujets actifs:

 rostopic list 

Dans la liste, en plus des sujets standard, nous verrons des sujets avec le préfixe / zed:

 /zed/depth/camera_info /zed/depth/depth_registered /zed/joint_states /zed/left/camera_info /zed/left/image_raw_color /zed/left/image_rect_color /zed/odom /zed/point_cloud/cloud_registered /zed/rgb/camera_info /zed/rgb/image_raw_color /zed/rgb/image_rect_color /zed/right/camera_info /zed/right/image_raw_color /zed/right/image_rect_color 

Exécutez rqt_image_view:

 rosrun rqt_image_view rqt_image_view 

Lorsque vous choisissez le sujet / zed / depth / depth_registered, nous obtenons une carte de profondeur:

image

Image RVB de la caméra gauche (/ zed / left / image_raw_color):

image

Et enfin, l'image RVB de la caméra de droite (/ zed / right / image_raw_color):

image

Les données de la caméra sont publiées dans les rubriques / zed / rgb / image_raw_color et / zed / depth / depth_registered avec une fréquence de 15 Hz.
Nous découvrons la fréquence de publication d'un nuage de points dans la rubrique / zed / point_cloud / cloud_registered:

 rostopic hz /zed/point_cloud/cloud_registered 

 average rate: 4.146 min: 0.202s max: 0.371s std dev: 0.04798s window: 11 average rate: 4.178 min: 0.191s max: 0.371s std dev: 0.04306s window: 16 

ExĂ©cutez rviz sur Jetson lui-mĂȘme (je n'ai pas pu le lancer avec succĂšs lors de la connexion via ssh avec l'option -x):

 rosrun rviz rviz 

image

image

SLAM sur NVIDIA Jetson avec caméra stéréo ZED


Essayons maintenant la caméra ZED sur une tùche pratique. Sur NVIDIA Jetson, vous pouvez facilement exécuter l'algorithme SLAM RTAB-MAP. Tout d'abord, installez le wrapper ROS pour RTAB-MAP:

 sudo apt-get install ros-indigo-rtabmap-ros 

Exécutez maintenant rtabmap à l'aide de la caméra ZED. Si nous n'avons pas zed_wrapper en cours d'exécution, exécutez-le:

 rosrun zed_wrapper zed_wrapper_node 

Exécutez rtabmap:

 rtabmap 

SĂ©lectionnez la camĂ©ra ZED dans la fenĂȘtre rtabmap comme source:

image

Je n'ai pas testé le RTAB-MAP sur NVIDIA Jetson, donc je vous laisse, chers lecteurs, l'opportunité d'essayer cet algorithme SLAM. L'utilisation de RTAB-MAP se trouve dans mes deux derniers articles ( ici et ici ).

J'espÚre que cet article sera un bon point de départ pour vous d'utiliser la caméra stéréo ZED et le micro-ordinateur NVIDIA Jetson. Je vous souhaite bonne chance dans les expériences et à bientÎt!

PS: Votre opinion sur le choix d'une caméra stéréo peu coûteuse pour l'expérimentation est intéressante. Le support ROS n'est pas un gros problÚme, surtout le prix. Veuillez écrire vos options dans les commentaires de l'article.

PS (Upd): Je voudrais essayer des caméras stéréo passives comme ZED. Souhaitable capable de travailler avec Raspberry Pi 3.

Source: https://habr.com/ru/post/fr409259/


All Articles