明白 ?。你現在做的是 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
- 📚 ouster_example
-
在實驗環境采集
/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)
- 📚 PCL Tutorial
-
寫 ROS 節點 → 輸出
/merged_cloud
-
必做實驗:車輛前進/后退采集數據,驗證點云無錯位
🔹 階段二:SLAM 與建圖(第5-10周)
目標:FAST-LIO2 + 雙雷達建圖,解決回環漂移
第5周
-
學習 FAST-LIO2 架構
- 📚 FAST-LIO2 GitHub
-
用車頭雷達跑 FAST-LIO2(無回環)
-
必做實驗:在巷道內跑 200m,評估軌跡精度
第6周
- 將雙雷達
/merged_cloud
輸入 FAST-LIO2 - 調整 IMU 噪聲參數、點云降采樣
- 必做實驗:對比單雷達 vs 雙雷達軌跡漂移
第7周
-
學習 Scan Context 回環檢測
- 📚 ScanContext GitHub
-
必做實驗:在長隧道中回到起點 → 檢查是否觸發回環
第8周
-
學習 GTSAM 圖優化
- 📚 GTSAM factor graph tutorial
-
集成 Scan Context + GTSAM → 閉環優化
-
必做實驗:構建閉環軌跡,檢查全局漂移改善
第9周
-
學習 Octomap / Occupancy Grid
- 📚 Octomap ROS
-
將 FAST-LIO2 軌跡轉化為占據柵格地圖
-
必做實驗:在 RViz 中生成礦區 3D 柵格地圖
第10周
- 定位模式測試(LIO-Mapping / AMCL)
- 必做實驗:在已有地圖上重新運行 → 檢查實時定位是否準確
🔹 階段三:路徑規劃與控制(第11-16周)
目標:點到點導航(A* 全局 + 局部規劃 + 控制器)
第11周
-
學習 Navigation2 全局規劃
- 📚 Nav2 Documentation
-
使用 A* / Dijkstra 規劃礦區路徑
-
必做實驗:在 RViz 顯示全局路徑
第12周
-
學習局部規劃(DWA / TEB)
- 📚 TEB ROS
-
必做實驗:仿真環境中繞開障礙物行駛
第13周
-
學習 Hybrid A*(適合狹窄巷道、倒車場景)
- 📚 Hybrid A* planner for ROS
-
必做實驗:狹窄巷道掉頭測試
第14周
-
學習控制方法(PID / Stanley 控制器)
- 📚 ROS Stanley controller example
-
必做實驗:礦車直線 + 彎道跟蹤
第15周
-
學習 MPC(預測控制)
- 📚 ROS MPC example
-
必做實驗:負載工況下運行曲線路徑,驗證平滑性
第16周
- 集成:全局規劃(Hybrid A*) + 局部規劃(TEB/MPC)
- 必做實驗:點到點任務(裝載點 → 倒礦點)
🔹 階段四:系統集成與安全(第17-20周)
目標:工程落地(車控接口+急停+調度)
第17周
-
學習 CAN 總線與 ROS 橋接
- 📚 socketCAN + ros_canopen
-
必做實驗:用 ROS 控制車輛油門/剎車/轉向
第18周
-
急停安全機制
- 硬件急停按鈕 → 獨立 IO 控制 → 斷電制動
-
必做實驗:運行過程中觸發急停,車輛能立即停下
第19周
-
學習 ROS2 多機通信(DDS)
- 📚 ROS2 DDS Overview
-
地面站 ? 礦車:任務下發 + 狀態回傳
-
必做實驗:遠程下發“從點A行駛到點B”
第20周
-
系統聯調
- 載入地圖
- 下發導航任務
- 礦車執行任務 + 返回狀態
-
必做實驗:全流程演示(建圖 → 定位 → 路徑規劃 → 軌跡跟蹤 → 急停 → 恢復)
📦 階段成果總結
- 第1-4周 → 穩定的雙雷達+IMU 融合點云
- 第5-10周 → FAST-LIO2 SLAM + 回環優化 + 占據柵格地圖
- 第11-16周 → 礦車點到點自動駕駛(A* + Hybrid A* + MPC)
- 第17-20周 → 工程化雛形(車控接口 + 安全 + 地面站調度)
? 最終結果:
20周后,你將擁有一個 井下礦車自動駕駛原型系統:
- 能在復雜巷道環境建圖/定位
- 能規劃點到點路徑并執行
- 支持急停、安全冗余
- 能與地面站交互,支持調度