ROS Motion Planning
以 ROS 外掛形式實作 40 多種經典與以學習為基礎之機器人路徑規劃器的單一儲存庫
授權條款
GPL-3.0
概述
ros_motion_planning 是一套完整的機器人運動規劃演算法集,以 ROS 導航堆疊外掛的形式實作:全域規劃器從 A、Theta、D 與 JPS 到 RRT、Informed RRT* 與 Voronoi 規劃器;區域規劃器包括 DWA、TEB 風格、PID、LQR 與 MPC;曲線生成(Bezier、Dubins、Reeds-Shepp、B-spline);以及 DDPG 等以學習為基礎的規劃器。每個演算法都在相同的 Gazebo/RViz 環境中執行,使它成為在相同基準上比較規劃器時格外實用的參考。
這個儲存庫將數十種規劃器包裝在標準的 ROS nav_core 外掛介面之後,因此任何演算法都能直接放進 move_base(ROS 1)中(另有配套的 ROS 2 實作),並在相同的代價地圖、機器人與 Gazebo 世界中測試。全域規劃涵蓋圖搜尋(Dijkstra、A、D、LPA、D Lite、Theta、Lazy Theta、JPS、GBFS)、取樣式方法(RRT、RRT、Informed RRT、RRT-Connect)、智慧/演化式方法(ACO、GA、PSO),以及 Voronoi 圖規劃。區域規劃涵蓋 PID、DWA、APF、LQR 與 MPC 控制器,曲線生成模組則實作 Dubins、Reeds-Shepp、Bezier 與 spline 路徑。以學習為基礎的規劃器(例如以 DDPG 為基礎的強化學習導航)則讓整套工具更完整。Docker 映像、大量逐一演算法的動畫,以及配套的 Python 視覺化儲存庫,讓它既適合作為課程參考,也適合作為開發生產用規劃器的起點。
為何重要
這是經典運動規劃演算法在可運作的 ROS 程式碼中最完整的單一實作:論文中通常只以虛擬碼呈現的教科書演算法,在這裡全都在一致的堆疊中實際執行,這也是它成為導航工程師與機器人學生首選參考的原因。
解決的問題
要公平比較路徑規劃器,必須把每一種都實作在同一個導航堆疊中,這需要好幾個月的外掛工程。ros_motion_planning 已經為 40 多種演算法完成這項工作,讓規劃器的選擇與教學只需更改設定。
重點
- 40 多種規劃器:圖搜尋、取樣式、演化式、曲線生成、以學習為基礎
- 全部以標準的 ROS 導航外掛實作,可在相同的 Gazebo/RViz 環境中執行
- 支援 ROS 1 與 ROS 2,並提供 Docker 映像以便快速上手
- 區域規劃器包括 DWA、APF、PID、LQR 與 MPC 控制器
- 配套的 Python 儲存庫提供對應的演算法視覺化,方便學習
適用對象
- 為自主移動機器人(AMR)/AGV 選擇規劃器的導航工程師
- 學習路徑規劃演算法的機器人學生
- 以經典演算法評測新規劃器的研究人員
- 建立運動規劃課程的教育者
限制
- 重廣度而非深度:個別規劃器是參考實作,並非經過調校的生產用控制器
- GPL-3.0 授權限制了閉源再利用
- 主要針對 2D 輪式機器人導航(不含操作規劃)