Roboter-Visionssysteme: Kameras, Tiefensensoren und Verarbeitung
Führung zur Robotersicht: RGB-Kameras, Tiefsensoren (RealSense, ZED), Pipelines und Integration mit Manipulationssystemen.
Überblick
Vision ist der informativ reichste sensorische Kanal für die Manipulation von Robotern. Ein richtig konfiguriertes Vision-System bietet das geometrische und semantische Verständnis, dass Politiken Objekte greifen, platzieren, gießen und montieren müssen. Aber die falsche Kamera, Montageposition oder Verarbeitung Pipeline kann ein ansonsten fähiges System verkrüppeln.
Dieser Leitfaden umfasst jede Schicht des Roboter-Vision-Stacks: Sensorselektion, optische Überlegungen für Robotik, Kalibrierungsprozesse, Montagestrategien, Verarbeitungspipelines und ROS2-Integration. Unsere Empfehlungen basieren auf Dutzenden von Vision-System-Implementierungen bei RCSV in Manipulationenforschung, Teleoperation und Produktionsinspektion.
Sensor-Typvergleich
| Sensor Type | Example Products | Resolution | Price | Best For |
|---|---|---|---|---|
| 2D RGB (global shutter) | Basler ace2, FLIR Blackfly S, Allied Vision Alvium | Up to 5472x3648 | $400-$2,000 | High-quality data collection, policy training, inspection |
| 2D RGB (rolling shutter / USB) | Logitech BRIO, ELP USB cameras, Arducam | Up to 4K | $30-$200 | Budget prototyping, slow-motion tasks |
| Stereo Depth (active IR) | Intel RealSense D435i, D455 | 1280x720 depth, 1920x1080 RGB | $200-$350 | Supplemental depth, point cloud generation |
| Stereo Depth (neural) | Stereolabs ZED 2i, ZED Mini | 2208x1242 (2K), depth to 20m | $450-$550 | Mobile robots, outdoor depth, spatial mapping |
| Structured Light | Photoneo PhoXi, Ensenso N-series | 2064x1544 (3.2 MP depth) | $5,000-$15,000 | Bin picking, high-precision 3D scanning |
| Time-of-Flight (ToF) | Azure Kinect DK, Lucid Helios2 | 1024x1024 (Kinect), 640x480 | $400-$3,000 | Body tracking, scene understanding |
| Event Camera | Prophesee EVK4, iniVation DVXplorer | 1280x720 (event stream) | $3,000-$8,000 | High-speed tracking, dynamic scenes, low latency |
| Thermal (LWIR) | FLIR Lepton 3.5, Seek Thermal | 160x120 to 640x512 | $200-$5,000 | Thermal inspection, human detection, food handling |
Optische Überlegungen für Robotik
Global Shutter vs. Rolling Shutter
Dies ist die wichtigste Kamera-Spezifikation für Robotik. Ein ** rollender Verschluss** zeigt die Bildreihe regelmäßig (typische Lesung: 10-30 ms von oben nach unten). Wenn sich die Kamera oder die Szene während der Exposition bewegt, zeigt das Bild eine Verzerrung, Schwankungen oder teilweise Rahmenverzerrung. Für einen Roboterarm, der sich mit 200 mm/s mit einer Leszeit von 10 ms bewegt, können die Ober- und Unterseite des Rahmens um 2 mm ausgeglichen werden - genug, um Greiffehler zu verursachen.
Eine global shutter zeigt alle Pixel gleichzeitig. Industrie-Maschinensichtkameras (Basler ace2, FLIR Blackfly S) verwenden globale Schaltsensoren (Sony Pregius / Pregius S Familie). Diese sind für Handgelenkkameras, Hochgeschwindigkeitsmanipulation und jede Einstellung, in der sich der Arm während der Bildfassung bewegt, unerlässlich.
** Empfehlung:** Verwenden Sie immer globale Verschlusskameras für Handgelenk-Montagepositionen. Für feste Oberkopfkameras, die langsame Aufgaben (< 50 mm/s) erfassen, ist ein Rollverschluss akzeptabel, wenn Ihr Budget begrenzt ist.
Verzögerungsbudget
Für die Teleoperation sollte die Gesamtverzögerung der Sichtleitung (Fang + Transfer + Verarbeitung + Anzeige) für einen stabilen Betrieb unter 100 ms und für das reaktionsfähige Gefühl unter 50 ms liegen. Für die visuelle Servoing im Schließschluss sollte das Ziel <16 ms (ein Bild mit 60 fps) sein.
- Sensorbelastung: 1-33 ms (abhängig von Licht und Bildfrequenz)
- Übertragung: < 1 ms (GigE mit Hardware-Trigger) auf 50 ms (USB mit Puffer)
- Verarbeitung (Findung/Segmentierung): 5-50 ms (GPU abhängig)
- Netzwerk (wenn Streaming an den Fernbetreiber): 5-200 ms (abhängig von der Infrastruktur)
ROS2-Kamera-Treiber
Jede Kamera sollte einen ROS2-Treiber haben.
T2 -- Offizieller Intel-Treiber für die D400- und L500-Serie. Veröffentlicht Tiefe, IR, RGB, IMU-Themen. T3 -- Stereolabs ZED-Kameras. beinhaltet Raumkarten und Objektdetektionsknoten. T4 -- Basler-Kameras über Pylon SDK. Unterstützt Hardware-Anstieg. T5 -- FLIR/Point Grey-Kameras, Hardware-Auslöser und GPIO-Unterstützung. T6 -- Generischer V4L2-Treiber für USB-Kameras. Keine Unterstützung für Hardware-Auslöser.
Kamera Kalibrierung mit OpenCV
Eine richtige Kalibrierung ist nicht verhandelbar. Nichtkalibrierte Kameras führen eine radielle Verzerrung ein, die die 3D-Rekonstruktion und die Politikverallgemeinerung schädigt.
import cv2
import numpy as np
import glob
# Checkerboard dimensions (inner corners)
BOARD_SIZE = (9, 6)
SQUARE_SIZE = 25.0 # mm
# Prepare 3D object points
objp = np.zeros((BOARD_SIZE[0] * BOARD_SIZE[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:BOARD_SIZE[0], 0:BOARD_SIZE[1]].T.reshape(-1, 2) * SQUARE_SIZE
obj_points, img_points = [], []
for fname in sorted(glob.glob("calib_images/*.png")):
img = cv2.imread(fname)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, BOARD_SIZE, None)
if ret:
corners = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1),
(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001))
obj_points.append(objp)
img_points.append(corners)
ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(
obj_points, img_points, gray.shape[::-1], None, None)
print(f"Reprojection error: {ret:.4f} px") # Target: < 0.5 px
print(f"Camera matrix K:\n{K}")
print(f"Distortion coeffs: {dist}")
# Save for ROS2 camera_info
np.savez("calibration.npz", K=K, dist=dist, rvecs=rvecs, tvecs=tvecs)
Beste Praktiken: Sammeln Sie 30-50 Bilder mit dem Schachbrett in unterschiedlichen Winkeln (gehegt bis zu 45 Grad), Entfernungen (füllt 20-80% des Rahmens) und Positionen über das gesamte Bild. Der Reprojektionsfehler sollte für Forschungsarbeiten unter 0,5 Pixel liegen. Nach jeder Objektivänderung, Fokus-Anpassung oder physischer Auswirkung neu kalibrieren.
Handgelenk- und Außenkamera-Vertriebswerte
| Factor | Wrist-Mounted | External (Fixed) |
|---|---|---|
| Field of View | Narrow, focused on grasp point | Wide, full workspace coverage |
| Occlusion | Minimal -- always sees what end-effector sees | Arm and gripper can occlude objects |
| Motion blur | High -- requires global shutter + short exposure | Low -- camera is stationary |
| Kalibrierung | Eye-in-hand calibration required | Eye-to-hand calibration (simpler) |
| Cable management | Challenging -- cable must route along arm | Simple -- fixed cable run |
| Weight at end-effector | Adds 50-300g (reduces payload budget) | Zero impact on payload |
| Policy training impact | Strong signal for fine manipulation | Good for spatial reasoning and navigation |
RCSV-Empfehlung: Beide verwenden. Eine feste Oberkopfkamera + eine feste Seitenkamera für den Arbeitsplatzkontext, plus eine Handgelenkkamera für die Nähergehaltpräzision. Dies ist die Standard-Settung mit 3 Kameras, die wir für [Daten-Sammlungsdienste] (
Spezifische Produktempfehlungen
Budgetforschung (Gesamtbetrag von 400 bis 800 USD)
2x Logitech BRIO 4K ($ 200 pro Stück) für Ober- und Seitenaufnahmen, 1x Intel RealSense D435i ($ 200) für zusätzliche Tiefe. Einschränkungen: Rollschalter auf BRIO, USB-Latenz-Jitter. Geeignet für langsame Manipulationsaufgaben (<50 mm/s) und erste Prototypen.
Standardforschung (Gesamtwert von 1.500 bis 3.000 USD)
2x Basler ace2 a2A1920-160ucBAS (je 650 USD) mit globaler Verschluss für Ober- und Seitenansichten, 1x RealSense D435i (je 200 USD) für Tiefe. Fügen Sie einen GigE-Schalter mit PoE (100 USD) und einen Arduino Uno (25 USD) für Hardware-Auslöser hinzu. Dies ist die Einstellung, die RCSV für die meisten [Daten-Sammel-Verpflichtungen]
Produktions-Vision-System (5.000 bis 20.000 USD)
Photoneo PhoXi 3D Scanner ($8.000-$15.000) für die Trinkholzoption mit einer Tiefenpräzision von sub-Millimeter. oder Ensenso N-Serie ($5.000-$8.000) für die strukturelle Licht-3D-Scaning. Diese werden in der Regel mit 2D-Kameras (Basler ace2 oder FLIR Blackfly S) für Farbüberlagerung gekoppelt.
Für Handgelenkkameras
Intel RealSense D405 (200 USD, kompakter Formfaktor für Kurzstrecken) oder ein Basler-Dart mit USB3 (300 - 500 USD, globaler Verschluss, sehr kompakt). Der D405 hat eine Mindesttieftentfernung von 1,5 cm, was ihn ideal für die Nahen Aufnahmebeobachtung macht.
Die Vision-Pipeline
Eine typische Roboter-Vision-Pipeline für Manipulationsarbeiten:
- Bildverarbeitung: Kamera-Fahrer veröffentlicht
T7 auf ROS2-Thema bei 30-60 Hz - Undistortion: Kalibrierungsparameter über
T8 -Knoten oder in den Fahrer anwenden - Objektdetektion/Segmentierung: Ausführung von Ablösen (YOLOv8, Segment Anything oder benutzerdefiniertes Modell) auf GPU. Veröffentlichen Sie erkannte Objektposen als
T9 - Punktwolkengenerierung: Wenn eine Tiefenkamera verwendet wird, erzeugen Sie eine Punktwolke über
T10 . Filtern Sie nach Arbeitsplatzgrenzbox - Grasp-Planung: Feed erkannte Objekte und Punktwolke zum Grappling-Planer (GraspIt!, Contact-GraspNet oder gelernte Politik)
- Aufzeichnung: Log synchronisierte Bilder, Posen und Aktionen in HDF5 für Schulungsdaten
Für GPU-Entscheidung wird ein NVIDIA RTX 3060 (12GB VRAM) mit YOLOv8-Medium bei 30+ fps auf 1280x960 Bildern behandelt.
Überblick
Vision ist der informativ reichste sensorische Kanal für die Manipulation von Robotern. Ein richtig konfiguriertes Vision-System bietet das geometrische und semantische Verständnis, dass Politiken Objekte greifen, platzieren, gießen und montieren müssen. Aber die falsche Kamera, Montageposition oder Verarbeitung Pipeline kann ein ansonsten fähiges System verkrüppeln.
Dieser Leitfaden umfasst jede Schicht des Roboter-Vision-Stacks: Sensorselektion, optische Überlegungen für Robotik, Kalibrierungsprozesse, Montagestrategien, Verarbeitungspipelines und ROS2-Integration. Unsere Empfehlungen basieren auf Dutzenden von Vision-System-Implementierungen bei RCSV in Manipulationenforschung, Teleoperation und Produktionsinspektion.
Sensor-Typvergleich
| Sensor Type | Example Products | Resolution | Price | Best For |
|---|---|---|---|---|
| 2D RGB (global shutter) | Basler ace2, FLIR Blackfly S, Allied Vision Alvium | Up to 5472x3648 | $400-$2,000 | High-quality data collection, policy training, inspection |
| 2D RGB (rolling shutter / USB) | Logitech BRIO, ELP USB cameras, Arducam | Up to 4K | $30-$200 | Budget prototyping, slow-motion tasks |
| Stereo Depth (active IR) | Intel RealSense D435i, D455 | 1280x720 depth, 1920x1080 RGB | $200-$350 | Supplemental depth, point cloud generation |
| Stereo Depth (neural) | Stereolabs ZED 2i, ZED Mini | 2208x1242 (2K), depth to 20m | $450-$550 | Mobile robots, outdoor depth, spatial mapping |
| Structured Light | Photoneo PhoXi, Ensenso N-series | 2064x1544 (3.2 MP depth) | $5,000-$15,000 | Bin picking, high-precision 3D scanning |
| Time-of-Flight (ToF) | Azure Kinect DK, Lucid Helios2 | 1024x1024 (Kinect), 640x480 | $400-$3,000 | Body tracking, scene understanding |
| Event Camera | Prophesee EVK4, iniVation DVXplorer | 1280x720 (event stream) | $3,000-$8,000 | High-speed tracking, dynamic scenes, low latency |
| Thermal (LWIR) | FLIR Lepton 3.5, Seek Thermal | 160x120 to 640x512 | $200-$5,000 | Thermal inspection, human detection, food handling |
Optische Überlegungen für Robotik
Global Shutter vs. Rolling Shutter
Dies ist die wichtigste Kamera-Spezifikation für Robotik. Ein ** rollender Verschluss** zeigt die Bildreihe regelmäßig (typische Lesung: 10-30 ms von oben nach unten). Wenn sich die Kamera oder die Szene während der Exposition bewegt, zeigt das Bild eine Verzerrung, Schwankungen oder teilweise Rahmenverzerrung. Für einen Roboterarm, der sich mit 200 mm/s mit einer Leszeit von 10 ms bewegt, können die Ober- und Unterseite des Rahmens um 2 mm ausgeglichen werden - genug, um Greiffehler zu verursachen.
Eine global shutter zeigt alle Pixel gleichzeitig. Industrie-Maschinensichtkameras (Basler ace2, FLIR Blackfly S) verwenden globale Schaltsensoren (Sony Pregius / Pregius S Familie). Diese sind für Handgelenkkameras, Hochgeschwindigkeitsmanipulation und jede Einstellung, in der sich der Arm während der Bildfassung bewegt, unerlässlich.
** Empfehlung:** Verwenden Sie immer globale Verschlusskameras für Handgelenk-Montagepositionen. Für feste Oberkopfkameras, die langsame Aufgaben (< 50 mm/s) erfassen, ist ein Rollverschluss akzeptabel, wenn Ihr Budget begrenzt ist.
Verzögerungsbudget
Für die Teleoperation sollte die Gesamtverzögerung der Sichtleitung (Fang + Transfer + Verarbeitung + Anzeige) für einen stabilen Betrieb unter 100 ms und für das reaktionsfähige Gefühl unter 50 ms liegen. Für die visuelle Servoing im Schließschluss sollte das Ziel <16 ms (ein Bild mit 60 fps) sein.
- Sensorbelastung: 1-33 ms (abhängig von Licht und Bildfrequenz)
- Übertragung: < 1 ms (GigE mit Hardware-Trigger) auf 50 ms (USB mit Puffer)
- Verarbeitung (Findung/Segmentierung): 5-50 ms (GPU abhängig)
- Netzwerk (wenn Streaming an den Fernbetreiber): 5-200 ms (abhängig von der Infrastruktur)
ROS2-Kamera-Treiber
Jede Kamera sollte einen ROS2-Treiber haben.
T11 -- Offizieller Intel-Treiber für die D400- und L500-Serie. Veröffentlicht Tiefe, IR, RGB, IMU-Themen. T12 -- Stereolabs ZED-Kameras. beinhaltet Raumkarten und Objektdetektionsknoten. T13 -- Basler-Kameras über Pylon SDK. Unterstützt Hardware-Anstieg. T14 -- FLIR/Point Grey Kameras, Hardware-Trigger und GPIO-Unterstützung. T15 -- Generischer V4L2-Treiber für USB-Kameras. Keine Hardware-Auslöserunterstützung.
Kamera Kalibrierung mit OpenCV
Eine richtige Kalibrierung ist nicht verhandelbar. Nichtkalibrierte Kameras führen eine radielle Verzerrung ein, die die 3D-Rekonstruktion und die Politikverallgemeinerung schädigt.
import cv2
import numpy as np
import glob
# Checkerboard dimensions (inner corners)
BOARD_SIZE = (9, 6)
SQUARE_SIZE = 25.0 # mm
# Prepare 3D object points
objp = np.zeros((BOARD_SIZE[0] * BOARD_SIZE[1], 3), np.float32)
objp[:, :2] = np.mgrid[0:BOARD_SIZE[0], 0:BOARD_SIZE[1]].T.reshape(-1, 2) * SQUARE_SIZE
obj_points, img_points = [], []
for fname in sorted(glob.glob("calib_images/*.png")):
img = cv2.imread(fname)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, BOARD_SIZE, None)
if ret:
corners = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1),
(cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001))
obj_points.append(objp)
img_points.append(corners)
ret, K, dist, rvecs, tvecs = cv2.calibrateCamera(
obj_points, img_points, gray.shape[::-1], None, None)
print(f"Reprojection error: {ret:.4f} px") # Target: < 0.5 px
print(f"Camera matrix K:\n{K}")
print(f"Distortion coeffs: {dist}")
# Save for ROS2 camera_info
np.savez("calibration.npz", K=K, dist=dist, rvecs=rvecs, tvecs=tvecs)
Beste Praktiken: Sammeln Sie 30-50 Bilder mit dem Schachbrett in unterschiedlichen Winkeln (gehegt bis zu 45 Grad), Entfernungen (füllt 20-80% des Rahmens) und Positionen über das gesamte Bild. Der Reprojektionsfehler sollte für Forschungsarbeiten unter 0,5 Pixel liegen. Nach jeder Objektivänderung, Fokus-Anpassung oder physischer Auswirkung neu kalibrieren.
Handgelenk- und Außenkamera-Vertriebswerte
| Factor | Wrist-Mounted | External (Fixed) |
|---|---|---|
| Field of View | Narrow, focused on grasp point | Wide, full workspace coverage |
| Occlusion | Minimal -- always sees what end-effector sees | Arm and gripper can occlude objects |
| Motion blur | High -- requires global shutter + short exposure | Low -- camera is stationary |
| Kalibrierung | Eye-in-hand calibration required | Eye-to-hand calibration (simpler) |
| Cable management | Challenging -- cable must route along arm | Simple -- fixed cable run |
| Weight at end-effector | Adds 50-300g (reduces payload budget) | Zero impact on payload |
| Policy training impact | Strong signal for fine manipulation | Good for spatial reasoning and navigation |
RCSV-Empfehlung: Beide verwenden. Eine feste Oberkopfkamera + eine feste Seitenkamera für den Arbeitsplatzkontext, plus eine Handgelenkkamera für die Nähergehaltpräzision. Dies ist die Standard-Settung mit 3 Kameras, die wir für [Daten-Sammlungsdienste]
Spezifische Produktempfehlungen
Budgetforschung (Gesamtbetrag von 400 bis 800 USD)
2x Logitech BRIO 4K ($ 200 pro Stück) für Ober- und Seitenaufnahmen, 1x Intel RealSense D435i ($ 200) für zusätzliche Tiefe. Einschränkungen: Rollschalter auf BRIO, USB-Latenz-Jitter. Geeignet für langsame Manipulationsaufgaben (<50 mm/s) und erste Prototypen.
Standardforschung (Gesamtwert von 1.500 bis 3.000 USD)
2x Basler ace2 a2A1920-160ucBAS ($ 650 jeweils) mit globaler Verschluss für Ober- und Seitenansichten, 1x RealSense D435i ($ 200) für Tiefe. Fügen Sie einen GigE-Schalter mit PoE ($ 100) und einen Arduino Uno ($ 25) für Hardware-Auslösung hinzu. Dies ist die Einrichtung, die RCSV für die meisten [Daten-Sammel-Verpflichtungen]
Produktions-Vision-System (5.000 bis 20.000 USD)
Photoneo PhoXi 3D Scanner ($8.000-$15.000) für die Trinkholzoption mit einer Tiefenpräzision von sub-Millimeter. oder Ensenso N-Serie ($5.000-$8.000) für die strukturelle Licht-3D-Scaning. Diese werden in der Regel mit 2D-Kameras (Basler ace2 oder FLIR Blackfly S) für Farbüberlagerung gekoppelt.
Für Handgelenkkameras
Intel RealSense D405 (200 USD, kompakter Formfaktor für Kurzstrecken) oder ein Basler-Dart mit USB3 (300 - 500 USD, globaler Verschluss, sehr kompakt). Der D405 hat eine Mindesttieftentfernung von 1,5 cm, was ihn ideal für die Nahen Aufnahmebeobachtung macht.
Die Vision-Pipeline
Eine typische Roboter-Vision-Pipeline für Manipulationsarbeiten:
- Bildverarbeitung: Kamera-Fahrer veröffentlicht
T16 auf ROS2-Thema bei 30-60 Hz - Undistortion: Kalibrierungsparameter über den
T17 -Knoten oder den Fahrer anwenden - Objektdetektion/Segmentierung: Ausführung von Ableitungen (YOLOv8, Segment Anything oder benutzerdefiniertes Modell) auf GPU. Veröffentlichen Sie erkannte Objektposen als
T18 - Punktwolkengenerierung: Wenn eine Tiefenkamera verwendet wird, erzeugen Sie eine Punktwolke über
T19 . Filtern Sie nach Arbeitsplatzgrenzbox - Grasp-Planung: Feed erkannte Objekte und Punktwolke zum Grappling-Planer (GraspIt!, Contact-GraspNet oder gelernte Politik)
- Aufzeichnung: Log synchronisierte Bilder, Posen und Aktionen in HDF5 für Schulungsdaten
Für GPU-Entscheidung wird ein NVIDIA RTX 3060 (12GB VRAM) mit YOLOv8-Medium bei 30+ fps auf 1280x960 Bildern behandelt.







