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.