1. 课程导入
欢迎进入《GNSS LiDAR IMU融合定位工程》课程。本章不急于推导公式,而是先建立一张“全局地图”:我们要解决什么问题、三种传感器各自擅长什么、融合定位系统由哪些模块构成、最终能落地到哪些场景。只有先看清整体,后续学习卡尔曼滤波、时间同步、外参标定、因子图优化时,才不会陷入“只见树木不见森林”的困境。
一、为什么要融合:单一传感器的能力边界
定位的本质是回答“我在哪里、我朝哪里、我动得多快”。GNSS、LiDAR、IMU分别从不同物理维度回答这个问题,但都存在明显短板。
- GNSS:提供全球绝对位置,长期无漂移,但城市峡谷、隧道、地下车库中信号遮挡或多路径严重,输出会跳变甚至中断;单点定位米级,RTK可到厘米级但依赖差分链路。
- LiDAR:通过激光点云匹配(如ICP、NDT)获得高精度相对位姿和三维环境结构,不依赖外部信号,但点云稀疏、退化场景(长走廊、空旷广场)易失配,且无法直接给出绝对坐标。
- IMU:高频输出角速度和加速度,短时相对运动估计平滑、响应快,但积分会累积漂移,零偏随温度和时间变化,单独使用几分钟内即不可用。
三者恰好形成互补:GNSS给绝对基准,LiDAR给高精度相对约束与环境结构,IMU给高频平滑与短时兜底。融合定位的目标,就是用统一的状态估计框架,把不同频率、不同噪声特性、不同坐标系的观测“拧成一股绳”,在遮挡、退化、动态等复杂条件下仍保持连续、可靠、可用的位姿输出。
二、核心概念:状态、观测、坐标系与融合层次
在进入工程实现前,需要先统一几个核心概念。
| 概念 | 含义 | 典型表示 |
|---|---|---|
| 状态量 | 待估计的位姿、速度、零偏等 | 位置p、姿态q、速度v、陀螺零偏bg、加计零偏ba |
| 观测 | 传感器提供的测量 | GNSS经纬高、LiDAR点云/匹配位姿、IMU角速度与比力 |
| 坐标系 | 描述位姿的参考框架 | ECEF、ENU、车体/IMU系、LiDAR系、相机系 |
| 融合层次 | 数据在哪个阶段结合 | 数据级、特征级、决策级;松耦合、紧耦合、深耦合 |
| 时间同步 | 不同传感器时间戳对齐 | 硬件触发、PPS、时间戳插值 |
其中,松耦合把各传感器先独立解算再融合,结构简单但鲁棒性有限;紧耦合直接使用原始观测(如GNSS伪距、LiDAR点到面残差)进入滤波器或优化器,在卫星数不足时仍能工作;深耦合则进一步将GNSS信号跟踪与惯性导航结合,抗干扰能力最强,工程复杂度也最高。本课程会从松耦合入手,逐步过渡到紧耦合与因子图优化。
三、整体框架:从传感器到可用位姿
一个典型的融合定位系统可以划分为五层:感知层、预处理层、前端里程计层、后端融合层和输出层。下面的SVG展示了这一整体数据流与模块关系。
从图中可以看到,融合不是简单地把三个结果平均,而是先做时间同步、坐标统一和外参标定,再分别形成前端约束,最后在后端以概率方式联合估计。输出不仅是位姿,还包括协方差和健康状态,供决策模块判断是否可信。
四、典型应用场景与工程指标
融合定位的价值最终体现在场景中。不同场景对精度、连续性、实时性和成本的要求差异很大。
- 自动驾驶:城市道路要求分米级到厘米级、高频连续输出,GNSS+IMU+LiDAR是主流组合,隧道内靠IMU和LiDAR维持。
- 机器人巡检:园区、变电站、地下管廊,GNSS可能完全不可用,LiDAR+IMU成为核心,需处理长走廊退化。
- 无人机:重量和功耗敏感,常用GNSS+IMU+视觉,LiDAR用于高精度测绘或避障。
- 精准农业与工程机械:RTK GNSS+IMU提供航向和姿态,LiDAR用于地形感知与障碍物检测。
- 室内外无缝定位:GNSS在室外,LiDAR/视觉在室内,IMU负责过渡,关键是切换时的平滑与一致性。
五、本课程的学习目标与知识路线
完成本课程后,你应能够:
- 解释GNSS、LiDAR、IMU的观测模型、误差来源与适用边界;
- 完成多传感器时间同步、坐标系转换与外参标定;
- 实现IMU预积分、LiDAR点云配准与GNSS定位解算;
- 构建松耦合与紧耦合融合系统,并理解ESKF与因子图优化的联系;
- 针对城市峡谷、隧道、长走廊等场景设计鲁棒策略;
- 使用真实数据集完成融合定位的评测与调参。
后续章节将沿着“传感器基础—预处理—前端—后端—工程实战”的主线展开。建议在学习过程中同步搭建代码环境,把每一章的算法落到可运行的程序里。下面给出一个典型的工程目录结构,便于你提前规划代码组织。
fusion_localization/
├── config/
│ ├── sensors.yaml # 传感器频率、噪声、外参
│ └── fusion.yaml # 滤波器与优化参数
├── data/
│ ├── gnss/ # 原始观测与星历
│ ├── lidar/ # 点云包
│ └── imu/ # 高频IMU数据
├── src/
│ ├── preprocess/ # 时间同步、去畸变、标定
│ ├── frontend/ # GNSS解算、点云配准、IMU预积分
│ ├── backend/ # ESKF、因子图优化
│ └── eval/ # 轨迹评估与可视化
└── launch/
└── run_fusion.launch
最后强调一个贯穿全课的原则:先明确状态定义与坐标系,再谈算法。大量工程问题并非来自滤波器本身,而是来自时间戳错位、外参符号错误、坐标系混淆。把本章的框架图当作后续学习的索引,每进入一个新模块,都回到这张图上确认它处于哪一层、输入输出是什么、与哪些模块耦合。这样,30章的内容才能形成一个有机整体,而不是零散知识点的堆叠。