2. 定位系统架构概览:Autoware定位模块的组成与数据流

好,我们直接进入正题。定位模块是自动驾驶的「眼睛」和「大脑」——它得知道自己到底在哪儿。Autoware的定位系统,说白了,就是一套多传感器融合的方案。我习惯把它拆成五个核心部件:GNSS、IMU、LiDAR、轮速计、地图匹配。它们各自有脾气,但合在一起,才能稳定输出。

2.1 五大传感器,各司其职

先聊聊每个传感器是干嘛的。你想想看,如果只用一种传感器,肯定翻车。比如GNSS进隧道就废了,IMU长时间会飘。所以得组合。

  • GNSS(全球导航卫星系统):提供绝对位置,精度米级到厘米级(RTK)。但信号遮挡就完蛋。我在项目中遇到过,高架桥下GNSS直接跳变3米,差点把车带沟里。
  • IMU(惯性测量单元):测量加速度和角速度,短时精度极高。但积分久了,误差累积。嗯,这里要注意,IMU的零偏是最大的坑。
  • LiDAR(激光雷达):扫描周围点云,用于匹配地图。精度厘米级,但怕雨雪、怕灰尘。我曾经在工地测试,扬尘一起,点云直接糊了。
  • 轮速计(Wheel Odometry):从车轮转数推算速度。简单可靠,但打滑就废。比如冰雪路面,轮速计会给你一个假速度。
  • 地图匹配(Map Matching):将LiDAR点云与高精地图对齐,得到位姿。这是定位的最后一道防线。

核心观点:没有哪个传感器是完美的。融合的目的,就是取长补短。我个人习惯把GNSS和地图匹配当作「长期校正」,IMU和轮速计当作「短期预测」。

2.2 数据流与融合逻辑

数据怎么流?我画了一张图,帮你理清脉络。说白了,就是「预测+观测」的循环。

GNSS IMU LiDAR 轮速计 预处理 时间同步 坐标转换 异常剔除 插值对齐 融合核心 EKF 状态预测 IMU+轮速计 观测更新 GNSS+地图匹配 位姿 输出 传感器输入 预处理 EKF融合 最终输出

流程其实不复杂:

  1. 预测阶段:IMU和轮速计做高频预测(100Hz以上),推算短时间内的位姿变化。我习惯把IMU的角速度积分成姿态,轮速计的速度积分成位置。
  2. 观测阶段:GNSS和地图匹配做低频校正(10Hz左右)。GNSS给绝对位置,地图匹配给相对地图的位姿。
  3. 融合:用扩展卡尔曼滤波(EKF)把预测和观测拧在一起。说白了,就是「信谁多一点」的问题。

我的经验:EKF的噪声矩阵调参是个玄学。我曾经在高速场景下,把IMU的噪声设得太小,结果车飘了。建议先跑仿真,再上路。

2.3 融合逻辑的细节

为什么用EKF?因为系统是非线性的。比如车辆的航向角变化,不是简单的加减法。EKF通过线性化近似,解决了这个问题。

具体来说,状态向量通常包含:

状态量 符号 来源
位置(x, y, z) p GNSS / 地图匹配
姿态(roll, pitch, yaw) θ IMU 积分
速度(vx, vy, vz) v 轮速计 / IMU
IMU零偏 b 在线估计

嗯,这里要注意:IMU的零偏如果不估计,几分钟后位置误差就能到几十米。我建议把零偏也放进状态向量,在线实时更新。

警告:千万别忽略时间同步!不同传感器的采样时刻不一样,直接融合会出大问题。我曾经因为GNSS和IMU的时间戳差了50ms,导致定位结果来回跳。解决方案是用硬件同步或软件插值。

2.4 代码示例:EKF预测步骤(简化版)

给你看一段伪代码,理解一下预测阶段怎么做的。实际工程中会更复杂,但核心逻辑不变。

// 预测步骤(IMU + 轮速计驱动)
void predictState(State &x, double dt) {
    // 用IMU角速度更新姿态
    x.roll  += imu.gyro.x * dt;
    x.pitch += imu.gyro.y * dt;
    x.yaw   += imu.gyro.z * dt;

    // 用轮速计速度更新位置
    double v = wheel_odom.speed;
    x.x += v * cos(x.yaw) * dt;
    x.y += v * sin(x.yaw) * dt;

    // 更新协方差矩阵(略)
    // P = F * P * F^T + Q
}

你看,代码很短。但实际工程里,还要考虑地球曲率、坐标系转换、杆臂效应补偿。我建议你从简单开始,逐步加复杂度。

2.5 避坑指南

  • 我曾经在隧道里只靠IMU+轮速计,结果跑了2公里后,位置误差超过10米。后来加了地图匹配,才稳住。
  • 我建议:在融合逻辑里加入「传感器健康检查」。比如GNSS信号差时,自动降低它的权重。
  • 其实,定位模块的调试,80%的时间花在数据预处理上。时间同步、坐标转换、异常值剔除,这些做好了,融合自然稳。

好,这一章就到这里。记住:定位架构的核心是「多传感器冗余+EKF融合」。下一章我们会深入EKF的数学细节,但今天先把框架搭起来。

可可精品资料库