第三章:定位与地图——高精地图构建、GPS/IMU组合导航、SLAM技术简介、车道级定位
各位同学,欢迎来到第三章。这一章我们聊聊自动驾驶的「眼睛」和「记忆」——定位与地图。
说实话,定位这事,我入行时觉得很简单。不就是GPS嘛,手机导航不也能用?后来真上了车,才发现完全不是那么回事。城市峡谷、隧道、高架桥下……GPS信号说丢就丢。这时候,你就得靠一套组合拳来稳住定位。
3.1 高精地图:不只是导航地图
普通导航地图告诉你「前方500米右转」。高精地图告诉你「前方500米,第三条车道,右转,车道线是实线,路沿高度15厘米,有一个交通杆在坐标(XXX, YYY)处」。
说白了,高精地图是给车看的,不是给人看的。它包含:
- 道路模型:车道线、路沿、停止线、斑马线
- 交通设施:红绿灯、标志牌、杆件、护栏
- 拓扑关系:车道连接、变道规则、路口转向
- 定位特征:点云特征、视觉特征,用于匹配定位
高精地图的构建流程,我简单梳理一下:
- 数据采集:用激光雷达、相机、IMU、轮速计采集道路数据
- 点云配准:把多帧点云对齐,生成全局点云地图
- 语义提取:从点云中提取车道线、路沿、标志牌等元素
- 矢量化:把语义元素转为矢量数据,生成地图文件
- 质量验证:人工+自动检查地图精度
关键点:高精地图的绝对精度通常要求在10cm以内,相对精度(车道间)要求在2cm以内。达不到这个精度,车道级定位就是空谈。
3.2 GPS/IMU组合导航:优势互补
GPS和IMU,一个像长跑运动员,一个像短跑健将。
GPS:长期稳定,但短期容易受干扰。高楼遮挡、多径效应,都会让定位跳变。
IMU:短期精度极高,更新频率快(100Hz以上),但长期会漂移。你想想看,IMU靠积分算位置,误差会随时间累积。
组合导航的核心思想:用GPS校正IMU的漂移,用IMU填补GPS的缺失。
我常用的组合方式有两种:
- 松耦合:GPS和IMU各自独立解算,然后用卡尔曼滤波融合位置/速度结果。简单,但精度一般。
- 紧耦合:直接融合GPS的原始观测值(伪距、载波相位)和IMU的加速度/角速度。精度高,但计算量大。
这里给一个简单的卡尔曼滤波融合伪代码:
// 预测步骤(IMU驱动)
x_pred = F * x_prev + B * u_imu
P_pred = F * P_prev * F^T + Q
// 更新步骤(GPS观测)
K = P_pred * H^T * (H * P_pred * H^T + R)^-1
x_updated = x_pred + K * (z_gps - H * x_pred)
P_updated = (I - K * H) * P_pred
嗯,这里要注意:Q和R矩阵的调参很关键。Q太大,IMU的权重就低;R太大,GPS的权重就低。我一般会在实车上跑几组数据,手动调一下。
个人经验:我曾经在一条高架桥下测试,GPS信号完全丢失了30秒。IMU的漂移让定位偏了快2米。后来我加了轮速计辅助,漂移控制在0.3米以内。所以,多传感器融合永远不嫌多。
3.3 SLAM技术简介:边建图边定位
SLAM,全称Simultaneous Localization and Mapping。说白了,就是让车在未知环境中,一边走一边给自己定位,同时把地图建出来。
为什么需要SLAM?因为高精地图不是万能的。地图更新不及时、施工改道、临时封路……这些情况都需要车辆有自主建图的能力。
SLAM主要分两类:
| 类型 | 传感器 | 优点 | 缺点 |
|---|---|---|---|
| 激光SLAM | 激光雷达 | 精度高,不受光照影响 | 成本高,无纹理区域易退化 |
| 视觉SLAM | 相机 | 成本低,纹理丰富 | 受光照影响大,深度估计有限 |
| 多模态SLAM | 激光+视觉+IMU | 鲁棒性最强 | 系统复杂,标定困难 |
我个人的习惯是,优先用激光SLAM做建图,视觉SLAM做重定位。为什么呢?因为激光点云对几何结构的描述更直接,建图精度更高。而视觉特征丰富,适合在已知地图中快速定位。
SLAM的核心流程:
- 前端:特征提取与匹配(点云配准或视觉特征点匹配)
- 后端:图优化或滤波,优化位姿和地图点
- 回环检测:识别曾经到过的地方,消除累积误差
- 建图:生成全局一致的地图
避坑指南:我曾经在一个长直隧道里跑SLAM,激光雷达前后方向的特征几乎一样,导致位姿估计发散。后来我加了IMU预积分,才稳住。记住:SLAM在退化环境中(长走廊、隧道、空旷广场)很容易翻车,一定要有IMU或轮速计辅助。
3.4 车道级定位:从「我在哪」到「我在哪条车道」
车道级定位,是自动驾驶的刚需。你想想看,变道、超车、匝道分流,哪一步不需要知道自己在哪条车道上?
实现车道级定位,通常有三种方法:
- 高精地图匹配:把GPS/IMU定位结果投影到高精地图上,找到最近的车道。简单,但依赖地图精度。
- 视觉车道线检测:用相机检测车道线,结合车辆横向偏移量,确定车道。不依赖地图,但受天气和光照影响。
- 多传感器融合:把地图匹配、视觉车道线、毫米波雷达路沿检测融合在一起。最鲁棒,也最复杂。
我推荐第三种。为什么呢?因为单一传感器总有失效的时候。比如雨天,车道线被积水覆盖,视觉就废了。但高精地图匹配还能用。再比如地图没更新,车道线改了,视觉又能顶上。
车道级定位的精度要求:
- 横向误差:< 0.2米(保证不压线)
- 纵向误差:< 1.0米(保证路口判断准确)
- 航向误差:< 1度(保证变道轨迹平滑)
核心思路:车道级定位不是「定位」问题,而是「匹配」问题。你不需要知道绝对坐标有多准,你只需要知道相对于车道线,你在哪。
好了,第三章就到这里。下一章我们聊聊感知——怎么让车「看」懂这个世界。记住,定位是自动驾驶的基石,没有精准的定位,后面的规划和控制都是空中楼阁。
课后思考:如果GPS完全失效,IMU漂移严重,高精地图也过时了,你还能用什么方法实现车道级定位?提示:想想路边的交通杆、路灯、建筑物轮廓……