同一台深度相机,在展台上能跑出漂亮的点云,进了车间却可能一天就出问题。很多团队第一反应是"算法不够强",但如果把故障日志摊开看,问题往往出在硬件与系统层:外参漂了、视野被挡了、参数丢了、现场修不了。
本文不讨论具体精度数字,只从工程角度拆解三件事:长时间稳定性、遮挡与动态适应、可维护性。这三件事决定了深度相机是"演示件"还是"作业件"。
一、问题定位:演示指标与作业指标不是一回事
演示场景有几个隐含前提:运行时间短、视野干净、光照可布置、失败了可以重来。作业场景把这四条全部推翻。
因此两者的评价指标不同。演示看单点指标,比如某一帧的深度是否准确、某一次抓取是否成功;作业看概率与成本,比如一整天里可靠运行的时间占比、单次故障的平均修复时间。
用单点指标去验收作业系统,会得到一个危险的结论:样机很准,所以系统可用。实际上,精度只是可用性的一个必要条件,不是充分条件。
二、长时间稳定性之一:温漂从哪里来
深度相机的基线由结构件保证。结构件不是单一材料:镜头座、基板、支架、外壳可能分别是铝合金、不锈钢、工程塑料。它们的线膨胀系数不同,温度变化时涨缩量不同步,两个光轴之间的相对位置就会改变。
对于双目或主动双目系统,基线长度和两光轴夹角直接进入外参。外参一变,视差到深度的换算就偏,点云拼接出现错缝。单张图上看不出来,多视角一对就露馅。
温漂的特点是"慢"和"可累积"。实验室跑几分钟,温度还没稳,变化被时间掩盖;连续跑几个小时,机身内部达到热平衡,外参的偏移才稳定下来。如果标定是在冷机状态做的,热平衡后的参数就是另一套。
工程上的应对不是"选一个不漂的相机",而是承认会漂,然后建立机制:
- 结构设计阶段控制关键件的热匹配,减少不同材料之间的相对变形;
- 标定不只做常温一个点,按实际工作温度区间做温度点标定;
- 系统具备温漂补偿能力,或者明确重标触发条件;
- 把温度传感器数据和标定版本一起记录下来,便于事后追溯。
三、长时间稳定性之二:结构蠕变、振动与碰撞
除了温度,结构本身也会变。
支架长期受力会蠕变,紧固件在振动下会缓慢松动,光轴随之改变。振动源可能来自机器人本体、传送带、AGV 行走、甚至旁边的冲压设备。短期看只是图像轻微抖动,长期看是标定参数一点点失效。
碰撞是更剧烈的版本。清场时的磕碰、换料时的挤压、维护时的误触,都可能让相机位置变化。可怕的是这种变化往往没有报警:系统仍然出图,只是图错了。
所以"装得紧"不等于"长期稳"。工程上要看的是:
- 支架刚度是否足够,固有频率是否避开了主要振动源;
- 紧固件是否有防松设计,关键位置是否有定位销;
- 线缆是否有应力释放,避免振动顺着线缆传进相机;
- 系统是否能检测到外参异常,而不是等到抓取失败才发现。
四、遮挡:丢失的是信息,不是噪声
演示时视野是设计过的,作业时视野是抢来的。
人流、货物、其他设备都会动态遮挡。遮挡在深度图里表现为一块区域的缺失或错误,它和随机噪声有本质区别:噪声可以滤波,缺失补不回来。算法无法从"没有看到"中恢复"看到了什么"。
因此"遮挡靠算法补"是一个需要谨慎对待的说法。更现实的策略是把遮挡当成常态:
- 多视角冗余:关键区域至少两个视角可见,单视角被挡时仍有解;
- 安装位置规划:把相机放在不容易被挡的高度和角度,而不是哪里方便装哪里;
- 失效检测:系统能判断某块深度不可信,并主动降级或请求人工,而不是继续输出错误结果;
- 视野评估:把"典型工况下的可见率"作为验收项,而不是只测空场。
五、光照跨度与多机主动光互扰
展台可以打光,车间和户外不行。光照跨度大,自动曝光策略要能扛住明暗剧烈切换。曝光调节如果过于激进,会出现"呼吸":画面一会儿过曝、一会儿欠曝,深度图跟着一阵一阵地抖。曝光策略的稳定性,本身也是作业能力的一部分。
另一个常被忽略的问题是多机共存。现场往往不止一台深度相机,还可能有主动光投影、扫码器、红外光源。多台设备的主动光互相进入对方视野,深度图上会出现条纹、空洞或系统性偏移。这不是某一台设备坏了,而是它们在工作时序和光波段上没有协调。
应对方式包括:分时曝光、调制方式区分、光波段隔离、以及安装时的视场错开。这些都需要在系统设计阶段考虑,事后很难补。
六、可维护性:重标、更换与追溯
前两件事决定"能不能用",可维护性决定"用得起用不起"。
现场出问题,第一反应不应该是拆机返厂。要能回答三个问题:现场能不能重标?坏了能不能换?这一批次的参数能不能追溯?
重标要有流程:用什么标定件、在什么温度条件下、标完如何验证、结果写到哪里。备件更换同样要有流程:新相机的参数如何恢复、序列号如何绑定、更换后由谁确认。
追溯则决定数据可信度。作业场景要求每一天的数据都能对齐,那么时间戳、坐标系、标定版本就必须能对应到具体设备和具体日期。如果参数只留在工控机上,换主机、重装系统、返修之后,前面的数据就成了孤岛。
七、参数落盘:可追溯的标定记录长什么样
标定结果不能只存在于某台工控机的某个目录里。推荐的做法是把它做成结构化记录,随设备走、可读回、可校验。字段至少覆盖设备身份、标定版本、环境条件、标定物、执行人与复检人。
device_sn:<设备序列号>calib_version:<日期.序号>calib_time:<ISO 时间>temperature_c:<标定环境温度>calib_target:<标定板/靶标编号>baseline_mm:<标定结果>extrinsics_sha256:<外参文件哈希>operator:<执行人工号>verified_by:<复检人工号>这段记录的价值在出事的时候体现:现场说"最近不准了",可以立刻查到上一次标定是什么时候、在什么温度下、用的哪块标定板、谁复检的。没有这些字段,只能靠回忆。
参数写入设备后还要能读回校验。写入成功不等于写入正确,读回比对哈希是最低成本的保险。换主机、返修、重装系统之后,参数应当能从设备侧恢复,而不是重新标一遍。
八、可用性怎么算:一个概率视角
如果把深度相机当成作业系统的一个部件,它的可用性可以用一个朴素的关系来描述:可用性取决于平均无故障时间与平均修复时间的比值。无故障时间越长、修复时间越短,可用性越高。
这个视角的解释力在于,它把"精度"从一个绝对指标变成了一个随时间变化的量。出厂精度再高,如果每周都要重标、每次重标要停线半天,可用性依然很低。反过来,精度中规中矩但长期稳定、现场能快速恢复的系统,反而更容易通过产线验收。
所以选型时除了问"精度多少",还要问"多久需要维护一次"“一次维护要停多久”“备件到货要多久”。这三个问题的答案,往往比参数表更能预测上线后的实际表现。
九、一张表:演示件与作业件的差别
| 维度 | 演示场景 | 作业场景 |
|---|---|---|
| 目标 | 精度好看 | 长期可用 |
| 运行时长 | 分钟级 | 整天、数月 |
| 视野 | 干净可控 | 遮挡与动态 |
| 光照 | 可布置 | 不可控 |
| 多机环境 | 通常单机 | 多机与多光源 |
| 故障处理 | 重来一次 | 现场可修 |
| 评价方式 | 单点指标 | 概率与成本 |
这张表可以直接拿去做选型讨论的提纲。凡是只在左列成立的方案,都还没有准备好进右列。
十、验收清单与三问自检
把上面的内容压缩成可执行的验收清单:
- 连续运行测试:按实际工况时长连续跑,记录精度随时间的保持情况;
- 温度循环测试:覆盖工作温度区间,观察外参变化与恢复情况;
- 遮挡测试:在典型工位人为遮挡,验证系统能否检测并降级;
- 光照测试:模拟现场光照跨度,观察曝光与深度稳定性;
- 多机测试:多台设备同时工作,检查主动光互扰;
- 重标演练:让现场人员按流程独立完成一次重标;
- 追溯检查:随机抽取历史数据,能否还原当时的标定版本与设备信息。
最后是三问自检:连续跑一周,精度还在吗?被挡住一半视野,还能用吗?出了问题,现场怎么修?
三问都答得清楚,再谈精度和算法。