当前位置:首页 > 中国芯 > 具身智能
[导读]导读:深度相机的标定能把系统误差压到零点几个像素,可随机误差一点不动。飞行时间的相位噪声换算成距离要乘一个系数,而这个系数是固定的;噪声本身却随回波信噪比恶化。两件事相乘,误差就长成了距离的平方。

深度相机的标定能把系统误差压到零点几个像素,可随机误差一点不动。飞行时间的相位噪声换算成距离要乘一个系数,而这个系数是固定的;噪声本身却随回波信噪比恶化。两件事相乘,误差就长成了距离的平方。

机器人抓东西之前得先知道东西在哪。这句话说起来简单,落到硬件上就是一颗深度相机加一套标定流程。标定做得好不好,工程上习惯用重投影误差衡量,做到 0.1 像素已经算漂亮。

可做过抓取的人都有个共同体验:标定表再漂亮,手伸到一米开外,深度值就开始飘。这不是标定没做好,是标定管不到的那部分在起作用。

标定修的是系统误差

深度误差分两类。一类是系统误差,镜头畸变、基线长度标称值与实际值的偏差、发射与接收光轴的夹角、温度漂移带来的焦距变化,这些都跟具体位置有确定的对应关系,可以用标定板测出来,做成查找表或者多项式修正。

另一类是随机误差。同一个像素、同一个静止目标、连续采三百帧,深度值本身在跳。这个跳动没有确定的方向,标定无从下手,只能靠多帧平均去压。

前面提到的那篇针对 PMD Flexx2 的噪声建模工作,做的就是把这部分跳动量化出来。作者在 0.4 米到 1.8 米、入射角 0 到 60 度的范围内采了三百帧序列,把噪声拆成轴向和横向两部分,轴向噪声用距离与入射角的函数拟合,形式是 a + b·z + c·z² 再加一个角度相关项。拟合结果与实测的平均 KL 散度是 0.015 nat。

这个拟合式里出现了 z² 项,它不是曲线拟合时随手加的一阶项,对应的是一个具体的物理过程。

多帧平均是最直接的对策。帧数翻四倍,随机噪声减半,12 毫米能压到 6 毫米,代价是帧时间从 16.7 毫秒变成 67 毫秒。机械臂一动,平均出来的深度就带上了拖影,抓取点跟着偏。

标定还有一个隐含前提,温度稳定。光学系统的焦距和结构尺寸随温度变化,几十开的温差足以让标定表失真,这也是工业现场要定期重标的原因。

图 1 相位式飞行时间与结构光两条路线的深度误差随距离变化:ToF 走平方项,结构光走平方项但系数更小(依据原文第三章节的噪声模型形式绘制)

相位到距离的那条换算链

相位式飞行时间测距的原理,是用一个已知频率的正弦调制光去打目标,接收端测回波的相位延迟。距离与相位的关系是:

· z = c·φ / (4π·fm)

c 是光速,fm 是调制频率,φ 是相位差。对相位求导,得到噪声的传递关系:

· σz = (c / (4π·fm)) · σφ

调制频率定在一百兆赫兹,前面的系数就是 0.239 米每弧度。也就是说,相位噪声零点零五弧度,换算成距离是 11.9 毫米,取整算 12 毫米。

这个系数是个常数,跟距离无关。看上去误差应该是固定的,可实测不是。原因在 σφ 上,它并不固定。

平方项来自信噪比

回波功率按距离平方衰减。目标表面反射回来的光,落到探测器上的光子数随 z² 下降;同时调制对比度也会因为背景光和多次反射而退化。相位估计的方差与信噪比成反比,信噪比按 z² 掉,相位噪声就按 z² 涨。

两件事合起来:

· σz(z) ≈ (c / (4π·fm)) · σφ0 · (z / z0)²

σφ0 是在参考距离 z0 处的相位噪声。取 z0 为一米、σφ0 为零点零五弧度,一米处 12 毫米,两米处 48 毫米,三米处 108 毫米。这个增长速度在实际器件上还要更快一点,因为背景光在远距离占比更高。

于是就有了那个看起来矛盾的现象:标定做到 0.1 像素,一米内的深度值很稳,两米外开始抖。标定改善的是系统误差,平方项是随机误差的地盘,两者不在一个战场上。

想测更远只能换频率

相位式测距有一个硬约束:相位只能测到 2π 以内,超过就绕圈。无模糊距离是:

· zmax = c / (2·fm)

一百兆赫兹对应 1.5 米。要测三米,调制频率得降到五十兆赫兹;要测六米,降到二十五兆赫兹。

频率一降,前面的换算系数就跟着变。二十五兆赫兹时,c/(4π·fm) 变成 0.955 米每弧度,是原来的四倍。同样的相位噪声,距离误差直接翻四倍。六米量程的代价,是一米处的误差从 12 毫米变成 48 毫米。

这个取舍在机器人上很具体。移动底盘的避障需要三到五米的作用距离,抓取需要五毫米以内的精度。同一颗相机很难两头都占。

双频是拿两套硬件换一段区间

工程上的解法是用两个调制频率。高频那一路负责精度但量程短,低频那一路负责解模糊。先用低频定出大致距离,再用高频的相位在这个区间里细化,合成之后既能覆盖量程,又保住高频那一路的分辨率。

代价是两套调制、两倍的积分时间、两倍的功耗。曝光时间翻倍意味着运动模糊翻倍,机器人手臂在动的时候,这又是一笔新账。六十帧每秒对应 16.7 毫秒一帧,双频各占一半,单频积分时间只剩 8 毫秒,信噪比按平方根掉三成。

另一条路是结构光或者双目。视差转深度的式子长得像:

· σz = z² · σd / (f · b)

f 是焦距,b 是基线,σd 是视差测量精度。取焦距 2.5 毫米、基线 50 毫米、视差精度 0.1 像素(按 3 微米像元算),一米处误差是 2.4 毫米,比飞行时间好五倍。可基线的另一面是盲区,视差超过探测器范围就近不了了,同样的参数下盲区边界在 0.33 米。

于是方案选择变成了场景选择。要在半米以内精细操作,结构光的账更好看;要在三米外判断地形,飞行时间的量程更实在;两者都要,就得接受双频的功耗和运动模糊。

图 2 双频相位解模糊的信号链:低频定区间,高频在区间内细化(依据原文第四章节的调制方式描述绘制)

反直觉的那一条

最反直觉的结论是,把相机换好一点,未必能让抓取变准。

精度链条上,深度误差只是其中一段。手眼标定的残差、关节编码器的分辨率、末端执行的重复定位精度,任何一项超过深度误差,换相机都白换。反过来说,如果机械臂重复定位精度是 0.5 毫米,那深度误差做到 2 毫米就够了,剩下的预算应该花在别处。

按 12 毫米乘 z² 这条曲线,五毫米的误差对应 0.65 米的工作距离。这个数字解释了为什么桌面级的机械臂抓取普遍把工位安排在半米上下,不是不想做远,是近距离的误差预算刚好够用。

一句话

深度误差的平方项不是器件缺陷,是相位测距的换算系数与回波信噪比相乘的必然结果。标定能压住系统误差,压不住这一项;想扩大工作距离,只能在调制频率、积分时间和基线长度之间做置换,没有一项是免费的。

内容来源:arXiv 预印本(eess.IV),已被 IEEE COINS 2024 收录;公开的深度传感噪声建模与结构光视差误差资料

原文标题:Noise Analysis and Modeling of the PMD Flexx2 Depth Camera for Robotic Applications

作者:Yuke Cai、Davide Plozza、Steven Marty、Paul Joseph、Michele Magno

DOI:10.48550/arXiv.2412.15040(会议版 10.1109/COINS61597.2024.10622644)

配图说明:图 1、图 2 为自行绘制,属原理示意,非原文原图复制;图 1 曲线按 σz = (c/(4π·fm))·σφ0·(z/z0)² 与结构光视差误差式计算,参数取值为本文设定并在正文标出

改动声明:本文为对开放获取文献的技术编译与解读,标题、行文与配图为原创;实测范围与拟合式形式引自原文摘要与第三章节,其余数值为按公式推算

来源:21ic电子网

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭