卡口就是一份协议:模块化影像设备的机械、供电、数据与标定

一、卡口不是“插得上”就算合格
据公开报道,有厂商发布了一款采用专用卡口设计的模块化相机,公开材料里同时提到集成多种传感器。这类产品的卖点写在接口上:换模块、换视角、换感知方式,一具机身承担多种用途。模块化真正的工程量不在把设备切成几块,而在每一对相邻模块之间那几条必须同时成立的约定。
我们习惯把一个可反复装拆的接口拆成四条协议来看:机械定位、供电、数据、标定。四条协议的特点是木桶效应,最弱的那一条决定售后成本。机械做不好,画面边缘发暗、中心发虚;供电做不好,高负载模块一工作就掉线;数据做不好,参数传不全、帧序错乱;标定做不好,前三条全对,输出还是错的,而且错得看不出问题在哪里。第四条最容易被当成“出厂时一次性解决的事”,恰恰是量产之后开销最大的一项。
二、机械协议:精度、重复性与拆装之后的漂移
定位靠基准面,不靠手感。要点有几处:基准面的选择要唯一,同轴度与面法向的公差要按整条光路去分配,而不是按单个零件的机械加工能力分配;多个零件串联时公差是累积的,堆到末端往往超出直觉;锁紧机构的重复定位精度比首次精度更重要,首次装配表现漂亮的方案,拆装若干轮之后可能整体偏走;材料蠕变与温升下的形变要一起考虑,手动拧紧与工具拧紧的力矩差异也不能忽略。
判据要写成可复测的条目,而不是“手感扎实”这一类描述。同一副接口重复取下再装回若干轮之后的基准位置偏差、锁紧力矩的衰减、面间隙的变化,都要有测量方法、测量环境和记录格式。这些数值属于我们自己测出来的东西,来源里没有给出,不能替任何厂商填一个进去。
三、供电协议:档位协商、上电时序与瞬态跌落
不同模块的功耗差别很大,同一副触点要承担的电流也不同,所以功率必须协商而不能默认给。协商机制要回答三件事:模块接入后如何声明自己的功率需求;主机在什么条件下允许、限制或拒绝;拒绝时用户看到什么提示。第三件事最常被省掉,结果是用户以为设备坏了。
上电时序比稳态电压更容易出事。允许热插拔的接口要求触点接触顺序可控:先建立参考电平与通信通道,再供功率,避免模块在电平未稳时把错误状态写进主机。瞬态负载要看电压跌落幅度与恢复时间。模块启动电流与自动曝光、对焦驱动、图像处理同时拉载时,跌落会叠加,外在表现是复位、图像条带或传感器输出异常,而记录里往往只剩一条通信超时。
落地做法:每个模块的功率需求写进能力声明文件,主机按声明做预算分配并留余量;触点与走线按最坏工况而不是典型工况校核;把“电压跌落导致的功能异常”设成一条独立的、可判定的故障码,不要让所有问题都以通信错误的形态出现,否则排查方向从一开始就是错的。
四、数据协议:链路、能力协商与时间戳
链路类型与带宽预算要按最坏情况列。写规格时把每种模块的原生数据率、需要主机处理的量、以及允许的降级模式全部列全,只写“支持高速传输”等于没写。
版本握手与能力协商决定兼容矩阵能不能兑现。规则要定死:协商失败时的行为是什么,老主机遇到新模块是拒绝、降级运行还是按默认参数工作。三种选择的售后后果完全不同,含糊不得。降级运行还要明确降到哪一档、界面上是否告知用户,否则用户以为自己拿到的是完整能力。
错误重传要区分可恢复与不可恢复。可以丢一帧的图像数据和一帧都不容错的运动控制指令,处理方式不同;把它们混在同一条链路里,就必须有优先级和独立的错误通道。
时间戳同步是多传感器协同的前提。各模块的时间基准由谁提供、精度要求多少、漂移如何修正,必须写在协议里而不是留给实现。“每一帧都带主机给出的时间戳”是最省事的做法,因为它把模块之间对时的问题直接消掉了,代价是主机侧要承担缓冲与排序。
五、标定协议:数据归属、重标定触发与磨损漂移
四条协议里,标定是唯一一条会随使用而变化的,也是模块化设备最容易失控的一条。核心问题是数据放在哪里。
| 归属方案 | 含义 | 风险 |
|---|---|---|
| 系数存在模块内 | 换主机也能带着走,出厂一次写定 | 主机侧的个体差异与磨损覆盖不到 |
| 系数存在主机内 | 主机统一管理,换模块时改写 | 模块装到另一具主机上等于失去身份 |
| 两侧各存一份并做合成 | 兼顾模块与主机个体差异 | 版本一旦错配,输出偏移难以归因 |
选哪种不是偏好问题,它决定售后能不能判责。无论选哪种,标定系数都要有版本号、写入权限和写入记录,禁止固件升级时顺手覆盖。
重标定的触发条件要写成显式清单,而不是等用户来投诉:模块更换或跨机使用;累计拆装次数达到阈值;维修中接触过基准面或光学件;跌落与冲击事件;固件变更影响到成像管线或融合算法;工作环境超出当初标定时的温湿范围。每一条触发之后是补标还是全量重标、耗时多久、由谁执行,也一并写进清单。
磨损漂移要靠可观测的探针去发现。设备按周期用内建参考做一次自校验,结果作为时间序列保存,用趋势而不是单次判限来发现问题。趋势越线时先提示用户送检,而不是继续静默出图,把不可信的数据留在用户的成果里。
六、把“模块化”写成可验证的承诺
承诺要落成三样东西。兼容矩阵:哪一代主机配哪一代模块、支持到哪个功能层级、哪些组合明确不支持,都要写出来,不写就等于承诺全部兼容。最小回归项:每个组合在每个固件版本变更后重跑上电时序、握手、图像一致性、标定有效性与温漂下的重复拆装,回归集按组合而不是按模块数量来算,别只测旗舰。能力声明文件:每块模块声明自己的功耗、数据率、传感器种类与标定要求,主机按声明处理,新增模块不必改主机代码。
判责要有依据链。售后收到一台“换了模块之后画面偏”的设备,需要能查到该模块的标定版本、写入时刻、上一次自校验的趋势、主机固件版本与期间发生过的重标定事件。查不到就只剩猜,猜错的代价是无理由退换加一次声誉损耗。
跨团队协作是最后一道坎。模块厂商与主机厂商的固件责任边界要写在纸面上:谁负责协议兼容性,谁负责标定参数格式变更时的向下支持,变更提前多久通知,联检窗口怎么排。洹拓参与过几次接口规范评审,共同的教训是文档里只写“应当兼容”没有用,必须写清不兼容时的具体表现,让两边团队在测试阶段就能把不兼容当成一条可判定的结果来处理。卡口是一份协议,协议的价值在于违约时说得清楚。