Guten Tag, lieber Habratchiteli!Jüngste Beobachtungen und persönliche Erfahrungen haben gezeigt, dass das Anschließen einer Microsoft Kinect Xbox 360-Kamera zur Verwendung in ROS Indigo unter Ubuntu 14.04 häufig Probleme verursacht. Insbesondere beim Starten des ROS-Pakets openni_launch kann das Gerät nicht erkannt werden und es wird der Fehler "Kein Gerät verbunden" generiert. In diesem Artikel werde ich meine schrittweise Methode zum Einrichten der Umgebung für die Verwendung von Microsoft Kinect von ROS Indigo beschreiben. Wer interessiert sich bitte unter dem Schnitt!Microsoft Kinect Kamera
Dieser Sensor wurde bereits im Artikel ausführlich beschrieben . Kurz gesagt, Microsoft Kinect ist eine 3D-Kamera (RGB-D, dh Rot, Grün, Blau und Tiefe), die auf der Strukturlichttechnologie basiert und es Ihnen ermöglicht, eine Tiefenkarte der Oberflächen von Objekten zu erhalten, die in das Sichtfeld der Kamera fallen. Die Tiefenkarte kann in eine dreidimensionale „Wolke“ von Punkten umgewandelt werden, in der jeder Punkt die genauen Koordinaten X, Y und Z im Raum und in einigen Fällen die Farbe im RGB-Format aufweist. Punktwolken werden zur Rekonstruktion von Objekten, zur Erstellung von Geländekarten in der Servicerobotik, zur Objekterkennung und für viele andere Aufgaben im Bereich Computer Vision in 3D verwendet.
ROS unterstützt den Kinect-Sensor. Die vom Sensor empfangene „Wolke“ von Punkten kann im Programm rviz visuell angezeigt werden.
ROS verfügt über spezielle Pakete für openni_launch und openni_camera für die Verwendung des Kinect-Sensors.Treiberinstallation für Microsoft Kinect Sensor
Zuerst müssen Sie die OpenNI-Bibliothek installieren, die für eine Reihe von RGB-D-Sensoren (Kinect, ASUS Xtion, PrimeSense) vorgesehen ist.Installieren Sie einige zusätzliche Pakete, die OpenNI zur Installation benötigt:sudo apt-get install git build-essential python libusb-1.0-0-dev freeglut3-dev openjdk-7-jdk
sudo apt-get install doxygen graphviz mono-complete
Installieren Sie jetzt OpenNI 1.5.4 direkt von den Quellen:git clone https://github.com/OpenNI/OpenNI.git
cd OpenNI
git checkout Unstable-1.5.4.0
cd Platform/Linux/CreateRedist
chmod +x RedistMaker
./RedistMaker
Laden Sie jetzt die avin-KinectSensor-Bibliothek für den Kinect-Sensor von hier herunter .unzip avin2-SensorKinect-v0.93-5.1.2.1-0-g15f1975.zip
cd avin2-SensorKinect-15f1975/Bin
Wählen Sie je nach Systemtyp (32 oder 64 Bit) das entsprechende Installationsprogramm aus. Führen Sie für ein 32-Bit-System die folgenden Schritte aus:tar -xjf SensorKinect093-Bin-Linux-x86-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x86-v5.1.2.1
Für ein 64-Bit-System werden wir Folgendes tun:tar -xjf SensorKinect093-Bin-Linux-x64-v5.1.2.1.tar.bz2
cd Sensor-Bin-Linux-x64-v5.1.2.1
Schließen Sie die Installation ab:sudo ./install.sh
Installieren Sie openni_ * -Pakete
Als letztes müssen wir die Pakete openni_launch und openni_camera installieren , mit denen Sie Daten von OpenNI-kompatiblen Tiefenkameras in ROS empfangen und damit arbeiten können. Die Installation dieser Pakete ist sehr einfach:sudo apt-get install ros-indigo-openni-camera ros-indigo-openni-launch
Überprüfen der Treiberinstallation
Jetzt ist alles fertig! Überprüfen Sie den Erfolg der Installation. Laufen Sie in verschiedenen Terminals:roscore
roslaunch openni_launch openni.launch depth_registration:=true
rosrun rviz rviz
Das Setzen des Arguments depth_registration: = true gibt an, dass die OpenNI-Registrierung aktiviert und XYZRGB-Daten von der Kamera empfangen werden sollen (Tiefe und Farbe).Erweitern Sie in rviz zunächst den Abschnitt Globale Optionen in der linken Spalte Anzeigen und legen Sie den Wert / camera_link für das Feld Festrahmen wie im Bild fest:
Daher legen wir das erforderliche Koordinatensystem für die korrekte Anzeige der Daten von der Kinect-Kamera fest.In rviz erstellen wir eine neue Anzeige. Klicken Sie dazu auf die Schaltfläche Hinzufügen und wählen Sie den Anzeigetyp PointCloud2 wie im Bild aus:
Wählen Sie das Thema / camera / depth_registered / points für die neue Anzeige aus. Wählen
Sie anschließend den Wert „RGB8“ für das Feld Color Transformer.Jetzt sehen wir ein ähnliches Bild:
Mit dem Wert „RGB8“ können Sie eine farbige „Punktwolke“ anzeigen, bei der jeder Punkt X-, Y-, Z-Koordinaten und RGB-Farben aufweist.Ich möchte Ihre Aufmerksamkeit auf die Tatsache lenken, dass Microsoft Kinect Xbox 360 nur mit USB 2.0 funktioniert. Das Anschließen der Kamera über USB 3.0 kann zu einem Geräteerkennungsfehler führen, über den ich ganz am Anfang des Artikels gesprochen habe.Das offizielle ROS-Portal bietet Tutorials zum Arbeiten mit RGB-D-Kameradaten mithilfe der Point Cloud Library . Diese Tutorials enthalten alle Informationen, die Sie benötigen, um mit Punktwolken zu beginnen.Ich wünsche Ihnen viel Glück bei der Verwendung von RGBD-Kameras in ROS zur Lösung Ihrer Computer-Vision-Probleme!