相机标定:决定数据可用性的那一步
相机标定是那个不起眼的步骤,涵盖内参、外参与畸变,它决定了采集到的机器人数据究竟能不能用。
机器人每次伸手去够杯子,都会在离目标三厘米处停下。同样的误差,每一次都一样。策略没坏,是相机从没被正确标定过:一个被固化进训练数据里的、系统性的三厘米偏差,教会了机械臂瞄偏三厘米。再多的示范也修不好,因为每一条新示范都带着同一个谎。
标定是采集管线里最少被讨论的一步,却是少数几个能悄无声息地让下游一切失效的环节之一。它并不光鲜:无非是举着一块棋盘格四处晃、盯着重投影误差的数字看。跳过它,或者草草了事,你就可能采下一千小时录制精美、几何上却毫无价值的数据。
内参、外参、畸变:三件必须做对的事
相机把三维世界变成二维的像素网格。要从这张网格里还原几何,需要三组数字,而每一组都有自己失效的方式。
内参描述相机本身:焦距、主点、传感器尺度。它把一个像素映射到一条离开镜头的射线。弄错了,每一个深度估计、每一个投影位置都会被缩放或平移。
外参描述相机相对机器人或世界所处的位置:它的平移与朝向。正是它让你能够断言某个像素对应机器人基座坐标系里的某一点。朝向上一度的误差,在一臂之远处就会变成几厘米的误差。
畸变描述镜头如何弯折光线。广角镜头边缘附近的直线会向内弯。不加校正,一只被追踪着横穿画面的夹爪,会显得沿着一条它从未走过的曲线运动。
求解这些数字,正是标定过程本身。让相机从许多角度拍下一个已知图案:一块棋盘格,或一排标记点。优化器随后找出最能解释各图案角点落在每张图像何处的内参与畸变。它留下的残差,也就是重投影误差,是模型拟合优劣的诚实度量。目标是亚像素级。差上好几个像素,就说明哪里出了问题。
一条示范的可信度,只等于把它的像素变成位置的那套几何的可信度。相机标错了,数据集里的每一个标签都会继承这个误差。
为什么标定决定了一条示范到底能不能用
想想一条操作示范究竟是什么。它是从相机所见到手所做之间的一个映射。如果连接像素与三维空间的几何是错的,那么被记录下来的“感知与动作之间的关系”也是错的。策略会尽职尽责地学到一个错误的对应。
这比随机噪声更糟。标定误差是系统性的:它把每一个样本都往同一个方向偏,所以模型不会把它平均掉,而是把它当成真理吸收进去。像 DROID 这类建立在标准化装置上的数据集,会在一致标定上下功夫,正是为了让汇集自许多工位的数据在几何上保持可比。
自我视角采集把利害讲得再清楚不过。当相机架在人的头上,它无时无刻不在运动,而它注视的那只手又很近,在近处,微小的角度误差会转化为巨大的位置误差。从一个运动着的第一人称视角把指尖位置读到一厘米以内,几乎不给标定留任何可浪费的余量。
| 参数 | 它映射什么 | 出错后的失效 |
|---|---|---|
| 内参 | 像素到相机射线 | 尺度错误,深度与触及被偏置 |
| 外参 | 相机坐标系到机器人坐标系 | 恒定偏移,机械臂瞄偏目标 |
| 镜头畸变 | 弯曲射线校正为直线 | 边缘轨迹弯曲,泛化变差 |
| 手眼(腕部相机) | 运动中的相机到夹爪 | 手腕运动时位姿跳变 |
| 时间偏移 | 相机时钟到机器人时钟 | 位姿滞后于运动,接触被模糊 |
最后两行比多数团队预想的更要紧。腕部相机与时钟偏移,都把一个静态的标定问题变成了动态的,而动态误差恰恰是人们忘了去查的那一类。
多相机与手眼一体:难度陡增之处
单台固定相机是最容易的情形,真实装置要乱得多。多视角采集,就是 Ego-Exo4D 用来同时从第一人称与第三人称角度看一个动作的那种,需要把每台相机都标定进一个共享坐标系,否则各视角就不会对“东西在哪儿”达成一致。多个视角的价值,完全取决于它们的外参彼此一致。
腕部相机更难。相机随手运动,因此它与夹爪的关系必须靠手眼标定来求解,而这个关系还得在关节角变化时始终成立。像 RH20T 这样兼有固定与运动视角的数据集,每加一台相机都要背上这份负担。而当语料被合并时,例如 Open X-Embodiment,各来源实验室之间不一致的标定约定,又成了统一策略不得不去容忍的又一件事。
标定漂移,以及复查的纪律
这里有个专门坑住细心团队的陷阱:标定不是一劳永逸的。相机在复位时被碰了一下。装置发热,支架膨胀了零点几毫米。有人重新对焦,悄悄改动了内参。这些都不会报错。数据照录不误,只是从此微微失真,而缺陷要到几周后才浮现为一个莫名其妙表现不佳的策略。
解药是流程,而非小聪明。按计划、并在任何物理扰动之后复查标定。追踪重投影误差,一旦越过阈值就把该装置标记出来,对近距离操作而言,这个阈值理想上要远低于一个像素。把标定状态与每一次录制一并存下,好让一条轨迹能追溯到它被采集时生效的确切参数。像 Stanford IRIS lab 这样的研究团队,把这种可复现性当作科学的一部分,而非事后的补充。
标定永远不会是采集作业里激动人心的部分。它拍不出好照片,示范效果更差。但它垫在数据集所有其他主张的底下,因为它决定了一个像素是对应世界中的一个位置,还是仅仅对应一个猜测。做对了,管线的其余部分才有地基;做错了,你就是在一张与疆域不符的地图上训练机器人。