实验室里,你的激光雷达对着标准靶,误差只有 ±2 cm。
上车、上路、上场景之后,同一面墙一会儿偏前,一会儿偏后。
你开始改算法、加平均、调阈值,甚至怀疑是不是标定没做好。
但很多时候,真正把误差顶上去的,不是最后一层算法,而是前面整条链路里那些你没看见的误差源。
01 · 测距误差不是一个数,而是一串误差源叠加
先把最基本的式子摆出来。
对脉冲式 ToF 激光雷达,测距本质是测往返飞行时间:
R = c · Δt / 2
其中 R 是目标距离,c 是光速,Δt 是回波往返时间。
所以距离误差本质上就是时间误差映射出来的:
σ_R = c · σ_t / 2
这个式子很残酷。
只要总时间抖动 σ_t = 100 ps,对应的距离误差就是约 1.5 cm;如果抖动到 500 ps,误差立刻就是 7.5 cm。
你看到的是“厘米级误差”,系统里实际在打架的是“皮秒级时间误差”。
而 σ_t 并不是某一个模块单独决定的,它通常是下面几项叠加:
①发射脉冲宽度和触发抖动
②探测器、TIA、比较器的噪声抖动
③TDC 量化误差
④回波幅度变化带来的 walk 误差
⑤温漂和标定漂移
⑥多路径和场景反射引入的伪回波
02 · 第一类:时间抖动先把你的底噪写死了
很多人一看到测距误差,就先去看后端点云算法。
但只要前端时间链路抖动大,后面再怎么拟合,也只是围着一个更大的噪底打转。
脉冲式雷达的时间抖动通常来自 4 个地方:
①发射端触发抖动:激光驱动和脉冲上升沿不稳定,会让起始时刻漂动
②接收端噪声抖动:APD/SPAD + TIA + 比较器在低 SNR 下,过阈时刻会来回跳
③TDC 量化误差:时间数字转换器本身有 LSB 限制,分辨率不够时误差直接离散化
④时钟源相位噪声:系统参考时钟不稳,会把所有时间测量一起拖宽
如果把这些独立误差近似看成互不相关,总抖动可以写成:
σ_t,total ≈ √(σ_t,laser² + σ_t,rx² + σ_t,TDC² + σ_t,clk²)
这就是为什么你单看某一个模块都“还行”,整机误差却已经超标。
比如:激光触发 60 ps,接收端 80 ps,TDC 50 ps,时钟 40 ps,合成后总抖动约 116 ps,对应距离误差已经接近 1.7 cm。
实验室里能做到 ±2 cm,不代表系统还有很多余量;很多时候你已经贴着时间抖动下限在跑了。
03 · 第二类:回波幅度一变,walk 误差就出来了
现场误差“忽大忽小”,最常见的元凶之一就是 walk 误差。
原因很简单:很多脉冲雷达用固定阈值判定回波到达时刻。问题是,强回波和弱回波虽然真正到达时间一样,但跨过阈值的时间并不一样。
用固定阈值检测时,误差近似满足:
ΔR_walk ≈ c · ΔV_th / (2 · dV/dt)
这里 dV/dt 是回波前沿斜率。前沿越慢、幅度越小,阈值穿越时刻越往后,测得的距离就越大。
所以同一台雷达:
①测白板很准,测黑胶带就偏远
②近距离很稳,远距离开始发飘
③正入射很准,斜入射后误差突然增大
这些现象背后,很多不是“算法不稳”,而是回波前沿条件已经变了。
工程上最常见的 3 个修正手段是:
①恒比鉴别(CFD):不再盯固定电压阈值,而盯波形相对比例点
②全波形拟合:对回波做高斯/指数前沿拟合,回推真实到达时刻
③幅度-距离标定表:按回波幅度分段补偿 walk 偏差
04 · 第三类:温漂和标定漂移会慢慢把误差拉大
很多系统在开机前 5 分钟和开机后 40 分钟,误差根本不是一回事。
因为温度会同时影响:
①激光发射延时
②探测器增益
③TIA / 比较器阈值
④时钟频率
⑤光机结构基准位置
结果就是:实验室里短时间测得很漂亮,一旦连续运行,误差开始缓慢爬升。
如果系统时间基准随温度变化了 100 ppm,对长距离测量就会逐渐放大;而更常见的是阈值、电缆延时、器件响应速度一起变化,形成一个很难从单点数据里直接看出来的“慢漂”。
典型症状是:
①开机越久,测距均值越偏
②早晚温差一大,标定表失效
③静态目标不动,距离均值仍然缓慢漂移
这类问题不能靠再做一次平均解决,因为平均只能压随机噪声,压不掉系统偏差。
随机误差靠平均,系统误差靠标定;把这两类问题混在一起,是很多测距项目久调不成的根本原因。
05 · 第四类:多路径和场景反射会制造“假距离”
真正上场景后,最不讲道理的误差往往不是电子链路,而是场景本身。
当光束打到玻璃、车漆、路牌边缘、潮湿地面、雾气或近距离遮挡物时,接收端看到的往往不是一个干净回波,而是多个前后重叠的回波包。
这时候系统可能出现三种情况:
①最早回波被噪声淹没,后面的强回波被当成主回波,距离偏大
②近距离杂散反射提前触发,主目标还没回来,系统就提前计时结束,距离偏小
③多个回波叠加导致波形畸变,峰值位置和阈值穿越点一起漂
在高反和低反目标混合场景里,这个问题尤其明显。
你以为自己在测“一个点的距离”,实际上系统接收到的是“多个路径能量的时间混合结果”。
这也是为什么:
①对标准靶误差很好看
②对真实道路目标误差突然恶化
③同一距离,不同材质误差完全不一样
06 · 误差来源怎么判断?先看这张表
很多团队一上来就问:“我们这个误差到底能不能靠算法压下去?”
更准确的问题应该是:你面对的是随机抖动、阈值偏差、热漂,还是多路径?
因为它们的解法完全不是一套东西。
07 · 工程排查清单:别再盲目调参数了
如果你的激光雷达测距误差一直压不下去,按这个顺序查:
①先看静态标准差:对固定标准靶连续采样,先判断是随机散布大,还是均值偏差大
②再看回波幅度相关性:把测距误差对回波峰值作图;如果明显相关,优先怀疑 walk 误差
③做热机曲线:记录开机后 0~60 分钟误差变化;如果均值缓慢移动,就是温漂问题
④换目标材质与角度:白板、黑板、金属、斜面各测一次;若误差模式明显变化,多半是场景反射和多路径
⑤拆链路测时间抖动:分别测激光触发、接收比较器输出、TDC 输出,不要只盯整机结果
很多“怎么都调不准”的项目,最后不是靠某个神奇算法解决的,而是靠把误差一项项拆开,分别归因。
— 工程结论 —
激光雷达测距误差压不下去,通常不是单一模块失效,而是时间链路、阈值判决、温漂和场景反射一起叠加的结果。
误差的四个高频来源:
① 时间抖动:前端链路只要多出 100 ps,就已经对应约 1.5 cm 距离误差
② Walk 误差:回波幅度和前沿一变,固定阈值判决就会系统性偏移
③ 温漂与标定漂移:平均只能压随机噪声,压不掉慢漂和系统偏差
④ 多路径回波:真实场景里的玻璃、边缘和杂散反射会制造“假距离”
工程解法不是盲目加平均,而是先区分随机误差和系统误差,再按链路逐项拆解。