第一讲:课程导论与预备知识
各位同学好,我是你们这门课的主讲。在机器人行业摸爬滚打了十几年,从最早的激光SLAM做到现在的多传感器融合,踩过的坑确实不少。今天咱们开始第一讲,先把地基打牢。
说实话,多传感器融合路径规划这个方向,这几年越来越热。自动驾驶、AGV、无人机,哪个领域都离不开它。但很多新手一上来就盯着算法看,忽略了基础,结果后面越学越吃力。我个人习惯是,先把整个知识地图铺开,再一步步深入。
1.1 什么是多传感器融合路径规划?
说白了,就是让机器人知道「我在哪」、「周围有什么」、「该怎么走」这三个问题。单个传感器总有短板——激光雷达怕雨雾,相机怕光照变化,IMU有漂移。多传感器融合,就是取长补短。
举个例子。我之前做AGV项目时,只用激光雷达做定位,结果在长走廊里经常丢失。后来加了轮式里程计和IMU,定位稳定性明显提升。嗯,这就是融合的价值。
1.2 应用场景
我挑三个最典型的场景说说:
- 自动驾驶:需要融合GPS、IMU、激光雷达、摄像头、毫米波雷达。城市道路中,GPS信号会被高楼遮挡,这时候就需要视觉和激光雷达做联合定位。我在测试时遇到过GPS跳变十几米的情况,全靠融合算法兜底。
- AGV/AMR:工厂里的移动机器人。环境相对结构化,但金属货架会干扰激光雷达。我建议至少融合激光、IMU和轮式编码器。成本可控,效果也够用。
- 无人机:空中飞行器,动态性强。GPS室外可用,但室内或桥下就得靠视觉+IMU。我记得有个项目,无人机在桥底飞行,GPS完全失效,全靠VIO撑着。
1.3 课程大纲与学习路径
这门课一共30章,我按「基础→核心→进阶→实战」四个阶段来组织:
| 阶段 | 章节 | 核心内容 |
|---|---|---|
| 基础 | 1-5 | 数学基础、ROS2环境、传感器模型、坐标变换 |
| 核心 | 6-15 | 卡尔曼滤波、图优化、多传感器时空同步、路径规划算法 |
| 进阶 | 16-25 | 语义SLAM、动态环境规划、故障检测与降级策略 |
| 实战 | 26-30 | 完整项目:自动驾驶泊车、AGV调度、无人机巡检 |
学习路径上,我建议你按顺序来。跳过基础直接看核心,很容易卡住。我曾经带过一个实习生,上来就啃图优化,结果连雅可比矩阵都推导不明白,又回头补线性代数。
1.4 数学基础
做多传感器融合,数学是绕不开的。但别怕,咱们用到的就两块:
线性代数
- 矩阵运算:旋转矩阵、变换矩阵、协方差矩阵。说白了就是描述位置和不确定性。
- 特征值与特征向量:PCA降维、协方差分析时会用到。
- 最小二乘:优化问题的核心。你想想看,SLAM后端本质上就是个大规模最小二乘问题。
概率论
- 高斯分布:传感器噪声建模的基础。我习惯用多元高斯分布来描述状态的不确定性。
- 贝叶斯公式:卡尔曼滤波的底层逻辑。先验+观测=后验,就这么简单。
- 最大似然估计:参数估计的常用方法。图优化里用的就是它。
小提示:如果你线性代数有点生疏,我建议花一周时间复习一下矩阵求导和坐标变换。概率论重点看高斯分布和贝叶斯公式。这两块搞定了,后面90%的公式你都能看懂。
1.5 编程环境搭建
这门课统一用ROS2 + Python。为什么选ROS2?因为它是目前机器人领域的事实标准,而且支持多传感器数据流的实时处理。Python则方便快速验证算法。
环境要求
- 操作系统:Ubuntu 22.04 LTS
- ROS2版本:Humble Hawksbill
- Python版本:3.10+
- 依赖库:numpy, scipy, matplotlib, opencv-python, tf-transformations
安装步骤
我整理了一份快速安装脚本,你照着跑就行:
# 1. 安装ROS2 Humble
sudo apt update
sudo apt install ros-humble-desktop
# 2. 安装Python依赖
pip install numpy scipy matplotlib opencv-python
# 3. 安装tf相关工具
sudo apt install ros-humble-tf2-tools
# 4. 验证安装
source /opt/ros/humble/setup.bash
ros2 run tf2_echo /map /base_link
注意:我曾经遇到过Python版本冲突的问题。建议用虚拟环境管理依赖,避免和系统Python打架。另外,ROS2的source命令要加到.bashrc里,不然每次开终端都得手动执行。
测试环境
装好后,跑一个简单的发布-订阅测试:
# 终端1:启动发布节点
ros2 run demo_nodes_cpp talker
# 终端2:启动订阅节点
ros2 run demo_nodes_py listener
如果能看到「I heard: Hello World」之类的输出,说明环境没问题。
1.6 避坑指南
最后,分享几个我踩过的坑:
- 时间同步:多传感器数据必须对齐时间戳。我早期做项目时没注意,结果融合出来的轨迹全是锯齿。后来加了硬件同步才解决。
- 坐标系统一:每个传感器都有自己的坐标系。一定要先做标定,再谈融合。否则数据都是乱的。
- 不要过度依赖仿真:仿真环境太干净了。真实场景有噪声、有遮挡、有延迟。我建议尽早拿真实传感器跑数据。
好了,第一讲就到这里。下一讲咱们开始聊传感器模型,把激光雷达、相机、IMU的数学模型讲透。记得先把环境搭好,后面咱们要动手写代码了。