ROS Motion Planning
40以上の古典・学習ベースのロボット経路プランナーをROSプラグインとして実装した単一リポジトリ
ライセンス
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スプライン)や、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、スプラインのパスを実装します。学習ベースのプランナー(DDPGベースのRLナビゲーションなど)がラインナップを締めくくります。Dockerイメージ、アルゴリズムごとの豊富なアニメーション、対応するPython可視化リポジトリにより、教材のリファレンスとしても、本番プランナー開発の出発点としても等しく有用です。
重要な理由
これは、古典的なモーションプランニングの正典を動作するROSコードとして実装したものの中で最も完全な単一実装です。論文では通常擬似コードにすぎない教科書のアルゴリズムが、ここではすべて一貫した一つのスタックの中で動きます。ナビゲーションエンジニアとロボティクスの学生の双方にとって定番のリファレンスとなった理由がそこにあります。
解決する課題
経路プランナーを公平に比較するには、それぞれを同じナビゲーションスタック内に実装する必要があり、数ヶ月に及ぶプラグインエンジニアリングになります。ros_motion_planningは40以上のアルゴリズムについてそれをすでに済ませており、プランナーの選定と教育を設定変更ひとつの作業に変えました。
主なポイント
- 40以上のプランナー: グラフ探索、サンプリングベース、進化的、曲線生成、学習ベース
- すべて標準のROSナビゲーションプラグインとして実装され、同一のGazebo/RViz環境で実行可能
- クイックスタート用のDockerイメージ付きでROS 1とROS 2をサポート
- ローカルプランナーはDWA、APF、PID、LQR、MPCコントローラを含む
- 姉妹のPythonリポジトリが学習用のアルゴリズム可視化を提供
対象
- AMR/AGV向けにプランナーを選定するナビゲーションエンジニア
- 経路計画アルゴリズムを学ぶロボティクスの学生
- 新しいプランナーを古典手法とベンチマークする研究者
- モーションプランニングの教材を作る教育者
制限事項
- 深さより広さ — 個々のプランナーはリファレンス実装であり、チューニングされた本番用コントローラではない
- GPL-3.0ライセンスはクローズドソースでの再利用を制限する
- 主に2D車輪型ロボットのナビゲーションが対象(マニピュレーションプランニングはない)