Konfigurieren von ROS und Arbeiten mit einer ZED-Stereokamera auf NVIDIA Jetson

Guten Tag, liebe Leser! In jüngsten Artikeln habe ich über die beliebten SLAM- und visuellen Odometrie-Methoden gesprochen, die in ROS unterstützt werden. In diesem Artikel werde ich ein wenig vom Thema abweichen und über das Einrichten und Arbeiten mit ROS auf dem NVIDIA Jetson TK1- Mikrocomputer sprechen . Nachdem wir alles installiert haben, was wir brauchen, werden wir die Streolabs ZED-Stereokamera anschließen und ausprobieren. An wen es interessant ist frage ich unter kat.

Über NVIDIA Jetson


Betrachten Sie zunächst die NVIDIA Jetson TK1-Plattform. NVIDIA Jetson TK1 ist ein NVIDIA-Mikrocomputer, der auf dem Tegra K1 SOC (CPU + GPU auf einem einzelnen Chip mit CUDA-Unterstützung) basiert. NVIDIA Jetson verfügt über eine Quad-Core-ARM-Cortex-A15-CPU mit 2,3 GHz, dieselben Komponenten wie der Raspberry Pi (HDMI, USB 2.0 und 3.0, Ethernet) sowie PC-spezifische Module: SATA, Mini-PCIe . Der mobile Prozessor Tegra K1 hat sehr ähnliche Eigenschaften und Architekturen wie Desktop-GPUs, sodass er hohen Lasten bei minimalem Stromverbrauch standhält. Wie auf der offiziellen Seite angegeben, können Sie mit dem Prozessor alle ressourcenintensiven Grafikaufgaben auf der Platine ausführen, z. B. Gesichtserkennung, Augmented Reality und sogar Computer Vision-Aufgaben für unbemannte Fahrzeuge. Weitere Informationen zu allen Plattformfunktionen finden Sie hier .

Der interne Speicher des NVIDIA Jetson TK1 wird durch ein 16-GB-eMMC-Modul dargestellt. Standardmäßig ist NVIDIA Jetson TK1 mit dem Betriebssystem Ubuntu 14.04 vorinstalliert.

Ein 12-V-AC / DC-Adapter wird zur Stromversorgung des Mikrocomputers verwendet.

Bild

ZED-Stereokamera


Die ZED-Stereokamera ist eine passive Tiefenkamera, die aus zwei gewöhnlichen RGB-Kameras besteht, die 12 cm voneinander entfernt sind und eine Sicht von bis zu 20 Metern haben. Im Gegensatz zu aktiven Kameras (wie ASUS Xtion und Microsoft Kinect) verfügt die ZED-Stereokamera nicht über einen Infrarotlaser zur Entfernungsmessung. Die Kamera ist relativ günstig (kostet 449 US-Dollar). Der Vorteil der Kamera ist ihre geringe Größe (175 x 30 x 33 mm) und Leichtigkeit (159 g).

Mit der Kamera können Karten des Gebiets im Freien auf der Drohne erstellt werden .
Weitere Informationen zur Kamera finden Sie auf der offiziellen Seite .

Bild

Ubuntu auf NVIDIA Jetson TK1 konfigurieren


Wir verbinden den NVIDIA Jetson TK1 über HDMI mit dem Monitor, ein Ethernet-Kabel mit dem entsprechenden Anschluss und schließlich über den 12-V-AC / DC-Adapter mit der Stromquelle.

Um das System auf NVIDIA Jetson zu installieren, müssen Sie möglicherweise JetPack TK1 installieren (Anweisungen finden Sie hier ). Ich habe NVIDIA Jetson mit bereits installiertem JetPack und Ubuntu 14.04 zur Hand, daher werde ich hier nicht darüber nachdenken, es zu installieren.

Das Ubuntu 14.04-System startet also automatisch. Für die Autorisierung verwenden wir den Ubuntu-Benutzernamen und das Passwort.

Ermitteln Sie die IP-Adresse des Jetson-Hosts:

ifconfig 

Holen Sie sich die Hardwarespezifikationen:

 lscpu 

Die Schlussfolgerung lautet:

 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 

Möglicherweise liegt ein Problem beim Herstellen einer Verbindung zu Jetson über SSH vor: ifconfig zeigt die IP-Adresse an, Sie können jedoch unter dieser Adresse keine Verbindung zu Jetson herstellen. Öffnen Sie zur Behebung des Problems die Datei / etc / network / interface im Stammverzeichnis:

 sudo nano /etc/network/interface 

und fügen Sie die Zeilen hinzu:

 auto eth0 iface eth0 inet dhcp 

Wir haben eine dynamische Zuweisung von IP-Adressen vorgenommen. Speichern Sie die Änderungen und führen Sie Folgendes aus:

 sudo ifup eth0 

Jetzt sollte alles funktionieren. Diese Entscheidung wurde von hier aus getroffen .
Stellen Sie nun über SSH eine Verbindung zu Jetson her:

 ssh -X ubuntu@<ip_address> 

Installieren Sie CUDA


Für die Arbeit mit der ZED-Kamera benötigen wir das ZED SDK, für das die installierte CUDA-Version 6.5 erforderlich ist. Laden Sie hier die Deb-Datei für CUDA Toolkit 6.5 für L4T herunter (Anweisungen hier ):

 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 

Legen Sie die Repository-Metadaten für die gerade heruntergeladene CUDA für L4T fest:

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

Laden Sie das CUDA Toolkit selbst herunter und installieren Sie es, einschließlich des OpenGL-Toolkits für NVIDIA:

 sudo apt-get update 

Installieren Sie cuda-toolkit-6-5:

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

Fügen Sie den Ubuntu-Benutzer zur Gruppe "Video" hinzu, um Zugriff auf die GPU zu erhalten:

 sudo usermod -a -G video $USER 

Hier ist $ USER Ubuntu.
Fügen Sie die Pfade zum CUDA-Installationsordner zum .bashrc-Skript hinzu und führen Sie es im aktuellen Terminal aus:

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

Überprüfen Sie, ob das CUDA Toolkit auf dem Gerät installiert ist:

 nvcc -V 

USB 3.0 auf dem Jetson TK1 konfigurieren


Standardmäßig wird der USB 3.0-Anschluss vom System des Jetson TK1 als USB 2.0 konfiguriert. Wir müssen es als USB 3.0 konfigurieren. Öffnen Sie dazu die Datei /boot/extlinux/extlinux.conf unter dem Stammverzeichnis:

 sudo vi /boot/extlinux/extlinux.conf 

Suchen Sie die Zeichenfolge 'usb_port_owner_info = 0'. Wenn diese Zeile zweimal vorkommt, ändern Sie die letzte Aufnahme. Schreiben Sie 'usb_port_owner_info = 0' in 'usb_port_owner_info = 2' um.

Installieren Sie das ZED SDK


Das Installationsverfahren ähnelt Desktop-Linux. Es ist nur zu beachten, dass OpenCV bereits bei der Installation von JetPack installiert ist, damit Sie die Tegra-Optimierung dafür verwenden können. Daher ist eine manuelle Installation von OpenCV nicht erforderlich.

Um die ZED-Stereokamera verwenden zu können, muss das ZED SDK 1.2 installiert werden. Das Installationsprogramm verwendet eine spezielle Jetson TK1-Laufdatei. Laden Sie das Installationsprogramm herunter:

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

Legen Sie die Ausführungsrechte für die Datei fest und führen Sie sie im Terminal aus:

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

Wir akzeptieren die Bedingungen der Lizenzvereinbarung, drücken 'q' und dann 'Y'. Folgen Sie als nächstes den Anweisungen.

Starten Sie den ZED Explorer auf Jetson selbst (funktioniert nicht, wenn Sie eine Remoteverbindung über SSH herstellen):

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

Bild

Installieren des ROS-Treibers für die ZED-Stereokamera


Ich habe ROS Indigo in meinen Experimenten verwendet. Installieren Sie die Abhängigkeiten für den ROS-Treiber:

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

Installieren Sie den ROS-Wrapper für die ZED-Kamera:

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

Führen Sie zed_wrapper aus, indem Sie die folgenden Befehle in verschiedenen Fenstern des Terminals ausführen:

 roscore roslaunch zed_wrapper zed.launch 

Wir zeigen die aktiven Themen:

 rostopic list 

In der Liste werden zusätzlich zu den Standardthemen Themen mit dem Präfix / zed angezeigt:

 /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 

Führen Sie rqt_image_view aus:

 rosrun rqt_image_view rqt_image_view 

Bei Auswahl des Themas / zed / depth / depth_registered erhalten wir eine Tiefenkarte:

Bild

RGB-Bild von der linken Kamera (/ zed / left / image_raw_color):

Bild

Und schließlich das RGB-Bild von der rechten Kamera (/ zed / right / image_raw_color):

Bild

Daten von der Kamera werden in den Themen / zed / rgb / image_raw_color und / zed / depth / depth_registered mit einer Frequenz von 15 Hz veröffentlicht.
Die Häufigkeit der Veröffentlichung einer Punktwolke finden Sie im Thema / 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 

Führen Sie rviz auf Jetson selbst aus (ich konnte es nicht erfolgreich starten, wenn ich eine Verbindung über ssh mit der Option -x herstellte):

 rosrun rviz rviz 

Bild

Bild

SLAM On NVIDIA Jetson mit ZED-Stereokamera


Probieren wir jetzt die ZED-Kamera für eine praktische Aufgabe aus. Auf NVIDIA Jetson können Sie den SLAM RTAB-MAP-Algorithmus problemlos ausführen. Installieren Sie zunächst den ROS-Wrapper für RTAB-MAP:

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

Führen Sie nun rtabmap mit der ZED-Kamera aus. Wenn zed_wrapper nicht ausgeführt wird, führen Sie es aus:

 rosrun zed_wrapper zed_wrapper_node 

Führen Sie rtabmap aus:

 rtabmap 

Wählen Sie die ZED-Kamera im rtabmap-Fenster als Quelle aus:

Bild

Ich habe den RTAB-MAP nicht auf NVIDIA Jetson getestet, daher überlasse ich Ihnen, liebe Leser, die Möglichkeit, diesen SLAM-Algorithmus auszuprobieren. Die Verwendung von RTAB-MAP finden Sie in meinen letzten beiden Artikeln ( hier und hier ).

Ich hoffe, dieser Artikel ist ein guter Ausgangspunkt für die Verwendung der ZED-Stereokamera und des NVIDIA Jetson-Mikrocomputers. Ich wünsche Ihnen viel Glück bei den Experimenten und bis bald!

PS: Ihre Meinung zur Auswahl einer kostengünstigen Stereokamera zum Experimentieren ist interessant. ROS-Unterstützung ist keine große Sache, vor allem der Preis. Bitte schreiben Sie Ihre Optionen in die Kommentare zum Artikel.

PS (Upd): Ich würde gerne passive Stereokameras wie ZED ausprobieren. Wünschenswert in der Lage, mit Raspberry Pi 3 zu arbeiten.

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


All Articles