Zurück zu Guides

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] (T20) einsetzen.

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] T22 verwendet.

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:

  1. Bildverarbeitung: Kamera-Fahrer veröffentlicht T7 auf ROS2-Thema bei 30-60 Hz
  2. Undistortion: Kalibrierungsparameter über T8-Knoten oder in den Fahrer anwenden
  3. Objektdetektion/Segmentierung: Ausführung von Ablösen (YOLOv8, Segment Anything oder benutzerdefiniertes Modell) auf GPU. Veröffentlichen Sie erkannte Objektposen als T9
  4. Punktwolkengenerierung: Wenn eine Tiefenkamera verwendet wird, erzeugen Sie eine Punktwolke über T10. Filtern Sie nach Arbeitsplatzgrenzbox
  5. Grasp-Planung: Feed erkannte Objekte und Punktwolke zum Grappling-Planer (GraspIt!, Contact-GraspNet oder gelernte Politik)
  6. 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] T23 bereitstellen.

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] T25 verwendet.

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:

  1. Bildverarbeitung: Kamera-Fahrer veröffentlicht T16 auf ROS2-Thema bei 30-60 Hz
  2. Undistortion: Kalibrierungsparameter über den T17-Knoten oder den Fahrer anwenden
  3. Objektdetektion/Segmentierung: Ausführung von Ableitungen (YOLOv8, Segment Anything oder benutzerdefiniertes Modell) auf GPU. Veröffentlichen Sie erkannte Objektposen als T18
  4. Punktwolkengenerierung: Wenn eine Tiefenkamera verwendet wird, erzeugen Sie eine Punktwolke über T19. Filtern Sie nach Arbeitsplatzgrenzbox
  5. Grasp-Planung: Feed erkannte Objekte und Punktwolke zum Grappling-Planer (GraspIt!, Contact-GraspNet oder gelernte Politik)
  6. 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.