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.

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 .

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 

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 RVB de la caméra gauche (/ zed / left / image_raw_color):

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

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 


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:

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.