跳转至

机器人视觉综述

概述

视觉是机器人感知世界最重要的方式之一。相机作为机器人的"眼睛",为导航、操作、人机交互等任务提供丰富的环境信息。本节概述机器人视觉系统的基本组成、相机类型和设计考量。

视觉在机器人中的角色

核心应用

应用领域 任务 对相机的要求
导航 SLAM、避障、路径规划 深度信息、宽FOV、高帧率
操作 目标检测、抓取位姿估计 高分辨率、深度精度
人机交互 人体检测、手势识别 RGB高清、低延迟
巡检 缺陷检测、读表 高分辨率、颜色准确
自动驾驶 车道线检测、行人检测 宽动态范围、高帧率

视觉处理流水线

graph LR
    A[光学系统<br>镜头+传感器] --> B[图像采集<br>ISP/解码]
    B --> C[预处理<br>去畸变/增强]
    C --> D[特征提取<br>传统/深度学习]
    D --> E[高层理解<br>检测/分割/估计]
    E --> F[决策/控制<br>规划/动作]

    style A fill:#fff3e0
    style B fill:#ffe0b2
    style C fill:#ffcc80
    style D fill:#ffb74d
    style E fill:#ffa726
    style F fill:#ff9800

相机类型总览

按获取信息分类

类型 输出 优势 劣势 代表产品
RGB相机 2D彩色图像 低成本、高分辨率 无深度信息 IMX219, C920
深度相机 RGB + 深度图 直接获取3D 室外受限、范围有限 RealSense D435i
双目相机 左右图像→深度 被动测距、室外可用 计算量大 ZED 2i
结构光 投射图案→深度 高精度 仅室内、范围短 Kinect Azure
ToF相机 飞行时间→深度 速度快、不受纹理影响 分辨率低 PMD Flexx2
事件相机 异步亮度变化 超高时间分辨率 生态不成熟 DAVIS346
全景相机 360°图像 全方位覆盖 畸变大 Ricoh Theta

按接口分类

接口 带宽 延迟 线缆长度 CPU占用 适用场景
CSI-2 2.5 Gbps/lane (4 lanes) 最低 <30cm 极低(ISP硬件处理) 嵌入式系统
USB 2.0 480 Mbps <5m 低分辨率相机
USB 3.0 5 Gbps <3m 主流相机
GigE Vision 1 Gbps <100m 工业相机
10GigE 10 Gbps <100m 高速工业相机

分辨率与帧率

分辨率选择

分辨率 像素数 数据量(RGB) 典型帧率 适用场景
VGA (640x480) 0.3MP 0.9MB/帧 60-120fps 实时导航、避障
720p (1280x720) 0.9MP 2.7MB/帧 30-60fps 一般视觉任务
1080p (1920x1080) 2.1MP 6.2MB/帧 30fps 目标检测、识别
4K (3840x2160) 8.3MP 24.9MB/帧 15-30fps 高精度检测

帧率需求

\[ \text{最低帧率} = \frac{v_{\text{max}}}{d_{\text{min}}} \times \frac{1}{\text{FOV}_{\text{pixel}}} \]

其中:

  • \(v_{\text{max}}\):机器人最大速度
  • \(d_{\text{min}}\):最小需要检测的物体距离
  • \(\text{FOV}_{\text{pixel}}\):单像素对应的视场角

帧率计算示例

移动机器人速度1m/s,需要在2m外检测障碍物,水平FOV 60°,分辨率640px:

\[\text{单像素FOV} = \frac{60°}{640} \approx 0.094°\]
\[\text{最低帧率} = \frac{1}{2} \times \frac{1}{0.094° \times \pi/180°} \approx 305 \text{ fps}\]

实际中由于检测算法容忍数个像素的运动模糊,30fps通常足够。

带宽计算

\[ \text{带宽} = \text{宽} \times \text{高} \times \text{通道数} \times \text{位深} \times \text{帧率} \]
配置 原始带宽 压缩后(MJPEG)
640x480 RGB @30fps 27.6 MB/s ~5 MB/s
1080p RGB @30fps 186 MB/s ~30 MB/s
1080p RGB @60fps 373 MB/s ~60 MB/s
4K RGB @30fps 746 MB/s ~100 MB/s

关键光学参数

焦距与视场角

焦距 \(f\) 和传感器尺寸决定视场角(FOV):

\[ \text{FOV} = 2 \arctan\left(\frac{d}{2f}\right) \]

其中 \(d\) 是传感器在该方向的尺寸。

焦距 FOV (1/2.3"传感器) 特点 应用
2.1mm ~120° 超广角 全景、避障
3.6mm ~80° 广角 导航、SLAM
6mm ~50° 标准 目标检测
12mm ~25° 窄角 远距离识别
25mm ~12° 长焦 巡检、读表

光圈与景深

光圈(F值)影响进光量和景深:

\[ \text{景深} \propto \frac{F \times d^2}{f^2} \]

其中 \(F\) 是光圈F值,\(d\) 是对焦距离,\(f\) 是焦距。

  • 小F值(大光圈):进光多,景深浅 → 适合暗环境
  • 大F值(小光圈):进光少,景深深 → 适合需要全焦的场景

快门类型

类型 原理 优点 缺点 适用
滚动快门 逐行曝光 成本低、高分辨率 运动畸变(果冻效应) 静态/慢速场景
全局快门 全像素同时曝光 无运动畸变 成本高、噪声稍高 高速运动、VIO

滚动快门对SLAM的影响

视觉SLAM中,滚动快门会导致特征点位置偏移,影响位姿估计精度。高速移动的机器人应优先选择全局快门相机。

视觉处理流水线详解

硬件流水线

graph TB
    subgraph 传感器端
        A[CMOS传感器] --> B[模拟信号]
        B --> C[ADC]
        C --> D[原始数据<br>RAW Bayer]
    end

    subgraph ISP处理
        D --> E[黑电平校正]
        E --> F[坏点校正]
        F --> G[去马赛克<br>Demosaic]
        G --> H[白平衡]
        H --> I[降噪<br>Denoise]
        I --> J[色彩校正<br>CCM]
        J --> K[Gamma校正]
        K --> L[锐化]
    end

    subgraph 输出
        L --> M[RGB/YUV]
        M --> N[编码<br>MJPEG/H.264]
        N --> O[传输<br>CSI/USB]
    end

软件处理流水线

import cv2
import numpy as np

class VisionPipeline:
    def __init__(self, camera_matrix, dist_coeffs):
        self.K = camera_matrix
        self.D = dist_coeffs
        # 预计算去畸变映射表
        self.map1, self.map2 = cv2.initUndistortRectifyMap(
            self.K, self.D, None, self.K, (640, 480), cv2.CV_16SC2
        )

    def process(self, frame):
        # 1. 去畸变
        undistorted = cv2.remap(frame, self.map1, self.map2, 
                                cv2.INTER_LINEAR)
        # 2. 色彩空间转换
        gray = cv2.cvtColor(undistorted, cv2.COLOR_BGR2GRAY)
        # 3. 直方图均衡(应对光照变化)
        enhanced = cv2.equalizeHist(gray)
        # 4. 特征提取或送入神经网络
        return enhanced

室内 vs 室外环境

挑战 室内 室外
光照 相对稳定 变化极大(阴影、直射光)
动态范围 ~60dB够用 需要>100dB(HDR)
距离 1-10m 1m-100m+
天气 不受影响 雨、雾、灰尘
深度相机 红外投射可用 红外被太阳光干扰
推荐传感器 RGB-D(RealSense) 双目/LiDAR

典型机器人视觉系统配置

室内移动机器人

组件 型号 用途
前方深度相机 RealSense D435i 避障+SLAM
机械臂手眼相机 RealSense D405 抓取定位
后方鱼眼相机 OV9281 后方感知
计算平台 Jetson Orin Nano 推理+ROS2

自动驾驶小车

组件 型号 用途
前方双目相机 ZED 2i 深度+视觉SLAM
环视鱼眼相机 x4 IMX219(广角) 360°感知
LiDAR Livox Mid-360 3D建图
计算平台 Jetson Orin NX 多模型推理

选型决策流程

graph TD
    A[视觉任务需求] --> B{需要深度信息?}
    B -->|否| C{分辨率要求?}
    B -->|是| D{使用环境?}

    C -->|>4K| E[工业相机<br>GigE Vision]
    C -->|1080p| F[USB相机<br>IMX477/C920]
    C -->|720p以下| G[CSI相机<br>IMX219]

    D -->|室内| H{深度范围?}
    D -->|室外| I[双目相机<br>ZED 2i]

    H -->|<1m| J[结构光<br>D405]
    H -->|1-10m| K[主动双目<br>D435i/D455]
    H -->|>10m| L[LiDAR+RGB]

小结

  1. 相机是机器人最重要的传感器之一,选型需匹配具体任务
  2. CSI接口延迟最低适合嵌入式,USB方便灵活,GigE适合长距离
  3. 分辨率和帧率需要在带宽约束下权衡
  4. 全局快门对高速运动和VIO至关重要
  5. 室内用RGB-D室外用双目或LiDAR辅助
  6. 视觉流水线涉及从光学到软件的完整链路

参考资料


评论 #