1. 激光雷达与IMU组合定位概述
在自动驾驶和机器人定位领域,激光雷达(LiDAR)和惯性测量单元(IMU)的组合定位已经成为主流技术方案。激光雷达通过发射激光束并接收反射信号来感知环境,能够提供高精度的三维点云数据;IMU则通过陀螺仪和加速度计测量物体的角速度和线加速度,具有高频输出的特点。
1.1 传感器特性对比
激光雷达和IMU在定位中各具优势:
- 激光雷达:精度高(厘米级),但受环境影响大(雨雪、雾霾等天气会降低性能),输出频率较低(通常10Hz)
- IMU:输出频率高(100-500Hz),不受环境影响,但存在累积误差,长时间使用精度下降
1.2 组合定位的必要性
单独使用任一种传感器都存在明显缺陷:
- 纯激光雷达定位在特征缺失环境(如长隧道)会失效
- 纯IMU定位误差会随时间累积,不适合长时间精确定位
- 二者组合可以优势互补,实现全天候、高精度的定位
2. 松耦合与紧耦合方案对比
2.1 松耦合方案
松耦合方案中,激光雷达和IMU各自独立运行定位算法,然后通过滤波框架(如卡尔曼滤波)融合结果。典型代表有:
- IMU-AHFLO算法:国防科技大学提出,使用EKF融合激光里程计和IMU数据
- Cartographer算法:Google开发,前端使用UKF融合2D激光雷达和IMU数据
松耦合特点:
- 实现简单
- 模块化程度高
- 信息利用率较低
2.2 紧耦合方案
紧耦合方案将激光雷达和IMU数据共同构建优化问题求解。典型算法包括:
- LINS算法:香港科技大学提出,使用迭代误差状态卡尔曼滤波
- FAST-LIO系列:香港大学Mars实验室开发,基于迭代卡尔曼滤波框架
- LIO-SAM算法:基于因子图模型实现多传感器紧耦合
紧耦合特点:
- 信息利用率高
- 定位精度更高
- 实现复杂度高
3. IMU-AHFLO算法详解
3.1 算法框架
IMU-AHFLO算法采用松耦合架构,主要流程包括:
- IMU高频预测:基于车辆运动学模型和IMU数据预测位姿
- 激光雷达低频观测:通过点云匹配获得位姿观测值
- EKF融合:将预测和观测结果通过扩展卡尔曼滤波融合
3.2 坐标系定义
算法涉及三个关键坐标系:
- 世界坐标系{W}:固定"东北天"坐标系
- 车体坐标系{B}:与IMU坐标系重合
- 激光雷达坐标系{L}:通过外参标定与车体坐标系关联
3.3 状态预测
3.3.1 角度预测
基于IMU角速度数据,通过李群理论推导姿态更新:
θ_k^WB = θ_{k-1}^WB + J_l^{-1}(θ_{k-1}^WB) * (Bω_k^WB Δt)
其中J_l为左雅可比矩阵,用于李群到李代数的转换。
3.3.2 位移预测
利用轮速计数据计算位移:
p_k^WB = p_{k-1}^WB + R_k^WB * [Δs, 0, 0]^T
Δs为左右轮速计测量位移的平均值。
3.4 观测模型
考虑激光里程计算滞后性,观测方程设计为:
z_k = [θ_m; p_m] + [补偿项]
补偿项基于[t_i,t_l]时间段内的IMU数据计算,修正激光雷达观测与当前时刻的偏差。
3.5 EKF实现
3.5.1 预测步骤
状态转移矩阵F包含:
- F_θθ:姿态转移雅可比
- F_pθ:位置对姿态的雅可比
先验协方差计算:
P̄_k = F P_{k-1} F^T + R
3.5.2 更新步骤
卡尔曼增益计算:
K_k = P̄_k H^T (H P̄_k H^T + Q)^
状态更新:
x̂_k = x̄_k + K_k (z_k - h(x̄_k))
3.6 性能评估
实测结果表明:
- 结构化道路:平均相对位置误差0.31%
- 越野场景:平均相对位置误差0.93%
4. 紧耦合算法进阶
4.1 基于滤波的紧耦合
代表算法:
- LINS:迭代误差状态卡尔曼滤波
- FAST-LIO:迭代卡尔曼滤波框架
特点:
- 在线性化近似下工作
- 仍有累积误差问题
4.2 基于优化的紧耦合
代表算法:
- LIO-SAM:因子图优化框架
- LIO-mapping:结合旋转约束建图
特点:
- 构建全局一致性优化
- 精度更高但计算量更大
5. 工程实践建议
5.1 传感器标定
精确的传感器标定是组合定位的基础:
- IMU内参标定(零偏、尺度因子等)
- LiDAR-IMU外参标定(手眼标定)
- 轮速计标定(轮径、轴距等)
5.2 时间同步
多传感器时间同步至关重要:
- 硬件同步(PPS信号)
- 软件时间对齐
- 运动补偿(点云去畸变)
5.3 异常处理
实际部署需考虑:
- 激光雷达失效检测与恢复
- IMU零偏在线估计
- 运动约束合理应用
6. 未来发展方向
组合定位技术仍在快速发展:
- 深度学习辅助的传感器融合
- 多模态紧耦合优化
- 面向大规模场景的长期定位
- 低成本传感器组合方案
在实际项目中,建议根据应用场景选择合适的技术路线。对计算资源有限、实时性要求高的场景,松耦合方案仍是可靠选择;对精度要求极高的场景,则推荐采用紧耦合方案。