Hallo allerseits!
Ich möchte meine Erfahrungen mit der Intel RealSense-Kamera, Modell d435 , teilen . Wie Sie wissen, erfordern viele Bildverarbeitungsalgorithmen eine vorläufige Kalibrierung der Kamera . Es ist einfach so passiert, dass wir in unserem Projekt ROS verwenden, um einzelne Komponenten eines automatisierten intelligenten Systems zu erstellen. Nachdem ich das russischsprachige Internet studiert hatte, fand ich keine sinnvollen Tutorials zu diesem Thema. Diese Veröffentlichung soll diese Lücke schließen.
Softwarevoraussetzung
Da ROS auf Unix-Systemen funktioniert, gehe ich davon aus, dass wir das Ubuntu 16.04-System zur Verfügung haben. Ich werde die detaillierten Installationsdetails nicht beschreiben, sondern nur Links zu den entsprechenden Tutorials geben.
sudo apt-get install python-opencv
RealSense-Treiber installieren
- Zunächst müssen Sie Treiber für die Kamera installieren.
- Das ROS-Paket für die Kamera ist hier . Zum Zeitpunkt der Veröffentlichung war die neueste Version 2.0.3. Um das Paket zu installieren, müssen Sie den Quellcode herunterladen und im ROS-Ausgangsverzeichnis entpacken. Als nächstes müssen wir es installieren:
catkin_make clean catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release catkin_make install echo "source path_to_workspace/devel/setup.bash" >> ~/.bashrc source ~/.bashrc
Kamera testen
Nachdem wir die Kamera installiert haben, müssen wir sicherstellen, dass die Treiber ordnungsgemäß funktionieren. Dazu schließen wir die Kamera über USB an und führen die Demo aus:
roslaunch realsense2_camera demo_pointcloud.launch
Dieser Befehl öffnet die ROS-Visualisierung, auf der Sie die Punktwolke sehen können, die im Thema /camera/depth/color/points
registriert ist:

Kamerakalibrierung
Unten finden Sie eine angepasste Version des Tutorials von OpenCV .
import numpy as np import cv2 import glob
Damit dieses Skript funktioniert, benötigen wir mindestens 10 Schachbrettbilder, die von unserer Kamera empfangen wurden. Hierfür können wir beispielsweise das ROS-Paket image_view oder ein anderes Programm verwenden, das Screenshots von einer USB-Kamera aufnehmen kann. Die aufgenommenen Bilder sollten in einem beliebigen Ordner abgelegt werden. Bildbeispiel:

Nachdem wir das Skript ausgeführt haben, werden die Kalibrierungsergebnisse in einer Datei gespeichert
calibration.npy
. Diese Daten können dann mit dem folgenden Skript verwendet werden:
calibration_data = np.load('path_to_images/calibration.npy') mtx = calibration_data[0] dist = calibration_data[1] rvecs = calibration_data[2] tvecs = calibration_data[3]
Fazit
Wir konnten die RealSense d435-Kamera mit OpenCV2 und ROS erfolgreich kalibrieren. Kalibrierungsergebnisse können in Anwendungen wie der Verfolgung von Objekten, Aruco-Markern, Augmented-Reality-Algorithmen und vielen anderen verwendet werden. Im nächsten Artikel möchte ich näher auf die Verfolgung von Aruco-Markern eingehen.