自动驾驶定位技术:从GNSS/IMU融合到多传感器SLAM的工程实践

📅 2026/8/17 21:04:31
自动驾驶定位技术:从GNSS/IMU融合到多传感器SLAM的工程实践
1. 从“我在哪”到“我能去哪”自动驾驶定位的生死线如果你问一个自动驾驶工程师系统里最不能出错的部分是什么十个有九个会告诉你是定位。这听起来可能有点反直觉毕竟感知、决策、控制听起来都更“酷”。但想象一下你开车时突然不知道自己身处哪条车道甚至不知道自己是在高速上还是在辅路上那种恐慌感。对于自动驾驶汽车来说精准定位就是它的“自我认知”是它一切决策和行动的逻辑起点。它不仅要回答“我在哪”这个哲学问题更要精确到厘米级地回答“我的车头中心点在地球坐标系下的经纬高是多少”、“我的车头朝向哪个方向”、“我当前的速度和角速度是多少”。没有这个基础再强大的感知算法看到的也只是漂浮在虚空中的障碍物再精妙的规划算法画出的也是一条不知通往何处的路径。最近几年随着特斯拉FSD的推进、国内城市NOA的落地以及像《欧卡2》这类模拟器中自动驾驶模组的流行公众对自动驾驶的关注度空前高涨。但无论是端到端大模型还是经典的Apollo EM Planner规划算法其有效运行的前提都是一个稳定、可靠、连续的定位结果。网络上关于“无法定位程序输入点”的报错搜索恰恰从侧面反映了“定位”这个底层功能一旦失效上层应用将立刻崩溃。我们今天要聊的就是这条生死线是如何被构建和守护的。这不是一个简单的GPS故事而是一套融合了惯性导航、轮速计、激光雷达、摄像头甚至高精地图的复杂系统工程其核心目标只有一个在任何天气、任何路况、任何卫星信号条件下为车辆提供一个连续、平滑、可信的位置和姿态估计。2. 定位系统的“三层楼”架构从粗到精的递进一个成熟的自动驾驶定位系统通常不是单一模块而是一个分层、冗余的架构。我习惯把它比喻成一栋三层小楼每一层都为上一层的稳定提供支撑同时也作为备份。2.1 地基层GNSS/IMU紧组合导航这是最基础的一层负责提供全局的、绝对的位置信息。全球导航卫星系统GNSS包括中国的北斗、美国的GPS等是这里的核心。但单纯依赖GNSS有几个致命伤城市峡谷中信号被遮挡或产生多径反射导致定位漂移更新频率低通常10Hz无法满足高速下的控制需求输出的是经纬度需要转换成局部平面坐标才能使用。因此惯性测量单元IMU成为了不可或缺的搭档。IMU通过陀螺仪和加速度计以极高的频率通常100-200Hz测量车辆的角速度和线加速度。通过对加速度进行两次积分理论上可以得到位移。但积分误差会随时间迅速发散单独使用IMU几十秒后位置估计就可能漂出几百米。于是“紧组合”技术登场了。它不是简单地将GNSS的位置和IMU的积分结果做平均而是在更深层的观测层面进行融合。具体来说滤波器如卡尔曼滤波器的状态向量包含了位置、速度、姿态以及IMU的零偏误差等。GNSS提供的伪距、载波相位观测值与IMU积分预测出的位置、速度一起构建观测方程。这样即使在GNSS信号短暂丢失的几秒内IMU也能基于滤波器的最优估计进行航位推算保持定位的连续性而当GNSS信号恢复时又能迅速修正IMU积分累积的误差。这就像是一个蒙眼走路的人IMU每隔一段时间有人告诉他准确的位置GNSS他就能不断校准自己的步幅和方向感。注意紧组合对IMU的校准要求极高。IMU的零偏Bias会随温度和时间漂移必须在系统启动时进行充分的静止校准并在运行中持续估计和补偿。一个未经校准的IMU其误差会在积分中放大反而会成为定位的“毒药”。2.2 主体层基于激光雷达/视觉的局部定位与建图GNSS/IMU提供了全局的“大概位置”但自动驾驶需要的是厘米级的车道级定位。这就需要依赖环境特征了。这一层主要依靠激光雷达LiDAR和摄像头。激光雷达SLAM与点云定位这是目前高等级自动驾驶L4以上最主流的定位方式。其核心是“先建图后定位”。首先在测绘阶段装备有高精度GNSS/IMU和激光雷达的采集车会跑遍目标区域生成一份高精度的三维点云地图。这份地图不仅包含道路几何还包括路灯、交通标志、建筑物墙角等稳定的静态特征。在定位阶段车辆实时采集当前帧的点云与内存中的高精地图进行匹配。这个过程不是暴力比对几十万个点而是通过提取特征如平面、柱状物或使用正态分布变换NDT等算法找到当前点云与地图之间的最优变换矩阵包含平移和旋转。这个矩阵就精确地描述了车辆相对于地图的位置和姿态。由于地图特征丰富且稳定这种方法在天气良好时非常鲁棒和精确。视觉定位基于摄像头的定位成本更低是特斯拉等公司的核心路径。它同样可以分为基于地图和基于特征两种思路。基于地图的方法需要事先构建视觉特征地图如ORB特征点地图。定位时从当前图像提取特征与地图中的特征进行匹配通过PnP等算法解算位姿。而更“端到端”一些的方法则是通过训练好的神经网络直接回归车辆在地图中的位置视觉重定位。视觉定位的挑战在于光照变化、天气影响以及动态物体的干扰。无论是激光雷达还是视觉这一层定位的输出频率高、精度高但都有一个共同的前提必须有一张事先制作好的、高精度的地图。这也是为什么自动驾驶公司需要投入巨资进行高精地图采集和维护。2.3 修正层车道线匹配与道路结构约束即使有了前两层定位仍然可能因为传感器噪声、临时遮挡如大型卡车而产生微小漂移。这时第三层修正就派上用场了。它利用的是道路本身的结构化先验信息。车辆通过摄像头或激光雷达感知到当前的车道线。系统知道在高精地图中车道线是连续的、平滑的曲线并且车辆应该行驶在车道线内。因此可以将感知到的车道线几何形状与地图中对应位置的车道线进行匹配从而得到一个横向的位置修正量。这就像在纸上沿着打印好的直线写字即使你的笔有点抖眼睛也会不断帮你把笔尖拉回线上。此外车辆的运动也受到道路结构的约束。例如车辆不可能突然从一条车道“跳”到几米外的另一条车道也不可能拥有违背物理规律的横摆角速度。通过将这些道路约束和运动学约束加入到定位滤波器中可以进一步平滑轨迹滤除那些物理上不可能的定位跳变。这三层架构共同工作形成了一个“全局粗定位 局部精定位 道路约束修正”的完整闭环。GNSS/IMU确保全局不迷失激光雷达/视觉实现局部厘米级精度道路约束则让轨迹更平滑、更合理。任何一层的暂时失效其他层都可以在一定程度上进行补偿这就是定位系统的冗余性设计。3. 核心算法引擎卡尔曼与粒子滤波的战场前面提到的“融合”、“滤波”其背后的数学引擎至关重要。在自动驾驶定位中主要有两大流派基于卡尔曼滤波器KF的优化方法和基于粒子滤波器PF的概率方法。3.1 扩展卡尔曼滤波器主流选择与线性化艺术EKF是目前应用最广泛的融合框架。它的核心思想是系统有一个状态位置、速度、姿态等这个状态随着时间根据运动模型由IMU数据驱动进行预测。同时我们有多源观测GNSS位置、激光雷达匹配位姿、视觉位姿、轮速计速度等这些观测可以用来修正预测的状态。EKF巧妙地将非线性系统汽车运动模型和观测模型通常都是非线性的在当前估计点附近进行一阶泰勒展开近似为线性系统从而套用标准卡尔曼滤波的预测-更新流程。它的优点是计算效率高资源消耗相对可控能够给出明确的状态估计不确定性协方差矩阵。在实际工程中一个典型的自动驾驶定位EKF可能包含15个以上的状态量。其预测步骤由IMU的高频数据驱动而更新步骤则异步地接收来自不同传感器的低频观测数据。这里的关键挑战在于“数据同步”和“外推”。不同传感器的数据时间戳必须精确对齐到统一的时间轴上通常使用PTP协议。当观测数据到来时它对应的状态需要根据IMU数据“外推”到那个准确的时刻再进行更新这个过程称为“反向传播”。3.2 粒子滤波器应对极端非线性与多假设场景虽然EKF强大但它有一个根本性局限它假设状态的后验概率分布是高斯分布一个单峰钟形曲线。但在某些极端情况下这个假设会失效。最经典的场景就是“全局定位”或“绑架机器人”问题车辆完全不知道自己在哪里例如从地下车库出来或者定位发生严重错误后需要重新找回位置。这时状态的真实分布可能是多峰的。比如车辆可能在地图上的A点也可能在看起来非常相似的B点。EKF会强行将多个峰值合并成一个导致定位到错误的中间位置且协方差很小显得很自信这非常危险。粒子滤波器则用一种暴力的方式来应对这个问题。它不使用单一的高斯分布而是用一群“粒子”来模拟整个概率分布。每个粒子都代表一个完整的状态假设一个可能的位置和姿态。系统运行时根据运动模型让所有粒子“扩散”当获得观测数据比如看到某个特定的标志牌时根据每个粒子的状态能“看到”什么来计算该粒子的权重似然。权重高的粒子代表其假设与观测更匹配。最后通过重采样步骤淘汰权重低的粒子复制权重高的粒子粒子群就会逐渐收敛到真实位置附近。PF的优势是能处理非高斯、多峰分布特别适合解决初始定位和重定位问题。但其缺点是计算量巨大粒子数量往往需要成千上万对算力要求高。因此在实际系统中常常采用混合策略在正常行驶时使用高效的EKF当系统检测到定位不确定性激增如协方差过大或与感知严重冲突时触发一个粒子滤波器进行全局重定位。4. 实战中的“魔鬼细节”误差源与融合策略理论很美好但实战中定位系统每天都在和各种误差作斗争。理解这些误差源是设计一个稳健系统的前提。4.1 传感器误差与标定一切精度的起点所有融合算法都建立在传感器数据可信的基础上。如果输入是“垃圾”输出也必然是“垃圾”。GNSS误差星历与钟差卫星自身的位置和时钟不准可通过差分技术RTK大幅消除。电离层与对流层延迟信号穿过大气层时速度变慢建立模型或使用双频接收机来校正。多路径效应信号经建筑物、地面反射后进入接收机产生“幽灵”信号。这是城市峡谷中的主要误差源需要通过天线设计和抗多径算法来抑制。IMU误差这是最复杂、最需要精心处理的。零偏陀螺仪和加速度计在零输入下的输出不为零且会随温度和时间缓慢变化。必须实时估计并补偿。比例因子输出值与真实物理量之间的比例系数不准确。非正交误差传感器的三轴并非完全垂直。温漂所有误差项都严重依赖温度。高端IMU会内置温补模型。外参标定这是团队新人最容易栽跟头的地方。激光雷达、摄像头、IMU、GNSS天线都安装在车体不同位置。它们之间的相对位置和朝向平移和旋转必须被精确测量这就是“外参”。一个错误的外参会导致激光雷达看到的路沿和摄像头看到的路沿在坐标系下对不上融合时会产生撕裂般的矛盾。外参标定需要在特定场地如标定间或有清晰特征的空旷场地通过采集数据离线计算完成并定期验证。4.2 时间同步被忽视的“沉默杀手”我曾排查过一个诡异的定位问题在直线行驶时定位轨迹平滑但一到转弯处就出现周期性抖动。最终发现是激光雷达和IMU的时间戳同步存在几十毫秒的固定延迟。在直线行驶时这个延迟导致的位置误差是固定的但在转弯时由于角速度的存在这个延迟被放大成了周期性的位置振荡。在自动驾驶系统中时间就是空间。一个100公里/小时约27.8米/秒的车速10毫秒的时间误差就会带来近28厘米的空间误差这已经超出了车道宽度。因此必须使用硬件同步如PPS脉冲信号或高精度软件同步如PTP确保所有传感器数据都拥有统一、精确到毫秒甚至微秒级的时间基准。4.3 融合策略的设计信任谁何时信任当GNSS、激光雷达、视觉、轮速计等多个信息源同时提供有时冲突的观测时滤波器应该相信谁这就是融合策略的核心。一个简单的策略是为每个传感器设定一个固定的观测噪声协方差矩阵。但这是不够的。一个健壮的系统必须具备“传感器健康度诊断”能力。例如当GNSS的卫星数量少于4颗或位置精度因子PDOP值过大时应显著增大其观测噪声降低其权重。当激光雷达点云过于稀疏如大雨、浓雾或与地图匹配的得分低于阈值时应怀疑其匹配结果是否可靠。当摄像头检测到强光眩光或镜头被污物遮挡时应降低甚至暂时禁用视觉定位的更新。更进一步还可以设计基于一致性检验的融合策略。例如比较激光雷达定位结果和视觉定位结果的差异如果两者在统计上不一致则可能意味着其中一个传感器受到了干扰如动态物体此时可以触发更复杂的故障隔离逻辑。5. 定位系统的测试、验证与问题定位开发一套定位系统只是第一步证明它在各种场景下都可靠是更艰巨的任务。5.1 真值系统与闭环测试要评估定位精度首先需要一个更精确的“真值”系统作为基准。在封闭测试场通常使用高精度RTK-GNSS基站网络配合惯性导航系统构建一个厘米级精度的参考轨迹。将待测定位系统的输出与参考轨迹进行对比可以计算出位置误差、姿态误差的均方根值等指标。但更重要的是闭环测试。不仅看定位模块自身的输出还要把它接入整个自动驾驶软件栈看车辆的实际行驶表现。例如在模拟器或实车上人为给定位模块注入一些误差模拟GNSS跳变、激光雷达短暂失效观察规划和控制模块能否妥善处理车辆是否会做出危险动作。这考验的是定位系统输出结果的“平滑性”和“可信度”协方差是否真实反映了不确定性。5.2 问题定位当定位开始“撒谎”即使经过充分测试在实际路测中定位问题依然会出现。一套科学的排查流程至关重要现象确认首先明确问题现象。是轨迹持续漂移还是偶尔跳动是横向误差大还是纵向误差大发生在特定区域如高楼下还是特定动作下如急转弯数据回灌与可视化这是最核心的调试手段。将问题时间段的所有原始传感器数据GNSS原始观测量、IMU原始数据、激光雷达点云、摄像头图像以及定位模块的所有中间状态预测值、观测值、协方差、匹配得分全部记录下来。在离线环境下用工具进行可视化回放。查看GNSS的卫星天空图、信噪比确认是否有多径或遮挡。将激光雷达实时点云与高精地图叠加显示肉眼观察匹配质量。绘制所有观测源的时间序列图观察在问题发生时是哪个传感器的输入出现了突变或异常。假设与验证基于可视化结果提出假设。例如“问题发生在GNSS信号失锁且激光雷达匹配到错误区域时”。然后修改算法参数或逻辑例如在GNSS失锁时增大IMU的预测噪声或对激光雷达匹配结果进行更严格的合理性检查重新回灌数据看问题是否解决。模块隔离测试如果问题复杂可以单独测试定位系统的某个子模块。例如单独测试GNSS/IMU紧组合在无地图情况下的表现或者单独测试激光雷达定位模块在给定初始位置附近的匹配精度。这有助于缩小问题范围。这个过程非常依赖像**Chrome DevTools的Network面板查看Waterfall瀑布图**那样的分析思维需要逐层分解数据流和时间线找到那个拖慢整体性能或引入错误的“慢请求”或“异常数据”。6. 前沿趋势与工程权衡自动驾驶定位技术远未定型仍在快速演进中其中充满了工程上的权衡。趋势一轻地图化与众源更新。高精地图制作和维护成本高昂且难以覆盖全国。趋势是降低对地图的依赖使用更轻量化的地图如仅包含车道线几何和拓扑关系的“SD Map”甚至探索无地图定位。同时利用众包车辆的数据对地图进行自动化更新以应对道路变化。趋势二多传感器深度融合。不再是松散的、后端的融合而是前端的、特征级的融合。例如视觉和激光雷达在特征提取层面就进行融合产生更鲁棒的环境特征描述用于定位和建图。这需要更强大的计算平台和更精巧的算法设计。趋势三端到端学习与定位。能否用一个深度神经网络直接输入多传感器原始数据输出车辆的位姿这是端到端自动驾驶的一个子课题。其优势是可能避免传统流水线中多个模块的误差累积但挑战在于可解释性差、训练数据需求量大以及对罕见场景的泛化能力。工程上的永恒权衡精度 vs. 算力 vs. 成本想要厘米级精度就需要昂贵的激光雷达和高性能IMU以及强大的计算芯片。量产车必须在其中找到平衡点。泛化性 vs. 场景特异性一套在加州阳光下训练和优化的视觉定位系统到了重庆的雨雾天气可能完全失效。如何设计一个能适应全球不同光照、天气、城市风格的定位系统是巨大挑战。安全与冗余为了功能安全关键传感器如IMU可能需要硬件冗余。定位算法本身也需要设计多种不同原理的并行计算通道并进行交叉验证以确保单一故障不会导致定位功能丧失。在我个人看来未来几年内融合了GNSS、IMU、摄像头和低成本固态激光雷达的“轻高精地图”方案可能会成为L2/L3级自动驾驶的主流选择。而对于Robotaxi等L4应用在可预见的未来高线数激光雷达和高精地图依然是安全冗余的必需品。定位这条自动驾驶的生死线其技术演进的故事还将继续在精度、鲁棒性、成本与安全的钢丝上书写下去。