返回Guides

机器人视觉系统:摄像头,深度传感器和处理

机器人视觉指南:RGB摄像头,深度传感器 (RealSense,ZED),处理管道和与操纵系统的集成.

概述

视觉是机器人操纵的最丰富信息的感觉通道.一个正确配置的视觉系统提供了政策需要抓住,放置,倒和组装物体的几何和语义理解.但选择错误的摄像头,安装位置或处理管道可能会使一个其他能力的系统形.

本指南涵盖了机器人视觉堆的每一个层次:传感器选择,机器人技术的光学考虑,校准程序,安装策略,加工管道和ROS2集成.我们的建议基于RCSV在操纵研究,远程操作和生产检查应用中部署的数十个视觉系统.

传感器类型的比较

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

机器人技术的光学考虑

全球遮蔽器与滚动遮蔽器

这是一个机器人技术中最重要的相机规格.一个滚式离子将图像排列排列 (典型读数:10-30 ms从上到下).当相机或场景在曝光过程中移动时,图像会出现偏,摇摆或部分框架扭曲. 机器人臂以200毫米/秒的速度移动, 10 ms的读取时间, 框架的顶部和底部可以被抵消2毫米,

全球快门**同时暴露所有像素.工业机器视觉摄像头 (Basler ace2,FLIR Blackfly S) 使用全球快门传感器 (Sony Pregius / Pregius S家族).这些对于手腕安装的摄像头,高速操纵以及图像捕获过程中手臂移动的任何设置都是必不可少的.

建议: 对于手腕安装位置,总是使用全球幕摄像头.对于拍摄缓慢任务 (<50mm/s) 的固定空头摄像头,如果预算有限,则可使用滚动幕.

延迟预算

对于远程操作,视觉管道的总延迟 (捕捉+传输+处理+显示) 应该在稳定的运行中低于 100 ms,对于响应感觉则低于 50 ms.对于闭环视觉服务,目标 <16 ms (一个图片以60 fps).主要延迟因素是:

  • 传感器曝光时间: 1-33 ms (取决于照明和速)
  • 转移: <1 ms (GigE 配备硬件触发器) 到 50 ms (USB配备缓冲器)
  • 处理 (检测/细分):5-50 ms (取决于GPU)
  • 网络 (如果流向远程运营商): 5-200 ms (取决于基础设施)

电脑驱动器

任何你考虑的相机都应该有一个维护的ROS2驱动器.

  • T2 - - 官方的英特尔驱动程序D400和L500系列. 发布深度,IR,RGB,IMU主题.
  • T3 - 刻板镜头ZED摄像头.包括空间映射和物体检测节点.
  • T4 - 通过Pylon SDK进行Basler摄像头. 支持硬件触发.
  • T5 - 飞线/点灰色摄像头,硬件触发器和GPIO支持.
  • T6 - - 对于USB摄像头的通用V4L2驱动程序. 没有硬件触发器支持.

通过OpenCV进行摄像头校准

没有校准的摄像头引入了辐射扭曲,这降低了3D重建和政策通用化.以下是使用OpenCV的标准程序:

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)

最佳实践: 用棋盘收集30-50张图像,以不同角度 (倾斜至45度),距离 (填满20%至80%的框架),以及整个图像的位置.对于研究级工作,反射错误应低于0.5像素. 镜头变化,焦点调整或物理冲击后重新校准.

腕部安装相机与外部相机的交易

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
标定 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建议:**使用两者. 一个固定的上层部+一个固定的侧部摄像头用于工作场合环境,加上一个手腕摄像头用于近距离抓住精度.这是我们为 [数据收集服务]T20部署的标准3摄像头设置.查看我们的 [摄像头设置用于远程操作]T21) 指南,了解完整的配置.

特定产品推

预算研究设置 (共400至800美元)

对于上层和侧面视图,可使用2x Logitech BRIO 4K ($200个) 及1x Intel RealSense D435i ($200个) 进行额外深度.限制:BRIO上滚动离子,USB延迟.适合缓慢操作任务 (<50mm/s) 和初始原型制作.

标准研究设置 (共1500至3000美元)

果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版: 果版:

产品视觉系统 (5,000至20,000美元)

照片3D扫描仪 (价值8000至15000美元)用于分毫米深度精度的垃圾桶选.或Ensenso N系列 (价值5000至8000美元)用于结构光3D扫描.这些通常与工业级2D摄像头 (Basler ace2或FLIR Blackfly S) 配合用于彩色覆盖.

用于手腕摄像机

智能智能实力Sense D405 (200美元,设计为短距离的紧形状因素),或Basler Dart与USB3 (300至500美元,全球快门,非常紧).D405具有最低深度距离1.5厘米,使其非常适合近距离的抓住观测.

视觉处理管道

操作任务的典型机器人视觉管道:

  1. 图像采集: 摄像头驱动器在30-60Hz上发布ROS2主题T7
  2. **不扭曲:**通过T8节点或驱动器应用校准参数
  3. 对象检测/分类: 在 GPU 上运行推理 (YOLOv8, Segment Anything,或自定义模型). 发布检测对象的姿势为T9
  4. 点云生成: 如果使用深度摄像头,通过T10生成点云.
  5. Grasp规划: 提供检测物体的数据和指向云的规划器 (GraspIt!,联系-GraspNet或学习政策)
  6. **录制:**记录同步的图像,姿势和行动到 HDF5用于训练数据

对于GPU推断,NVIDIA RTX 3060 (12GB VRAM) 在 1280x960 图像上处理YOLOv8-Medium 30+ fps.

概述

视觉是机器人操纵的最丰富信息的感觉通道.一个正确配置的视觉系统提供了政策需要抓住,放置,倒和组装物体的几何和语义理解.但选择错误的摄像头,安装位置或处理管道可能会使一个其他能力的系统形.

本指南涵盖了机器人视觉堆的每一个层次:传感器选择,机器人技术的光学考虑,校准程序,安装策略,加工管道和ROS2集成.我们的建议基于RCSV在操纵研究,远程操作和生产检查应用中部署的数十个视觉系统.

传感器类型的比较

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

机器人技术的光学考虑

全球遮蔽器与滚动遮蔽器

这是一个机器人技术中最重要的相机规格.一个滚式离子将图像排列排列 (典型读数:10-30 ms从上到下).当相机或场景在曝光过程中移动时,图像会出现偏,摇摆或部分框架扭曲. 机器人臂以200毫米/秒的速度移动, 10 ms的读取时间, 框架的顶部和底部可以被抵消2毫米,

全球快门**同时暴露所有像素.工业机器视觉摄像头 (Basler ace2,FLIR Blackfly S) 使用全球快门传感器 (Sony Pregius / Pregius S家族).这些对于手腕安装的摄像头,高速操纵以及图像捕获过程中手臂移动的任何设置都是必不可少的.

建议: 对于手腕安装位置,总是使用全球幕摄像头.对于拍摄缓慢任务 (<50mm/s) 的固定空头摄像头,如果预算有限,则可使用滚动幕.

延迟预算

对于远程操作,视觉管道的总延迟 (捕捉+传输+处理+显示) 应该在稳定的运行中低于 100 ms,对于响应感觉则低于 50 ms.对于闭环视觉服务,目标 <16 ms (一个图片以60 fps).主要延迟因素是:

  • 传感器曝光时间: 1-33 ms (取决于照明和速)
  • 转移: <1 ms (GigE 配备硬件触发器) 到 50 ms (USB配备缓冲器)
  • 处理 (检测/细分):5-50 ms (取决于GPU)
  • 网络 (如果流向远程运营商): 5-200 ms (取决于基础设施)

电脑驱动器

任何你考虑的相机都应该有一个维护的ROS2驱动器.

  • T11 - - 官方的英特尔驱动器D400和L500系列. 发布深度,IR,RGB,IMU主题.
  • T12 -- 刻板镜头ZED摄像头. 包括空间映射和物体检测节点.
  • T13 Basler 摄像头通过Pylon SDK. 支持硬件触发.
  • T14 - 飞线/点灰色摄像头,硬件触发器和GPIO支持.
  • T15 - - 对于USB摄像头的通用V4L2驱动程序. 没有硬件触发器支持.

通过OpenCV进行摄像头校准

没有校准的摄像头引入了辐射扭曲,这降低了3D重建和政策通用化.以下是使用OpenCV的标准程序:

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)

最佳实践: 用棋盘收集30-50张图像,以不同角度 (倾斜至45度),距离 (填满20%至80%的框架),以及整个图像的位置.对于研究级工作,反射错误应低于0.5像素. 镜头变化,焦点调整或物理冲击后重新校准.

腕部安装相机与外部相机的交易

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
标定 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建议:**使用两者.一个固定的上层部+一个固定的侧部摄像头用于工作场合环境,加上一个手腕摄像头用于近距离抓住精度.这是我们为 [数据收集服务]T23部署的标准3摄像头设置.查看我们的 [电话操作摄像头设置]T24) 指南,了解完整的配置.

特定产品推

预算研究设置 (共400至800美元)

对于上层和侧面视图,可使用2x Logitech BRIO 4K ($200个) 及1x Intel RealSense D435i ($200个) 进行额外深度.限制:BRIO上滚动离子,USB延迟.适合缓慢操作任务 (<50mm/s) 和初始原型制作.

标准研究设置 (共1500至3000美元)

对于高端和侧面视图,有全球遮蔽器,深度为1x RealSense D435i ($200).为硬件触发添加一个GigE开关 (PoE ($100) 和一个Arduino Uno ($25).这是RCSV大多数[数据收集任务]的设置.

产品视觉系统 (5,000至20,000美元)

照片3D扫描仪 (价值8000至15000美元)用于分毫米深度精度的垃圾桶选.或Ensenso N系列 (价值5000至8000美元)用于结构光3D扫描.这些通常与工业级2D摄像头 (Basler ace2或FLIR Blackfly S) 配合用于彩色覆盖.

用于手腕摄像机

智能智能实力Sense D405 (200美元,设计为短距离的紧形状因素),或Basler Dart与USB3 (300至500美元,全球快门,非常紧).D405具有最低深度距离1.5厘米,使其非常适合近距离的抓住观测.

视觉处理管道

操作任务的典型机器人视觉管道:

  1. 图像采集: 摄像头驱动器在30-60Hz上发布ROS2主题T16
  2. **不扭曲:**通过T17节点或驱动器应用校准参数
  3. 对象检测/分类: 在 GPU 上运行推理 (YOLOv8, Segment Anything,或自定义模型). 发布检测对象的姿态为T18
  4. 点云生成: 如果使用深度摄像头,通过T19生成点云.
  5. Grasp规划: 提供检测物体的数据和指向云的规划器 (GraspIt!,联系-GraspNet或学习政策)
  6. **录制:**记录同步的图像,姿势和行动到 HDF5用于训练数据

对于GPU推断,NVIDIA RTX 3060 (12GB VRAM) 在 1280x960 图像上处理YOLOv8-Medium 30+ fps.