4、激光雷达标定:内参标定(角度、距离偏差)、外参标定(雷达与车体/IMU的位姿关系)、常用的标定工具(lidar_align、kalibr)

标定这件事,说白了就是给雷达「配眼镜」。

我见过不少团队,算法调得再好,标定一塌糊涂,最后定位精度就是上不去。你想想看,雷达告诉你前方5米有障碍物,结果实际只有4.8米——这0.2米的误差,在狭窄通道里可能就是撞车和通过的差别。

这一章,咱们把标定这件事彻底讲透。

核心观点:标定是导航系统精度的天花板。内参决定「看得准不准」,外参决定「装得对不对」。两个都做好,你的雷达才算真正「上岗」。

激光雷达标定知识体系 激光雷达标定知识体系 激光雷达标定 内参标定 角度偏差 距离偏差 外参标定 雷达↔车体 雷达↔IMU 常用标定工具 lidar_align kalibr 手动标定板 💡 内参决定测量精度 外参决定融合效果 两者缺一不可

4.1 内参标定:让雷达看清世界

内参标定,解决的是雷达自身的「出厂误差」。

每个激光雷达都有制造公差。电机安装偏了0.1度,激光器发射角度偏了0.05度,这些微小的偏差在100米外就会放大成十几厘米的误差。

4.1.1 角度偏差标定

角度偏差分两种:水平角度偏差和垂直角度偏差。

  • 水平角度偏差:雷达旋转时,每个激光束的水平起始角度与理论值不一致。表现为点云整体「扭」了一下。
  • 垂直角度偏差:多线雷达中,各线束的垂直俯仰角与设计值有偏移。这会导致地面点云出现「分层」或「波浪」。

我的经验:判断垂直角度偏差有个土办法——把雷达对着平整地面扫一圈。如果地面点云在远距离出现明显的上下分层,那垂直角度大概率偏了。我曾经用这个方法在5分钟内定位了一台16线雷达的垂直角度问题,省去了拆机检查的麻烦。

标定方法其实不复杂:

  1. 在空旷场地放置标定板(或利用平整墙面)
  2. 采集多组不同距离、不同角度的点云数据
  3. 构建误差函数:理论点位置 vs 实际点位置
  4. 用最小二乘法或非线性优化求解角度偏差

4.1.2 距离偏差标定

距离偏差,就是雷达测出来的距离和真实距离之间的差值。

原因很多:激光器功率衰减、接收器灵敏度变化、温度漂移、甚至镜片脏了都会导致距离偏差。

偏差类型 典型表现 常见原因 标定方法
固定偏移 所有距离都偏大/偏小一个固定值 电子延时、线缆长度 近距离标定板补偿
比例偏移 距离越远偏差越大 时钟频率漂移 多距离点拟合
非线性偏移 不同距离段偏差不一致 光学系统像差 分段多项式拟合

注意:距离偏差标定一定要在雷达预热后进行。冷启动和热稳定后的数据能差出2-3厘米。我习惯开机后让雷达空转10分钟再开始标定。

4.2 外参标定:让雷达融入系统

内参搞定了,接下来就是外参。

外参标定要解决的是:雷达装在车上哪个位置?朝哪个方向?相对于IMU(惯性测量单元)的位姿关系是什么?

4.2.1 雷达与车体的位姿关系

车体坐标系通常以后轴中心为原点,X轴向前,Y轴向左,Z轴向上。雷达坐标系则是以雷达自身为原点。

我们需要求出一个4x4的变换矩阵 T,把雷达坐标系下的点转换到车体坐标系下。

# 外参矩阵示例(单位:米,弧度)
# 假设雷达安装在车顶中心,向前0.5米,向上1.2米,俯仰角0.02弧度
T_lidar_to_vehicle = [
    [0.9998,  0.0000,  0.0200,  0.5000],
    [0.0000,  1.0000,  0.0000,  0.0000],
    [-0.0200, 0.0000,  0.9998,  1.2000],
    [0.0000,  0.0000,  0.0000,  1.0000]
]

标定方法通常有两种:

  • 手动测量法:用卷尺量安装位置,用量角器测安装角度。简单粗暴,但精度有限(通常误差在2-5厘米、1-3度)。
  • 自动标定法:利用已知特征点(如标定板角点),通过点云匹配反算外参。精度高(毫米级、0.1度级)。

我的建议:手动测量只适合初装调试。量产或高精度场景,一定要做自动标定。我记得有个项目,手动测量后定位一直有20厘米的偏差,折腾了两天找不到原因。最后用自动标定一跑,发现雷达安装时Y轴偏了1.5度——卷尺根本量不出来。

4.2.2 雷达与IMU的联合标定

IMU和雷达的联合标定,是激光雷达导航中最关键的一步。

为什么?因为IMU提供高频姿态信息,雷达提供低频位置信息。两者融合时,如果外参不准,融合结果会互相打架。

标定流程大致如下:

  1. 同时采集雷达点云和IMU数据
  2. 利用IMU积分得到运动轨迹
  3. 利用雷达点云匹配得到另一条运动轨迹
  4. 优化外参,使两条轨迹对齐

避坑指南:我曾经在标定IMU和雷达时,发现怎么优化都对不齐。折腾了半天,才发现IMU的采样时间戳和雷达的时间戳差了50毫秒。时间同步没做好,外参标定就是白费功夫。所以,标定前一定先确认时间戳对齐。

4.3 常用标定工具

工具选对了,事半功倍。我这些年用过不少工具,挑三个最实用的讲讲。

4.3.1 lidar_align

这是一个开源工具,专门用于激光雷达和IMU的外参标定。

它的核心思路是:利用IMU预积分和雷达点云配准,构建一个联合优化问题,同时优化外参和轨迹。

# lidar_align 使用示例
# 1. 准备数据:rosbag 包含 /velodyne_points 和 /imu/data
# 2. 运行标定
rosrun lidar_align lidar_align \
  --bag_file data.bag \
  --lidar_topic /velodyne_points \
  --imu_topic /imu/data \
  --output_file calibration.yaml

优点:全自动,不需要标定板。缺点:对运动激励要求高——你得让机器人做充分的旋转和加速运动。

4.3.2 kalibr

kalibr 是ETH Zurich开发的标定工具箱,支持多传感器联合标定。

它不仅能标定雷达和IMU,还能标定相机、IMU、雷达三者之间的外参。

功能 支持传感器 标定精度 难度
相机-IMU标定 单目/双目 + IMU 亚像素级 中等
雷达-IMU标定 激光雷达 + IMU 厘米级 较高
多传感器联合标定 相机+雷达+IMU 综合最优 高

注意:kalibr 对数据质量要求很高。运动太慢、太快、或者场景特征不足,都会导致标定失败。我建议至少采集3组不同运动模式的数据:缓慢平移、快速旋转、8字形运动。

4.3.3 手动标定板方法

有时候,工具再好也不如自己动手。

手动标定板方法适合以下场景:

  • 没有IMU数据(只有雷达)
  • 需要快速验证外参
  • 现场调试时临时标定

做法很简单:

  1. 在雷达前方放置一个已知尺寸的标定板(比如1m×1m的平板)
  2. 用雷达扫描标定板,提取板面点云
  3. 根据板面法向量和中心点,反算雷达相对于板的位置
  4. 移动标定板到不同位置,重复上述步骤,用多组数据优化外参

我的经验:手动标定虽然土,但有时候比自动工具还靠谱。有一次在野外调试,自动标定工具因为地面不平一直收敛失败。我直接用标定板手动标了10分钟,外参精度完全够用。所以,别看不起手动方法——关键时刻能救命。

4.4 标定后的验证

标定完不是就完事了。你得验证标定结果对不对。

我一般做三步验证:

  • 点云重投影:把标定板点云投影到理论位置,看偏差是否在容忍范围内(通常<2cm)
  • 地面平整度检查:标定后的地面点云应该是一个平面,没有波浪或分层
  • 闭环一致性:让机器人走一个闭环路径,看起点和终点的位姿偏差。如果外参准,闭环偏差应该很小

嗯,标定这件事,说难不难,说简单也不简单。关键是要理解原理,选对工具,然后多动手试。我见过太多人拿着工具跑一遍就以为完事了,结果系统跑起来各种问题——其实都是标定没做好。