第4章 3D相机选型与成像原理:深度相机的工作逻辑
做手眼标定,第一步不是调算法,而是选对相机。我见过太多项目,标定精度上不去,最后发现是相机本身就不适合这个场景。今天咱们就聊聊三种主流深度相机的原理、选型要点和数据接口。
核心观点:没有最好的相机,只有最合适的相机。选型前,先搞清楚你的机器人要抓什么、在什么光照下工作、精度要求是多少。
4.1 结构光相机:靠“投影变形”算深度
结构光的原理,说白了就是主动投射已知图案,然后看图案变形了多少。我习惯把它比作“用手电筒照一个凹凸不平的墙面”——光条纹弯了,说明那里有起伏。
工作原理
- 投影器:发射红外散斑或条纹图案到物体表面
- 红外相机:捕捉被物体表面调制后的变形图案
- 计算单元:通过三角测量原理,计算每个像素的偏移量,反推出深度
举个例子。Kinect v1 用的就是结构光。它投射的是红外散斑——密密麻麻的红外光点。物体表面凹凸不同,光点的位置就会偏移。偏移量越大,深度差越大。
我的经验:结构光在室内、弱光环境下表现很好。但一到强光(比如阳光直射),红外散斑会被淹没,深度图直接“花掉”。我曾经在工厂靠窗位置部署结构光相机,白天和晚上的精度差了一倍多。后来加了遮光帘才解决。
选型要点
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 工作距离 | 通常 0.3m ~ 5m | 抓取场景选 0.5~2m 最稳 |
| 抗环境光 | 一般 < 10k Lux | 室外场景慎用 |
| 精度 | mm 级,近距可达 0.1mm | 适合小零件、高精度抓取 |
| 帧率 | 通常 30fps | 静态或慢速场景够用 |
4.2 ToF相机:靠“光飞行时间”算深度
ToF 的原理更直接——发射光脉冲,测量光往返的时间。光速是固定的,时间差直接换算成距离。你想想看,这就像用超声波测距,只不过换成了光。
工作原理
- 发射器:通常是 VCSEL(垂直腔面发射激光器),发出调制过的红外光
- 接收器:每个像素都是一个微型计时器,记录光脉冲的相位差或飞行时间
- 计算单元:根据相位差或时间差,算出每个像素的深度值
ToF 最大的优势是速度快。我做过一个 AGV 避障项目,用的就是 ToF 相机。30fps 的深度图实时输出,障碍物检测延迟不到 50ms。结构光在这个场景下根本跑不起来——因为运动模糊太严重了。
注意:ToF 相机有个“多路径干扰”的问题。如果场景里有反光物体(比如金属、镜面),光脉冲会多次反射,导致深度值偏大。我曾经在抓取不锈钢零件时踩过这个坑,后来加了偏振片才缓解。
选型要点
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 工作距离 | 通常 0.1m ~ 10m | 中远距场景首选 |
| 抗环境光 | 可达 100k Lux | 室内外都能用 |
| 精度 | cm 级,近距可达 mm 级 | 适合大范围、快速场景 |
| 帧率 | 可达 60fps 甚至更高 | 动态抓取、避障首选 |
4.3 双目相机:靠“左右眼视差”算深度
双目相机模仿人眼——两个相机从不同角度拍同一物体,然后通过视差计算深度。它不需要主动光源,所以叫“被动式”。
工作原理
- 左/右相机:同步采集图像
- 立体匹配:在左右图像中找到对应的像素点(这叫“对应点匹配”)
- 三角测量:根据两个相机的基线长度和视差,计算深度
这里有个关键点:基线越长,深度精度越高,但相机体积也越大。我做过一个项目,需要在机械臂末端装双目相机,基线只有 5cm,结果 1 米外的物体深度误差超过 5cm。后来换了大基线的相机,精度才达标。
避坑指南:双目相机最怕“纹理缺失”。如果抓取的是纯白色、无纹理的物体(比如白色塑料件),立体匹配会失败。我曾经在抓取白色齿轮时,深度图全是黑洞。解决方案是加一个结构光投影器辅助纹理投射,或者换 ToF。
选型要点
| 参数 | 说明 | 我的建议 |
|---|---|---|
| 工作距离 | 取决于基线,通常 0.2m ~ 20m | 中远距、室外场景 |
| 抗环境光 | 强,无主动光源干扰 | 室外、强光场景首选 |
| 精度 | 与基线、分辨率相关,mm~cm 级 | 纹理丰富场景效果好 |
| 帧率 | 受限于立体匹配算法,通常 15~30fps | 静态或慢速场景 |
4.4 三种深度相机对比总结
我把三种方案的核心差异整理成了一张表,方便你快速对比。
| 维度 | 结构光 | ToF | 双目 |
|---|---|---|---|
| 原理 | 投影图案变形 | 光飞行时间 | 视差三角测量 |
| 主动光源 | 是(红外散斑/条纹) | 是(红外脉冲) | 否 |
| 精度 | 高(近距) | 中 | 中高(取决于基线) |
| 抗环境光 | 弱 | 强 | 强 |
| 帧率 | 中(30fps) | 高(60fps+) | 低中(15~30fps) |
| 典型场景 | 室内高精度抓取 | 动态避障、AGV | 室外、大范围 |
| 代表产品 | Kinect v1, Intel RealSense D435 | Kinect v2, PMD, 索尼 DepthSense | ZED, 大疆双目, 自研 |
4.5 数据接口:怎么把深度图拿回来?
相机选好了,接下来就是数据怎么传。我习惯把接口分成三类:USB、GigE、Camera Link。选哪个,取决于你的传输距离和带宽需求。
USB 接口
- 带宽:USB 3.0 可达 5Gbps,USB 3.1 可达 10Gbps
- 距离:通常 5 米以内(加延长线可能不稳定)
- 适用:桌面级、近距离部署
- 我的经验:USB 线缆质量很重要。便宜的线在传输高分辨率深度图时容易丢包,导致图像撕裂。我建议用带屏蔽的工业级 USB 线。
GigE 接口
- 带宽:1Gbps(千兆以太网)
- 距离:100 米(标准网线),加交换机可更远
- 适用:工业现场、远距离部署
- 我的建议:GigE 相机支持 PoE(Power over Ethernet),一根网线同时传数据和供电,布线非常方便。我在汽车产线部署时,全用的 GigE 相机。
Camera Link 接口
- 带宽:可达 850MB/s(Base 模式)到 6.8GB/s(Full 模式)
- 距离:通常 10 米以内
- 适用:高分辨率、高帧率场景
- 注意:需要专用的采集卡,成本较高。我一般只在实验室或高端检测项目里用。
4.6 本章知识结构图
下面这张 SVG 图,把三种深度相机的原理、选型要点和数据接口串在了一起。你可以把它当作选型时的快速参考。
4.7 选型实战建议
最后,我结合自己的项目经验,给你几条选型建议:
- 先定场景,再定相机。室内高精度抓取 → 结构光;动态避障 → ToF;室外大范围 → 双目。
- 别只看分辨率,要看深度精度。有些相机分辨率很高,但深度精度只有 cm 级,抓取小零件根本不行。
- 数据接口要提前规划。如果相机离工控机超过 5 米,别用 USB,老老实实上 GigE。
- 别忘了标定。不管选哪种相机,出厂参数只能做参考。我每次拿到新相机,第一件事就是做内参标定和畸变校正。
最后提醒:选型不是一锤子买卖。我建议你拿样机到实际场景里跑一跑,看看深度图在真实光照、真实物体上的表现。纸上谈兵容易,落地才是硬道理。