Table of Contents
Motivation
Microsoft Kinect v1 — damals für die Xbox 360 erschienen — ist eine sehr beliebte Kamera mit einem zusätzlichen Infrarot-Tiefensensor.
Sie ist in Robotikkreisen sehr beliebt, weil sich durch die Tiefeninformation und die dadurch möglichen Umrechnungen in eine Point Cloud, Greifbewegungen von Roboterarmen automatisieren lassen.
Funktionsweise
- Der IR-Projektor wirft ein bekanntes Punktmuster
- Das Muster wird auf Objekten verzerrt
- Die IR-Kamera sieht diese Verzerrung
- Aus der Abweichung vom Referenzmuster wird die Tiefe berechnet
Disclaimer
Die Kinect benötigt eine externe Stromversorgung und funktioniert nicht ausschließlich über USB.
Ich hatte mit der Verbindung zu einer Ubuntu VM mit UMT und macos kein Glück. Hier kam es permanent zu frame drops. Deswegen bezieht sich dieses Tutorial auf die Einrichtung auf einem Raspberry Pi 4 mit ROS 2 Humble.
Anschluss am Raspberry
Ihr solltet die blauen USB 3.0 Ports verwenden.
Software
In diesem Tutorial werden wir
- libfreenect
- image_pipeline
- kinect_ros2
installieren
libfreenect
libfreenect ist ein Open Source Treiber für die Kinect, der auf macOS, Windows und Linux läuft.
Bauen und installieren
cd ~
git clone https://github.com/OpenKinect/libfreenect.git
cd libfreenect
mkdir build & cd build
cmake .. -DBUILD_EXAMPLES=ON
make
sudo make install
sudo ldconfig
Jetzt könnt ihr mit
freenect-camtest
ausprobieren, ob die Kinect bereits funktioniert. Es sollte „Received video frame“ als Ausgabe kommen.
freenect-glview
freenect-glview ist ein weiteres Tool, um die Kinect zu testen, ihr könnt es mit:
freenect-glview
starten
Wenn der Befehl nicht gefunden wurde, müsst ihr noch die fehlende Abhängigkeit freeglut3-dev (Free OpenGL Utility Toolkit) installieren
sudo apt install freeglut3-dev
und die build-Schritte von oben wiederholen
ROS2-Anbindung
Voraussetzung ist ein funktionierender ROS-2-Workspace (~/ros2_ws) mit gesourcter Umgebung. Falls ihr das noch nicht gemacht habt, könnten euch diese Artikel helfen:
https://creatronix.de/so-installierst-du-ros-2-auf-dem-raspberry-pi-ball-chaser-mit-ros2/
https://creatronix.de/so-schreibst-du-pakete-und-nodes-in-ros/
Image Pipeline installieren
cd ~/ros2_ws git clone https://github.com/ros-perception/image_pipeline
cd image_pipeline
git checkout humble
cd ~/ros2_ws
colcon build
source install/setup.bash
Um zu schauen, ob alles korrekt funktioniert, können wir nun in einem Terminal
ros2 run image_proc image_proc
und in einem zweiten Terminal:
ros2 run rqt_image_view rqt_image_view
ausprobieren.
Wenn ein Live-Bild in rqt_image_view erscheint, funktioniert die Image Pipeline korrekt.
rosdep initialisieren
Falls ihr bisher kein rosdep verwendet habt, müsst ihr das einmalig machen:
cd ~/ros2_ws
sudo rosdep init
rosdep update
kinect_ros2 installieren
Obwohl das Paket offiziell nur bis Galactic gepflegt ist, lässt es sich unter Humble aktuell problemlos aus dem Source bauen.
cd ~/ros2_ws/
src git clone https://github.com/fadlio/kinect_ros2/tree/galactic
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build
source install/setup.bash
Jetzt können die launch files gestartet werden
ros2 launch kinect_ros2 pointcloud.launch.py






