第一章 深度相机选型与硬件平台评估

做嵌入式深度相机部署,第一步不是写代码,而是选硬件。这个道理我吃了不少亏才明白。几年前有个项目,算法在PC上跑得飞起,结果移植到嵌入式平台直接卡成PPT——后来一查,是相机接口带宽把CPU吃死了。所以这一章,咱们先把底层的技术选型和平台评估聊透。

1.1 主流深度相机技术对比

目前市面上主流的深度相机,说白了就三种:ToF、结构光、双目。它们各有各的脾气,选错了后面全是坑。

1.1.1 ToF(飞行时间法)

ToF的原理很简单:发射光脉冲,测量反射回来的时间差。我习惯叫它「激光测距的升级版」。它的优点是速度快,能到30fps甚至更高,而且对光照不敏感——晚上也能用。

但有个问题:分辨率普遍不高。目前消费级的ToF传感器,比如英飞凌的IRS系列,分辨率也就QVGA级别。我在项目中遇到过用ToF做手势识别,手指稍微靠近一点,深度图就糊成一团。

核心参数:

  • 工作距离:0.3m - 5m(典型)
  • 分辨率:QVGA(320x240)为主
  • 帧率:30fps - 60fps
  • 精度:±1cm @ 1m

1.1.2 结构光

结构光技术,大家最熟悉的应该是Kinect v1。它投射已知的散斑图案,通过图案变形来反推深度。优点是近距离精度极高,能达到亚毫米级。我做过一个3D人脸识别项目,用的就是结构光——因为ToF在近距离的精度根本不够看。

但缺点也很明显:室外基本不能用。太阳光里的红外成分会直接把散斑淹没掉。另外,结构光对反光物体也不太友好,比如黑色塑料或者镜面。

我的经验:如果你做的是室内、近距离(<1m)的应用,结构光是最优解。但千万别想着拿到室外用,我曾经试过在下午三点阳光下测结构光,深度图直接全黑。

1.1.3 双目立体视觉

双目相机模拟人眼,通过两个摄像头视差来计算深度。它的好处是硬件成本低,两个普通摄像头就能搞定。而且室外也能用,不受主动光干扰。

但计算量很大——你需要做立体匹配,这玩意儿在嵌入式平台上跑起来挺吃力的。另外,它对纹理很敏感,纯白墙面或者光滑地面,双目基本就废了。

避坑指南:我曾经在RK3588上跑双目深度估计,用的SGBM算法,640x480分辨率下只能跑到8fps。后来换了轻量级神经网络才勉强到15fps。所以选双目之前,先算清楚你的算力够不够。

1.2 三种技术对比表

维度 ToF 结构光 双目
工作距离 0.3m - 5m 0.1m - 1.5m 0.5m - 10m+
精度 中等(±1cm) 高(±0.1mm) 低(随距离下降)
帧率 高(30-60fps) 中(15-30fps) 中(取决于算法)
室外可用性 一般
计算开销
典型代表 Kinect v2, iPhone X Kinect v1, Intel RealSense ZED, 大疆双目

1.3 嵌入式平台性能评估

选好了相机,接下来就是平台。目前嵌入式深度相机部署的主流平台有三个:Jetson系列、RK3588、树莓派。我一个个说。

1.3.1 NVIDIA Jetson系列

Jetson是英伟达的嵌入式AI平台,从Jetson Nano到AGX Orin,跨度很大。我个人最常用的是Jetson Orin NX,16GB版本,跑深度神经网络非常舒服。它自带Tensor Cores,做卷积加速效果很明显。

但功耗是个问题。Orin NX满载能到25W,如果你做电池供电的产品,得掂量掂量。我有个项目用Jetson Nano做扫地机器人,7.5W的功耗已经让电池续航很紧张了。

Jetson系列选型建议:

  • Jetson Nano:适合原型验证,功耗低(5-10W)
  • Jetson Orin NX:适合量产,算力强(40 TOPS)
  • Jetson AGX Orin:适合高负载,但功耗高(15-60W)

1.3.2 Rockchip RK3588

RK3588是瑞芯微的旗舰芯片,8核CPU + Mali G610 GPU + 6 TOPS NPU。说实话,它的NPU算力不如Jetson,但胜在性价比高。一块RK3588开发板才几百块,Jetson Orin NX要两千多。

我做过一个对比测试:同样跑MobileNetV3-SSD,RK3588的NPU能到30fps,Jetson Orin NX的GPU能到45fps。但RK3588的功耗只有8W左右,Jetson Orin NX要15W。所以如果你对功耗敏感,RK3588是个好选择。

小技巧:RK3588的NPU对INT8量化支持很好。我习惯先用PyTorch训练模型,然后转成RKNN格式。注意,有些算子NPU不支持,比如Group Norm,得手动替换成Layer Norm。

1.3.3 树莓派

树莓派4B,BCM2711芯片,1.5GHz四核A72,算力大概0.5 TOPS。说实话,跑深度相机有点吃力。我试过在树莓派上跑双目深度估计,320x240分辨率,OpenCV的BM算法,勉强到10fps。

但树莓派有个好处:生态好。各种传感器驱动、开源库一应俱全。如果你做原型验证或者教学演示,树莓派很合适。量产的话,我建议还是上RK3588或者Jetson。

避坑指南:树莓派的USB带宽有限。我曾经同时接一个深度相机和一个IMU,结果USB总线被占满,深度图丢帧严重。后来换了USB 3.0的树莓派5才解决。

1.4 接口与功耗分析

接口和功耗,这两个东西在选型时容易被忽略,但实际部署时全是坑。

1.4.1 接口类型

深度相机常见的接口有USB 3.0、MIPI CSI、GMSL。USB 3.0最通用,但延迟高,带宽有限(5Gbps)。MIPI CSI延迟低,但线缆短,一般不超过30cm。GMSL适合远距离传输,能到15米,但需要专用芯片。

我个人的习惯是:室内固定场景用USB 3.0,移动机器人用MIPI CSI,车载或者工业场景用GMSL。举个例子,我做过一个AGV小车项目,相机装在车头,主控在车尾,距离1.5米,USB线太长信号衰减,最后换了GMSL才稳定。

1.4.2 功耗预算

功耗这东西,你得算总账。相机本身功耗、平台功耗、散热功耗,加起来才是真实功耗。我列个典型数据:

组件 典型功耗 备注
ToF相机(如VL53L5) 0.5W 低功耗,适合电池设备
结构光相机(如RealSense D435) 2.5W 含红外投射器
双目相机(如ZED 2) 1.5W 无主动光源
Jetson Orin NX 15-25W 满载时接近25W
RK3588 6-10W NPU满载约8W
树莓派4B 3-7W USB外设会增加

嗯,这里要注意:功耗不是简单的加法。比如Jetson Orin NX + RealSense D435,理论上是25W + 2.5W = 27.5W,但实际因为电源转换效率,可能要30W以上。我建议留20%的余量。

1.5 知识体系结构图

下面这张图,我把本章的核心逻辑画出来了。你一看就明白:选型不是孤立的事,相机、平台、接口、功耗,四者互相制约。

深度相机部署选型决策树 深度相机技术 ToF / 结构光 / 双目 嵌入式平台 Jetson / RK3588 / 树莓派 接口与功耗 USB / MIPI / GMSL 最终选型:性能 + 功耗 + 成本 + 接口匹配 三者互相制约,没有完美方案,只有最适合的方案 图1:深度相机部署选型决策树 从相机技术 → 平台 → 接口功耗,逐层递进

1.6 本章小结

这一章我们聊了三种深度相机技术的特点,三个嵌入式平台的性能差异,以及接口和功耗的注意事项。说白了,选型没有银弹——你要根据应用场景、预算、功耗要求来权衡。

我个人建议:如果你是做室内近距离应用,结构光 + RK3588 性价比最高;如果是室外移动机器人,双目 + Jetson Orin NX 更靠谱;如果只是原型验证,树莓派 + 任何USB相机都行,但别指望量产。

下一章,我们会深入讲深度相机的驱动移植和图像采集优化。嗯,到时候我会分享一些驱动调试的实战经验,包括怎么解决USB带宽瓶颈和MIPI信号干扰问题。


公众号:蓝海资料掘金营,微信deep3321