明白 ✅。你现在做的是 LHD自动驾驶,核心技术是 SLAM、LiDAR、ROS、感知与规划控制。这类项目涉及“工程落地 + 学术算法 + 安全规范”三大方面。我给你一个循序渐进的学习方案(从基础到应用),并附带开源项目推荐,方便你快速上手和进阶。
🔑 学习路线总览
阶段 | 学习方向 | 学习目标 | 推荐资料/工具 |
---|---|---|---|
基础打牢 | Linux、C++、ROS、数学 | 能在ROS中写节点,掌握坐标变换、滤波、优化 | ROS Wiki、tf2、Eigen |
传感器原理与标定 | LiDAR、IMU、相机、同步 | 理解原理,完成标定与数据融合 | Kalibr、Livox/Ouster SDK |
定位与建图 | SLAM算法(激光/视觉/融合) | 能在矿山巷道环境中跑通SLAM并抗退化 | LIO-SAM、FAST-LIO2、LOAM、LOCUS |
路径规划与控制 | 局部/全局规划、轨迹跟踪 | 能让车辆在窄巷道中安全运行 | A*、DWA、MPC、TEB |
系统集成与安全 | ROS多机、通信、冗余、急停 | 搭建矿山安全可靠的原型系统 | DDS、ROS2、CAN总线 |
工程化与扩展 | 矿山车队管理、安全规范 | 与真实矿车对接,符合工业安全标准 | Hexagon CAS、矿山调度系统 |
🧭 详细学习方案
1. 基础打牢(1-2个月)
- Linux & Shell:学会编译、调试、系统服务(Ubuntu 20.04/22.04)
- C++11/14/17:模板、STL、多线程、智能指针,ROS代码必备
- ROS/ROS2:话题(topic)、服务(service)、动作(action)、tf2
- 数学基础:李代数(SE(3)、SO(3))、EKF/UKF 卡尔曼滤波、非线性优化
📖 推荐:
- 《Programming Robots with ROS》
- 《State Estimation for Robotics》 (ETH Zurich 课程)
- ROS Wiki、清华/中科院开源课程
2. 传感器与标定(1个月)
- LiDAR:点云结构、去畸变、运动补偿(Ouster/Velodyne/RoboSense)
- IMU:零偏、噪声模型、积分漂移
- 相机(若有):针孔模型、内外参、畸变校正
- 多传感器同步:硬件时间戳/PTP,软件ROS时间同步
- 标定:外参标定(lidar-imu、lidar-camera、imu-camera)
📖 推荐:
- ETH 的 Kalibr 标定工具
- A-LOAM + Livox Horizon 教程
3. 定位与建图(2-3个月,核心)
重点:煤矿巷道 SLAM 退化环境(重复结构、无纹理、粉尘)
- 纯激光 SLAM:LeGO-LOAM、A-LOAM(适合起步)
- 激光-IMU 融合:LIO-SAM、FAST-LIO2(鲁棒性强,推荐)
- 矿山/地下专用:LOCUS(MIT DARPA SubT 队伍开源)
- 回环检测:Scan Context、基于特征描述子
📖 推荐:
- LIO-SAM 论文与代码
- FAST-LIO2 GitHub
- LOCUS 2.0 论文(Robotics: Science and Systems, RSS)
4. 路径规划与运动控制(2个月)
全局规划:A*、Dijkstra、Hybrid A*(适合窄巷道)
局部规划:DWA(动态窗口法)、TEB(时间弹性带)
控制方法:
- 低速:PID/Stanley 控制
- 矿车推荐:MPC(模型预测控制,处理约束)
障碍物处理:基于Octomap/栅格地图的避障
📖 推荐:
- Practical Search Techniques in Robotics(A*、Hybrid A*)
- ROS Navigation2 框架
5. 系统集成与安全(并行进行)
- ROS 多机通信:车端-地面站分布式架构
- 实时性优化:RT kernel、ROS2 DDS
- CAN 总线:与车辆底盘控制交互(驱动、刹车、铲斗)
- 安全回路:急停、冗余通信链路
- 矿山专用:人机隔离、区域限速、远程遥控
📖 推荐:
- ROS2 DDS 实时通信
- Autoware.Auto 架构文档
6. 工程化与扩展
- 车队管理:多机调度、任务下发、交通管制
- 地图维护:全矿区高精地图(离线SLAM+人工修正)
- 安全认证:ISO 3691-4(工业车辆安全要求)、矿山国家标准
🚀 推荐开源项目(直接能上手的)
- LIO-SAM – 激光+IMU紧耦合SLAM,ROS1
- FAST-LIO2 – 高效激光惯性里程计,适合实时矿车
- LeGO-LOAM – 轻量级激光里程计,适合初学者
- LOCUS 2.0 – 专为地下/隧道环境设计的SLAM
- Autoware.Auto – 开源自动驾驶平台(可借鉴规划与控制)
- Navigation2 – ROS2 下的路径规划与导航框架
⚒️ 学习建议:
- 如果时间有限:建议先快速跑通 LeGO-LOAM → LIO-SAM → FAST-LIO2,再结合矿山场景调优。
- 并行学习 规划控制(Navigation2 + MPC) 与 ROS2 多机通信。
- 工程落地阶段,重点解决 时间同步 + 通信稳定性 + 急停安全链路。
要不要我帮你整理一份 “3个月速成学习计划表”,按周划分学习内容和目标?这样你可以边学边在项目里上手调试。
明白 ✅。你已经具备 ROS + C++ + Linux 基础,可以把第一阶段简单带过,重点放在 传感器标定 → SLAM建图与定位(FAST-LIO2为核心) → 路径规划与控制 → 系统集成与安全,并结合你们 Ouster OS1-32 双雷达(车头/车尾) 的配置展开。下面给你一个 定制化学习与实现方案。
🔑 学习路线(基于你现有基础)
阶段 | 目标 | 内容 | 工具/项目 |
---|---|---|---|
0. 已有基础 | ✔ 已掌握 ROS / C++ / Linux | 只需保持熟练度 | ROS Wiki, Eigen |
1. 传感器标定与同步 | 双雷达 + IMU 时间/外参精确对齐 | 时间同步、外参标定、点云融合 | Kalibr, hand-eye 标定工具 |
2. SLAM(FAST-LIO2) | 实现高鲁棒性里程计与建图 | Ouster 双雷达数据 → FAST-LIO2 → 矿山建图 | FAST-LIO2, ScanContext |
3. 回环检测与地图优化 | 巷道退化环境下保持全局一致性 | 回环检测、图优化 | ScanContext, GTSAM |
4. 路径规划与控制 | 自动装载/运输 → 点到点运行 | 全局规划(A* / Hybrid A*) + 局部规划(TEB / MPC) | Navigation2, MPC |
5. 系统集成与安全 | 可靠性 + 工程落地 | ROS2多机、急停、车控接口、矿山安全机制 | DDS, CAN总线, 安全回路 |
6. 工程扩展 | 多机协同、车队调度 | 任务分配、交通管制 | 多机ROS2, 简易调度平台 |
🥽 1. 传感器标定与同步(Ouster OS1-32 双雷达 + IMU)
目标
- 两个 Ouster 激光雷达(前/后)与 IMU(可能内置或独立) 时间同步 + 外参标定
- 确保点云去畸变正确,避免 SLAM 漂移
学习与操作要点
时间同步
- Ouster OS1-32 支持 PPS + NTP/PTP(IEEE-1588) 硬件同步。
- 如果两个雷达 + IMU 在一台工控机上,建议使用 硬件触发线 或 PTP,避免 ROS 时间戳误差。
- 在 bag 文件中同时输出
/os_cloud_node/imu
,/os_cloud_node/points
并检查时间戳差。
外参标定
标定车头雷达 → 车体坐标系,车尾雷达 → 车体坐标系。
工具:
- Kalibr(支持 lidar-imu/camera-imu)
- 手动标定:对准特征点,计算旋转和平移矩阵。
推荐采用 静态标定 + 动态验证:采集数据跑 FAST-LIO2,看双雷达点云是否对齐。
点云融合
- 将两个雷达点云通过外参
tf
转到车体坐标系,发布/merged_cloud
。 - ROS 节点可用 pcl_ros / pcl_conversions,或用 ouster_multi_lidar_ros。
- 将两个雷达点云通过外参
🛰️ 2. SLAM – FAST-LIO2 为核心
为什么用 FAST-LIO2?
- 适合 Ouster OS1-32(高线束、带 IMU),算法高效,点云与 IMU 紧耦合
- 在粉尘、重复巷道环境下鲁棒性比 LOAM / LIO-SAM 强
学习与落地路径
单雷达验证
- 先用车头雷达 + IMU 在巷道中跑 FAST-LIO2,看轨迹/地图是否稳定。
双雷达融合
将前/后雷达点云融合为一个输入,送入 FAST-LIO2:
- 优点:减少遮挡,避免后退时点云退化。
- 方法:在
/merged_cloud
发布点云,作为velodyne_points
输入。
地图优化
FAST-LIO2 自带里程计建图,但缺乏全局回环。
增强方案:
- Scan Context:轻量级回环检测
- 图优化(GTSAM/ceres)来做闭环优化
推荐:FAST-LIO2 + Scan Context → 构建矿山全局一致地图。
🗺️ 3. 回环检测与地图优化
目标
解决 矿井巷道长、重复结构导致漂移 问题。
推荐方法
- Scan Context(描述子回环检测):开源实现,能在重复结构中找到相似帧。
- Pose Graph Optimization(PGO):用 GTSAM 优化全局轨迹。
- 工程实现:FAST-LIO2 → 输出里程计 → Scan Context → 闭环约束 → GTSAM优化。
🚗 4. 路径规划与控制
全局规划(矿山隧道适配)
- 基础:A* / Dijkstra
- 窄巷道/倒车场景:Hybrid A*(考虑非完整约束)
局部规划与避障
- TEB(Timed Elastic Band):处理动态约束(速度/转向角限制)
- MPC(Model Predictive Control):适合矿车这种重载车辆,有动力学模型
实际建议
- 矿车低速(5-15km/h),可以先 A + TEB* 快速实现;
- 再升级为 Hybrid A + MPC*,考虑车辆动力学与重载情况。
🔒 5. 系统集成与安全
关键要点
急停安全回路
- 独立于 ROS 通信,硬件急停(CAN/IO 控制),即使主机死机也能停车。
通信冗余
- Wi-Fi/5G + 工业环网,确保远程遥控稳定。
ROS2 多机通信
- 建议最终迁移 ROS2(DDS,实时性好),车端 <-> 地面站分布式架构。
车控接口
- 通过 CAN 总线控制转向、加速、刹车、铲斗动作;
- 需写 ros_can_bridge,把规划轨迹转化为底盘控制指令。
🏗️ 6. 工程扩展(车队管理)
- 交通管制:类似 Sandvik AutoMine,基于区域锁定与任务调度。
- 任务分配:调度中心下发“挖装 → 行驶 → 倒矿”任务。
- 安全监控:UWB 标签 / RFID 实现人机隔离。
🚀 开源项目推荐(结合你的设备与需求)
- FAST-LIO2 – 激光-IMU 紧耦合,主力算法
👉 FAST-LIO2 GitHub - Scan Context – 回环检测增强 FAST-LIO2
👉 Scan Context GitHub - LIO-SAM – 激光-IMU因子图SLAM,可参考回环机制
👉 LIO-SAM GitHub - Navigation2 – ROS2 路径规划与导航框架
👉 Navigation2 GitHub - MPC Controller (ros-mpc) – 可用于矿车轨迹跟踪
👉 MPC for ROS - Autoware.Auto – 自动驾驶全栈,借鉴架构与规划模块
👉 Autoware GitHub
✅ 总结(你的路线):
- 现在(第1步):Ouster双雷达标定 + 时间同步,输出融合点云
- 近期(第2步):FAST-LIO2 跑通单雷达,再加 Scan Context 做闭环
- 中期(第3步):基于 Navigation2 + MPC 实现点到点运行
- 长期(第4步):ROS2多机、任务调度、矿山安全体系
要不要我帮你整理一份 “三个月实施计划(按周分目标)”,方便你边学边在矿车上测试?
👌好,我们把原来的 3个月计划细化到 5个月(20周),并且给你 每周学习资料 + 推荐开源项目 + 必做实验,这样你可以直接照 checklist 推进。目标是:
👉 20周后,你们能在真实矿车上完成自动驾驶原型(SLAM+规划+控制+安全),并具备扩展多机调度的基础。
📅 五个月实施计划(20周)
🔹 阶段一:传感器标定与数据管线(第1-4周)
目标:双雷达+IMU 正确对齐,能输出融合点云
第1周
学习 Ouster OS1-32 官方 ROS SDK
在实验环境采集
/os_cloud_node/points
,/os_cloud_node/imu
必做实验:用 RViz 显示点云,确认线数、视场角、点云密度
第2周
学习 ROS
tf
与坐标系转换- 📚 ROS TF 教程
建立
lidar_front → base_link
,lidar_rear → base_link
必做实验:静态标定车头/车尾雷达位置 → RViz 检查是否重合
第3周
学习传感器时间同步(PTP / PPS)
- 📚 Ouster time synchronization whitepaper
确认 IMU 与雷达时间戳误差 < 1ms
必做实验:在
bag
中对比/imu
和/points
时间戳
第4周
学习点云融合(PCL + ROS)
写 ROS 节点 → 输出
/merged_cloud
必做实验:车辆前进/后退采集数据,验证点云无错位
🔹 阶段二:SLAM 与建图(第5-10周)
目标:FAST-LIO2 + 双雷达建图,解决回环漂移
第5周
学习 FAST-LIO2 架构
用车头雷达跑 FAST-LIO2(无回环)
必做实验:在巷道内跑 200m,评估轨迹精度
第6周
- 将双雷达
/merged_cloud
输入 FAST-LIO2 - 调整 IMU 噪声参数、点云降采样
- 必做实验:对比单雷达 vs 双雷达轨迹漂移
第7周
学习 Scan Context 回环检测
必做实验:在长隧道中回到起点 → 检查是否触发回环
第8周
学习 GTSAM 图优化
集成 Scan Context + GTSAM → 闭环优化
必做实验:构建闭环轨迹,检查全局漂移改善
第9周
学习 Octomap / Occupancy Grid
将 FAST-LIO2 轨迹转化为占据栅格地图
必做实验:在 RViz 中生成矿区 3D 栅格地图
第10周
- 定位模式测试(LIO-Mapping / AMCL)
- 必做实验:在已有地图上重新运行 → 检查实时定位是否准确
🔹 阶段三:路径规划与控制(第11-16周)
目标:点到点导航(A* 全局 + 局部规划 + 控制器)
第11周
学习 Navigation2 全局规划
使用 A* / Dijkstra 规划矿区路径
必做实验:在 RViz 显示全局路径
第12周
学习局部规划(DWA / TEB)
- 📚 TEB ROS
必做实验:仿真环境中绕开障碍物行驶
第13周
学习 Hybrid A*(适合狭窄巷道、倒车场景)
必做实验:狭窄巷道掉头测试
第14周
学习控制方法(PID / Stanley 控制器)
必做实验:矿车直线 + 弯道跟踪
第15周
学习 MPC(预测控制)
必做实验:负载工况下运行曲线路径,验证平滑性
第16周
- 集成:全局规划(Hybrid A*) + 局部规划(TEB/MPC)
- 必做实验:点到点任务(装载点 → 倒矿点)
🔹 阶段四:系统集成与安全(第17-20周)
目标:工程落地(车控接口+急停+调度)
第17周
学习 CAN 总线与 ROS 桥接
- 📚 socketCAN + ros_canopen
必做实验:用 ROS 控制车辆油门/刹车/转向
第18周
急停安全机制
- 硬件急停按钮 → 独立 IO 控制 → 断电制动
必做实验:运行过程中触发急停,车辆能立即停下
第19周
学习 ROS2 多机通信(DDS)
地面站 ↔ 矿车:任务下发 + 状态回传
必做实验:远程下发“从点A行驶到点B”
第20周
系统联调
- 载入地图
- 下发导航任务
- 矿车执行任务 + 返回状态
必做实验:全流程演示(建图 → 定位 → 路径规划 → 轨迹跟踪 → 急停 → 恢复)
📦 阶段成果总结
- 第1-4周 → 稳定的双雷达+IMU 融合点云
- 第5-10周 → FAST-LIO2 SLAM + 回环优化 + 占据栅格地图
- 第11-16周 → 矿车点到点自动驾驶(A* + Hybrid A* + MPC)
- 第17-20周 → 工程化雏形(车控接口 + 安全 + 地面站调度)
✅ 最终结果:
20周后,你将拥有一个 井下矿车自动驾驶原型系统:
- 能在复杂巷道环境建图/定位
- 能规划点到点路径并执行
- 支持急停、安全冗余
- 能与地面站交互,支持调度