定位模块调试:GNSS定位调试、IMU数据调试、LIDAR定位调试
定位模块,说白了就是自动驾驶系统的「眼睛」和「耳朵」。它要是出了问题,车就不知道自己在哪里,那后面的规划、控制全得乱套。我这些年调试定位模块踩过的坑,比走过的路还多。今天咱们就一个一个来捋清楚。
GNSS定位调试:别太相信天空的信号
GNSS(全球导航卫星系统)是定位的起点。很多人觉得GPS信号是万能的,其实不然。我在项目中遇到过好几次,明明卫星颗数够多,定位却飘出去十几米。
调试GNSS,我建议从这几个方面入手:
- 检查卫星颗数与信噪比 —— 低于20dBHz的卫星信号基本不可用。
- 查看定位状态 —— 是单点定位、差分定位还是RTK固定解?RTK固定解才是我们想要的。
- 观察位置跳变 —— 如果位置在静止状态下还频繁跳动,说明信号质量堪忧。
嗯,这里要注意:GNSS的更新频率通常只有10Hz,对于高速行驶的车辆来说,这个频率远远不够。所以它必须和IMU、轮速计做融合。
IMU数据调试:别被噪声骗了
IMU(惯性测量单元)提供加速度和角速度。它的优点是更新频率高(100Hz以上),缺点是——噪声大、有零偏、会漂移。
调试IMU,我一般分三步走:
- 静态数据采集:把IMU放在水平桌面上,采集30秒数据。看看加速度计的三轴输出是不是接近[0, 0, 9.8] m/s²。如果不是,说明有安装偏差或零偏。
- 动态数据检查:拿着IMU做几个简单的旋转动作,看角速度输出是否平滑。如果有毛刺,可能是电磁干扰。
- Allan方差分析:这个有点专业,但很有用。它能帮你量化IMU的随机游走和零偏稳定性。
🔧 调试命令示例(ROS环境):
# 查看IMU原始数据
rostopic echo /imu/data_raw
# 检查IMU频率
rostopic hz /imu/data_raw
# 绘制加速度计数据(需要rqt_plot)
rqt_plot /imu/data_raw/linear_acceleration/x
你想想看,如果IMU的零偏没校准好,那积分出来的速度和位置误差会像滚雪球一样越来越大。我有个同事曾经因为IMU零偏没标定,导致车辆在直道上开出了S形轨迹——嗯,那画面挺尴尬的。
LIDAR定位调试:点云配准的玄学
LIDAR定位,说白了就是拿当前扫描到的点云,去和预先构建的地图做匹配。最常用的方法是NDT(正态分布变换)和ICP(迭代最近点)。
调试LIDAR定位,我建议重点关注这几个参数:
| 参数 | 作用 | 调试建议 |
|---|---|---|
| ndt_resolution | NDT网格分辨率 | 城市道路建议1.0~2.0米,高速建议2.0~4.0米 |
| step_size | 优化步长 | 默认0.1,如果收敛慢可以适当增大 |
| trans_epsilon | 收敛阈值 | 建议0.01米,太大会导致定位抖动 |
| max_iterations | 最大迭代次数 | 30次足够,太多会拖慢实时性 |
我曾经遇到过一个很头疼的问题:车辆在空旷的停车场里,LIDAR定位突然发散。后来发现是因为周围环境太对称,点云匹配陷入了局部最优。解决办法是——加入IMU的预测作为初始位姿,给NDT一个更好的起点。
三种定位方式的融合策略
单独用任何一种定位方式都有短板。GNSS怕遮挡,IMU怕漂移,LIDAR怕对称环境。所以实际工程中,我们用的是融合定位。
我个人比较推荐的是「松耦合」方案:
- GNSS提供全局位置约束
- IMU提供高频姿态预测
- LIDAR提供局部位置修正
用卡尔曼滤波或者因子图把这些信息揉在一起。嗯,这里要注意:不同传感器的置信度权重需要动态调整。比如在隧道里,GNSS的权重应该降到最低,而IMU和LIDAR的权重提高。
📊 定位模块调试知识体系:
调试定位模块,说白了就是和噪声、误差、异常值做斗争。没有一劳永逸的方案,只有不断积累的经验。我建议你每次调试都记录下参数变化和现象,时间久了,你看到定位数据就能大概猜到问题出在哪里。