image_pipeline
Der Standard-Kamera-Stack von ROS: Kalibrierung, Rektifizierung, Stereo und Tiefe
Lizenz
BSD-3-Clause
Überblick
image_pipeline ist der kanonische Kameraverarbeitungs-Stack von ROS, gepflegt von ros-perception. Seine Pakete führen die Kameras eines Roboters vom rohen Treiber-Output zu kalibrierten, rektifizierten Bildern und 3D-Daten: camera_calibration (interaktive Schachbrett-Kalibrierung), image_proc (Debayering und Rektifizierung), stereo_image_proc (Disparität und Punktwolken), depth_image_proc (Tiefe-zu-Punktwolke-Konvertierung und Registrierung) und image_view. Praktisch jeder ROS-Roboter mit Kamera nutzt irgendeinen Teil dieser Pipeline.
Der Stack ist als komponierbare ROS-2-Nodes organisiert, verbunden über image_transport-Topics und camera_info-Kalibrierungsnachrichten. camera_calibration bietet die klassische interaktive GUI, die monokulare oder Stereo-Intrinsics aus Schachbrettansichten berechnet und in den Kameratreiber schreibt. image_proc konsumiert Rohbilder plus camera_info und liefert Mono-/Farbvarianten sowie rektifizierte Varianten, inklusive Bayer-Demosaicing und Verzeichnungskorrektur; Crop-/Resize-/Decimate-Nodes formen Streams kostengünstig um. stereo_image_proc berechnet Block-Matching-Disparität zwischen rektifizierten Paaren und erzeugt Stereo-Punktwolken, während depth_image_proc Tiefenbilder von RGB-D-Sensoren in Punktwolken konvertiert, Tiefe auf Farb-Frames registriert und metrische/quantisierte Kodierungen umwandelt. Alles unterstützt Laufzeit-Komposition für Zero-Copy-Intra-Prozess-Pipelines auf ROS 2, und die etablierten Konventionen — camera_info-Semantik, die Topic-Benennung image_raw/image_rect — sind der De-facto-Vertrag zwischen Kameratreibern und Perception-Code im gesamten ROS-Ökosystem.
Warum es wichtig ist
image_pipeline definiert, wie Kameras in ROS funktionieren: Seine Kalibrierungs-GUI ist der Ort, an dem die meisten Robotiker ihre erste Kamera kalibriert haben, und seine Topic- und camera_info-Konventionen sind der Vertrag, der jeden ROS-Kameratreiber mit jedem ROS-Perception-Stack sprechen lässt.
Welches Problem es löst
Roher Kamera-Output ist unkalibriert, verzeichnet, Bayer-gemustert und zweidimensional. image_pipeline macht daraus kalibrierte, rektifizierte Bilder, Disparitätskarten und Punktwolken mit standardisierten, komponierbaren Nodes — sodass Perception-Code die Kamera-Basisarbeit nie neu implementieren muss.
Wichtigste Punkte
- Interaktive Schachbrett-Kalibrierungs-GUI für monokulare und Stereo-Kameras
- image_proc: Debayering, Verzeichnungskorrektur und Rektifizierung, gesteuert über camera_info
- stereo_image_proc: Block-Matching-Disparität und Stereo-Punktwolken
- depth_image_proc: Tiefe-zu-Punktwolke-Konvertierung und Tiefe-zu-Farbe-Registrierung
- Komponierbare ROS-2-Nodes mit Unterstützung für Zero-Copy-Intra-Prozess-Pipelines
Für wen
- ROS-Entwickler, die Kameras integrieren
- Perception-Ingenieure, die Stereo-/RGB-D-Pipelines bauen
- Robotikstudierende, die ihre erste Kamera kalibrieren
- Autoren von Kameratreibern, die ROS-Konventionen folgen
Einschränkungen
- Klassisches Block-Matching-Stereo ist veraltet gegenüber gelernten oder SGM-basierten Matchern
- Der Kalibrierungs-GUI-Workflow ist manuell — keine automatisierte targetfreie Kalibrierung
- Performance-Tuning (QoS, Komposition) bleibt dem Integrator überlassen