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 / LiDAR / IMU 融合定位整体框架 感知层 GNSS 接收机 LiDAR 激光雷达 IMU 惯性测量单元 轮速/相机 预处理层 时间同步 / 坐标转换 点云去畸变 / 滤波 IMU 预积分 / 零偏估计 外参标定 前端里程计层 GNSS 定位解算 LiDAR 点云配准 IMU 机械编排 视觉里程计 后端融合层 ESKF / 卡尔曼滤波 因子图 / 滑动窗口优化 故障检测与鲁棒核 输出:连续位姿、速度、零偏、协方差、健康状态

从图中可以看到,融合不是简单地把三个结果平均,而是先做时间同步、坐标统一和外参标定,再分别形成前端约束,最后在后端以概率方式联合估计。输出不仅是位姿,还包括协方差和健康状态,供决策模块判断是否可信。

四、典型应用场景与工程指标

融合定位的价值最终体现在场景中。不同场景对精度、连续性、实时性和成本的要求差异很大。

  • 自动驾驶:城市道路要求分米级到厘米级、高频连续输出,GNSS+IMU+LiDAR是主流组合,隧道内靠IMU和LiDAR维持。
  • 机器人巡检:园区、变电站、地下管廊,GNSS可能完全不可用,LiDAR+IMU成为核心,需处理长走廊退化。
  • 无人机:重量和功耗敏感,常用GNSS+IMU+视觉,LiDAR用于高精度测绘或避障。
  • 精准农业与工程机械:RTK GNSS+IMU提供航向和姿态,LiDAR用于地形感知与障碍物检测。
  • 室内外无缝定位:GNSS在室外,LiDAR/视觉在室内,IMU负责过渡,关键是切换时的平滑与一致性。
常见误区:认为“融合就是精度更高的传感器主导”。实际上,融合系统的鲁棒性来自对每个传感器不确定性的正确建模。若把LiDAR位姿当作绝对真值,GNSS中断时系统仍可能因点云退化而发散。

五、本课程的学习目标与知识路线

完成本课程后,你应能够:

  1. 解释GNSS、LiDAR、IMU的观测模型、误差来源与适用边界;
  2. 完成多传感器时间同步、坐标系转换与外参标定;
  3. 实现IMU预积分、LiDAR点云配准与GNSS定位解算;
  4. 构建松耦合与紧耦合融合系统,并理解ESKF与因子图优化的联系;
  5. 针对城市峡谷、隧道、长走廊等场景设计鲁棒策略;
  6. 使用真实数据集完成融合定位的评测与调参。

后续章节将沿着“传感器基础—预处理—前端—后端—工程实战”的主线展开。建议在学习过程中同步搭建代码环境,把每一章的算法落到可运行的程序里。下面给出一个典型的工程目录结构,便于你提前规划代码组织。

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章的内容才能形成一个有机整体,而不是零散知识点的堆叠。