4. 传感器标定基础
说实话,我刚入行那会儿,觉得标定这事儿挺无聊的。
不就是把传感器装车上,然后对着棋盘格拍几张照片吗?
直到有一次,我花了整整两周时间排查一个融合感知的bug——激光雷达检测到的障碍物位置,和毫米波雷达检测到的位置,总是差那么几十厘米。后来发现,问题出在标定参数上。外参偏了0.5度,结果在50米外,误差就放大到了半米多。
嗯,从那以后,我再也不敢小看标定了。
4.1 标定的本质:给传感器“对齐坐标系”
你想想看,毫米波雷达和激光雷达,它们各自有各自的“眼睛”。
激光雷达看到的是三维点云,以自己为中心建立坐标系。毫米波雷达看到的是稀疏的反射点,也是以自己为中心。这两个坐标系,天生就是歪的。
标定的核心目标,说白了就两件事:
- 内参标定:搞清楚传感器自己内部的“脾气”。比如激光雷达的激光束有没有歪?毫米波雷达的天线方向图有没有偏?
- 外参标定:搞清楚传感器之间的“相对位置和姿态”。比如激光雷达装在车顶,毫米波雷达装在保险杠,它们之间的旋转和平移关系是多少?
我个人习惯把外参标定比作“给两个陌生人介绍认识”。你得告诉它们:你在哪,我在哪,咱们怎么才能看到同一个世界。
核心公式(外参变换):
P_lidar = R * P_radar + T
其中R是旋转矩阵,T是平移向量。这个公式,就是融合感知的“地基”。
4.2 为什么要标定?三个血泪教训
我遇到过不少团队,觉得标定可以“差不多就行”。结果呢?
- 融合结果不准:两个传感器看到同一个目标,但坐标对不上。你以为是两个目标,其实是一个。或者你以为是一个,其实是两个。
- 时间同步白做:就算你把时间戳对齐得再好,空间上对不齐,融合也是白搭。我记得有一次,我们花了一周做时间同步,结果发现外参标定错了,所有工作重来。
- 算法鲁棒性下降:标定误差会直接传导到下游的检测、跟踪、规划模块。你想想看,一个偏了0.1度的外参,在100米外就是17厘米的误差。对于自动驾驶来说,这可能是生与死的区别。
避坑指南:
我曾经在一个量产项目上,发现标定参数随着时间在漂移。原因是车辆震动导致传感器支架松动。所以标定不是一劳永逸的,建议定期做校验,尤其是车辆经历过剧烈颠簸或碰撞之后。
4.3 标定的核心目标:内参 vs 外参
咱们分开说。
4.3.1 内参标定
内参,是传感器自身的“出厂设置”。
- 激光雷达内参:包括激光束的发射角度、接收器灵敏度、距离偏移量等。一般出厂时已经标好,但如果你拆装过激光雷达,或者它受过撞击,建议重新标定。
- 毫米波雷达内参:包括天线方向图、发射功率、接收增益、距离和速度的校准系数。毫米波雷达的内参标定通常需要用到角反射器,在暗室或空旷场地进行。
内参标定,我一般建议用厂家提供的工具。自己写?太折腾了,而且容易出错。
4.3.2 外参标定
外参,才是融合感知工程师真正要操心的。
外参标定要解决两个问题:
- 旋转:两个传感器之间的朝向偏差(俯仰角、偏航角、翻滚角)
- 平移:两个传感器之间的位置偏差(X、Y、Z方向的距离)
常用的外参标定方法,我总结了一下:
| 方法 | 原理 | 精度 | 适用场景 |
|---|---|---|---|
| 手动测量法 | 用卷尺、角度仪直接量 | 低(厘米级) | 快速验证、原型车 |
| 靶标法 | 用棋盘格、角反射器等已知物体 | 高(毫米级) | 量产车、实验室 |
| 自然场景法 | 利用道路上的特征点(如车道线、杆状物) | 中(厘米级) | 在线标定、OTA更新 |
我个人最推荐靶标法。虽然操作起来麻烦一点,但精度有保障。自然场景法适合做在线微调,但初始标定还是得靠靶标。
4.4 常用标定工具介绍
工具这块,我踩过不少坑。给你列几个我用下来觉得靠谱的:
4.4.1 开源工具
- lidar_camera_calibration:一个ROS包,专门做激光雷达和相机的联合标定。虽然它主要针对相机,但你可以用它来标定激光雷达和毫米波雷达的“虚拟相机”关系。
- Kalibr:苏黎世联邦理工出品,支持多传感器联合标定。功能强大,但配置起来有点复杂。我记得第一次用的时候,光编译就花了一下午。
- Autoware标定工具:Autoware自带了一套标定工具,支持激光雷达和毫米波雷达的联合标定。界面友好,适合新手入门。
4.4.2 商业工具
- VectorNav:提供高精度的惯导和标定服务,适合对精度要求极高的场景。
- Hexagon:他们的激光跟踪仪和标定服务,在汽车行业用得很多。价格不便宜,但精度确实好。
我的建议:
如果你刚开始做融合感知,先用Autoware的标定工具上手。等你对标定原理熟悉了,再尝试Kalibr或者自己写标定算法。别一上来就搞复杂的,容易劝退。
4.5 标定的知识体系
下面这张图,是我自己总结的标定知识体系。你看一眼,心里就有数了。
4.6 标定流程:一个实战案例
我拿一个实际项目给你讲讲标定流程。当时我们要标定一个32线激光雷达和一个77GHz毫米波雷达。
- 准备阶段:找一个空旷的停车场,地面平整,周围没有强反射物。放置3-5个角反射器,位置要分散,覆盖不同距离和角度。
- 数据采集:同时启动两个传感器,采集至少30秒的数据。确保角反射器在两者的视野中都有清晰的响应。
- 特征提取:从激光雷达点云中提取角反射器的中心位置,从毫米波雷达数据中提取对应的反射点。
- 匹配求解:用最小二乘法或ICP算法,求解旋转矩阵R和平移向量T。
- 验证:用另一组数据验证标定结果。如果误差在5厘米以内,就算合格。
关键参数示例:
旋转矩阵 R:
[[ 0.9998, 0.0123, -0.0156],
[-0.0121, 0.9999, 0.0089],
[ 0.0157, -0.0087, 0.9998]]
平移向量 T (单位: 米):
[0.25, -0.10, 0.35]
这个结果说明:毫米波雷达在激光雷达的右前方25厘米、下方10厘米、后方35厘米处,且姿态偏差很小。
4.7 标定中的常见坑
最后,分享几个我踩过的坑:
- 时间不同步:标定的时候,两个传感器采集的数据时间戳要对齐。否则你匹配的是不同时刻的场景,标定结果肯定不准。
- 特征点太少:至少需要3个不共线的特征点,才能解出6自由度外参。我建议用5个以上,增加冗余度。
- 忽略雷达的“多径效应”:毫米波雷达在墙角、金属护栏附近容易产生多径反射,导致检测到的点位置偏移。标定时要避开这些区域。
- 标定板材质不对:激光雷达用的棋盘格,毫米波雷达不一定能检测到。毫米波雷达标定要用角反射器或金属板。
嗯,标定这事儿,说难不难,说简单也不简单。但它是融合感知的“地基”,地基不稳,上面盖的房子再漂亮也没用。
可可精品资料库