Robowflex: Robot Motion Planning with MoveIt Made Easy
著者: Zachary Kingston, Lydia E. Kavraki · IROS 2022
ライセンス
- オープンアクセス
- 論文: CC BY 4.0
以下の内容はすべて、論文のライセンス(CC BY 4.0)に従い論文全文に基づいています。図は著者のクレジットを付けて掲載しています。
要約
Robowflex は MoveIt のロボット・シーン・プランナーを ROS メッセージ経由ではなく C++ プログラム内に直接読み込み、プランナー開発、ベンチマーク、タスク・アンド・モーション・プランニングをスクリプト化できるようにする。
重要な理由
MoveIt はすでに多くのロボットに対応しているため、チームは既存のロボット向けの計画実験を短いプログラムでスクリプト化でき、必要なら ROS システムにも接続できる。プランナー内部へ直接アクセスできるので、研究者は MoveIt を再コンパイルせずに OMPL のサンプラーやプランナーを差し替えられ、タスク・アンド・モーション・プランニングのために異なるシーンで多数の計画クエリを実行できる。NASA は国際宇宙ステーション上の Robonaut 2 の手すり把持とモーションプランニングの評価にこれを使った。
課題
MoveIt のユーザーの大半は MoveGroup プログラムを通じて計画を行う。これは launch ファイルと ROS パラメータで設定され、ROS メッセージでクエリされる。基本的な計画には十分だが、プランナーのプロファイリング、構成要素の変更、内部情報の抽出、より大きなアルゴリズム内での多数の計画クエリの実行は難しい。MoveIt の挙動を変えるにはプラグインクラスを書く必要があり、内部に詳しくない人には困難である。
提案手法
Robowflex は MoveIt のコアライブラリをラップする C++ ライブラリで、launch ファイルなしでロボット(URDF、SRDF、関節制限、運動学)を読み込み、シーン、動作リクエスト、プランナーを単一プログラム内のオブジェクトとして公開する。YAML、XACRO、ROS bag、ROS パラメータの入出力ヘルパー、OMPL 互換の出力を持つベンチマークツール、そして OMPL 内部、DART、Tesseract の TrajOpt、稼働中の MoveGroup、Blender レンダリング向けのモジュールを追加している。アダプターにより、コードは ROS Indigo から ROS Noetic までコンパイルできる。
主な知見
- MoveGroup と ROS メッセージでやり取りするのではなく MoveIt をライブラリとしてラップすることで、内部データ構造へ完全にアクセスでき、ROS との連携は任意となる
- 多数のロボット、シーン、プランナーを一つのプログラムに読み込める。タスク・アンド・モーション・プランニングでは、異なるシーンで多数の動作計画を試すためにこれが必要となる
- OMPL のログ形式によるベンチマーク出力は Planner Arena などの既存ツールにそのまま接続でき、シーンとリクエストを通常のファイルとして保存するのでデータセットを作りやすい
- MoveIt 自体のベンチマークは ROS Warehouse を必要とし、多様な障害物を含むシーンを容易には扱えないが、学習ベースのプランナーにはそうしたシーンが必要である
- 連携モジュールによりライブラリ間の比較ができる。例えば、同じシーン上で MoveIt の RRTConnect と Tesseract の TrajOpt を一つの短いスクリプトで比較できる
主な結果
- Fetch ロボット上で、約 40 行のスクリプトにより ROS メッセージを使わずに基本的なモーションプランニングを実演した
- ベンチマーク例:Fetch ロボットで RRT* を 200 回実行し、最良経路コストの時間推移を進捗プロパティとして記録した
- DART モジュールを、複合空間における 2 台の Fetch ロボットのマルチロボット計画に用い、またマルチロボットのタスク・アンド・モーション・プランニングフレームワークのモーションプランニング要素として用いた
- NASA が、逆運動学ソルバー、手すり把持の姿勢、および手すりを伝って移動する Robonaut 2 の計画難度の評価に使用した
- 執筆時点で Robowflex のベンチマークまたはモジュールは 8 本の論文([12]–[19])で使われていた。コードは ROS Indigo から ROS Noetic までコンパイルできる
制限事項
- 論文には限界を述べた節がない。ユースケースはデモであり、MoveGroup と比べた労力や実行時間の計測比較はない
- MoveIt と ROS の上に構築されているため、各ロボットには依然として MoveIt の設定ファイル(URDF、SRDF、関節制限、運動学)が必要である
- 著者は他にも簡略化された MoveIt インターフェース(MoveIt CPP、moveit_boilerplate)が存在すると述べているが、Robowflex との比較は定性的である
- Robonaut 2 のユースケースは RViz で可視化した計画評価として説明されており、ハードウェアでの実行結果は報告されていない
分野への影響
IROS 2022 Best Paper Award for Industrial Robotics Research for Applications のファイナリストで、被引用数は 31。Robowflex は GitHub でオープンソースとして公開され、オンラインドキュメントがある。
概要
Robowflex は、産業および研究用途のロボットのモーションプランニングのためのソフトウェアライブラリであり、広く使われている MoveIt ライブラリと Robot Operating System(ROS)ミドルウェアを活用する。Robowflex は MoveIt によるモーションプランニングの手軽さを生かしつつ、単一のプログラム内でモーションプランニングのクエリを作成・操作するための拡張 API を提供する。Robowflex の高レベル API は多くの一般的なユースケースを簡素化しつつ、基盤となる MoveIt ライブラリへのアクセスも維持する。Robowflex は特に、1) 新しいモーションプランナーの開発、2) モーションプランナーの評価、3) モーションプランニングを用いる複雑な問題(例:タスク・アンド・モーション・プランニング)に有用である。Robowflex はさらに可視化機能や他のロボティクスライブラリ(例:DART や Tesseract)との連携を提供し、多くの他のロボティクスパッケージを補完する。我々のライブラリを使えば、ユーザーは ROS や MoveIt の専門家でなくても、モーションプランニングのクエリを設定し、結果から情報を抽出し、さまざまなソフトウェアコンポーネントと直接やり取りできる。その有効性を示すいくつかのユースケース例を示す。
リンク
- arXiv 2103.12826: https://arxiv.org/abs/2103.12826
- DOI 10.1109/IROS47612.2022.9981698: https://doi.org/10.1109/IROS47612.2022.9981698
- PDF: https://arxiv.org/pdf/2103.12826v1
- コード: https://github.com/KavrakiLab/robowflex
- プロジェクトページ: https://kavrakilab.github.io/robowflex/