一、内参标定:激光雷达内部参数的标定原理与方法
大家好,我是老张。今天咱们聊聊激光雷达的内参标定。
说实话,很多工程师一听到「标定」两个字就头大。觉得这东西又枯燥又难搞。但我个人觉得,内参标定其实是整个多传感器融合里最「实在」的一环。你想想看,外参标定搞错了,大不了重来一次。内参要是出厂就有偏差,或者使用中发生了漂移,那后面所有数据都是错的。
嗯,咱们先搞清楚一件事:激光雷达的内参到底是什么?
1.1 内参到底包含什么?
说白了,内参就是描述激光雷达自身几何结构的参数。我习惯把它分成三类:
- 旋转轴参数:激光雷达的旋转中心在哪儿?轴是不是歪的?
- 俯仰角参数:每个激光发射器在垂直方向上的角度偏移。
- 水平偏移参数:每个激光发射器在水平方向上的位置偏差。
你可能会问:「厂家不是给出厂标定好了吗?」
对,但我在项目中遇到过好几次——新拆封的激光雷达,内参表里写的俯仰角跟实际扫描出来的点云对不上。尤其是那些16线、32线的机械式雷达,用了一段时间后,电机磨损、结构松动,内参就变了。
1.2 旋转轴标定:找到那个「圆心」
旋转轴标定,说白了就是找到激光雷达的旋转中心在哪儿。
机械式激光雷达是靠电机带着整个激光头旋转的。理想情况下,旋转轴应该跟激光雷达的几何中心完全重合。但现实是——
- 电机安装有公差
- 轴承有间隙
- 长期使用后磨损
这些都会导致旋转轴偏移。
标定方法:
我个人习惯用「平面拟合法」。具体来说:
- 把激光雷达固定好,正对着一个平整的墙面。
- 采集一帧完整的点云数据。
- 对每个激光束扫描到的墙面点,拟合出一个平面方程。
- 理论上,所有激光束扫描同一个平面,应该得到同一个平面方程。如果旋转轴有偏差,不同激光束拟合出的平面就会有差异。
- 通过优化算法,找到让所有平面方程一致性最高的旋转轴参数。
核心公式:
假设旋转轴偏移量为 (dx, dy),则每个点的坐标修正为:
x' = x - dx
y' = y - dy
优化目标:所有激光束拟合的平面法向量夹角最小。
我的经验:
我曾经在项目里遇到一个情况——标定出来的旋转轴偏移量只有0.3毫米,当时觉得「这么小,不管了吧」。结果融合后的点云跟相机图像总是对不上。后来发现,0.3毫米的轴偏移,在50米外会带来将近15厘米的位置误差。所以,别小看任何偏差。
1.3 俯仰角标定:每个激光头的「抬头低头」
俯仰角,就是每个激光发射器在垂直方向上的角度。
你想想看,一个32线的激光雷达,有32个激光发射器。每个发射器在出厂时都有一个标称的俯仰角,比如-15°、-14°、-13°……一直到+15°。
但实际呢?
- 每个激光管的焊接位置有误差
- 透镜安装有偏差
- 温度变化导致结构变形
这些都会让实际俯仰角跟标称值不一样。
标定方法:
我常用的方法是「多平面标定法」:
- 在激光雷达前方不同距离处,放置3-5个已知高度的平面靶标。
- 每个靶标的高度和距离都精确测量。
- 激光雷达扫描这些靶标,记录每个激光束打到靶标上的位置。
- 根据几何关系,反算出每个激光束的实际俯仰角。
计算公式:
θ_i = arctan( (h_i - H) / d_i )
其中:
- θ_i:第i个激光束的实际俯仰角
- h_i:激光束打到靶标上的高度
- H:激光雷达的安装高度
- d_i:靶标到激光雷达的水平距离
注意:
俯仰角标定对环境要求很高。我曾经在户外做标定,风一吹靶标晃了一下,结果标出来的角度偏差了0.02°。别小看这0.02°,在100米处就是3.5厘米的误差。所以,我建议在室内无风环境下做,靶标要固定牢固。
1.4 水平偏移标定:激光头的「左右偏差」
水平偏移,指的是每个激光发射器在水平方向上的位置偏差。
这个参数很多人会忽略。你想想看,32个激光发射器排成一排,每个之间都有物理间距。这个间距虽然很小(通常只有几毫米),但在远距离测量时,影响就大了。
标定方法:
水平偏移的标定,我习惯跟俯仰角标定一起做。用同一个多平面靶标系统,同时解算俯仰角和水平偏移。
具体来说:
- 使用已知几何特征的标定靶标(比如棋盘格或圆形靶标)。
- 激光雷达扫描靶标,提取每个激光束打在靶标上的特征点。
- 建立优化方程,同时求解俯仰角和水平偏移。
优化目标函数:
min Σ || P_measured - P_predicted(θ, δ) ||²
其中:
- P_measured:实际测量到的点云坐标
- P_predicted:根据俯仰角θ和水平偏移δ预测的点云坐标
- 优化变量:所有激光束的θ和δ
1.5 内参标定的完整流程
好了,我把整个流程串起来,给你一个可以直接用的步骤:
- 准备阶段:搭建标定环境,准备靶标,测量靶标位置。
- 数据采集:采集多组不同距离、不同角度的点云数据。
- 预处理:去除噪声点,提取靶标上的有效点云。
- 参数解算:用优化算法同时求解旋转轴、俯仰角、水平偏移。
- 验证:用标定后的参数重新投影点云,检查一致性。
避坑指南:
我曾经犯过一个错误——只采集了一组数据就做标定。结果标出来的参数在近距离很准,远距离就飘了。后来我学乖了,至少采集5组不同距离的数据,覆盖5米到50米的范围。这样标出来的参数在全量程内都可靠。
1.6 内参标定的知识体系
下面这张图,是我自己总结的内参标定知识结构。你看一眼就能明白整个逻辑:
1.7 总结
内参标定这件事,说难不难,说简单也不简单。关键是要理解每个参数背后的物理意义,以及它们对最终点云质量的影响。
我个人觉得,做内参标定最重要的不是算法多高级,而是态度要严谨。每一个0.01°的角度偏差,每一毫米的位置偏移,在远距离都会被放大。你想想看,自动驾驶的车在高速上跑,100米外的障碍物如果偏差了20厘米,那可能就是撞上还是躲开的区别。
好了,这一章的内容就到这里。记住一句话:内参标定是地基,地基不稳,上面盖什么都白搭。
公众号:蓝海资料掘金营,微信deep3321