Robowflex: Robot Motion Planning with MoveIt Made Easy
作者: Zachary Kingston, Lydia E. Kavraki · IROS 2022
授權條款
- 開放取用
- 論文: CC BY 4.0
以下內容皆依據論文全文,依其 CC BY 4.0 授權條款使用;圖表已標示作者。
一句話摘要
Robowflex 直接在 C++ 程式內載入 MoveIt 的機器人、場景與規劃器,而非透過 ROS 訊息,讓規劃器開發、基準測試以及任務與運動規劃都能以腳本完成。
為何重要
由於 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 都能編譯。
關鍵見解
- 把 MoveIt 當作函式庫封裝,而不是透過 ROS 訊息與 MoveGroup 溝通,就能完整存取內部資料結構,同時讓 ROS 整合成為可選項目
- 可在一支程式中載入多個機器人、場景與規劃器,任務與運動規劃正需要如此,才能在不同場景中嘗試大量運動規劃
- 以 OMPL 日誌格式輸出的基準測試結果可直接接上 Planner Arena 等既有工具,而以一般檔案儲存的場景與請求讓資料集容易建立
- MoveIt 本身的基準測試需要 ROS Warehouse,且不易支援含有多樣障礙物的場景,而以學習為基礎的規劃器需要這類場景
- 整合模組可進行跨函式庫比較,例如在一支簡短腳本中,於同一場景比較 MoveIt 的 RRTConnect 與 Tesseract 的 TrajOpt
主要結果
- 在 Fetch 機器人上以約 40 行的腳本示範基本運動規劃,完全不用 ROS 訊息
- 基準測試範例:在 Fetch 機器人上執行 RRT* 200 次,將最佳路徑成本隨時間的變化記錄為進度屬性
- DART 模組用於在複合空間中對兩台 Fetch 機器人進行多機器人規劃,並作為一個多機器人任務與運動規劃框架的運動規劃元件
- NASA 用它評估逆向運動學求解器、扶手抓取組態,以及 Robonaut 2 沿扶手攀爬時的規劃難度
- 撰寫本文時,Robowflex 的基準測試或模組已用於八篇論文([12]–[19]);程式碼從 ROS Indigo 到 ROS Noetic 都能編譯
限制
- 論文沒有明列限制的章節;這些使用情境只是示範,並未與 MoveGroup 在工作量或執行時間上進行實測比較
- 它建構於 MoveIt 與 ROS 之上,因此每台機器人仍需各自的 MoveIt 設定檔(URDF、SRDF、關節限制、運動學)
- 作者指出另有其他簡化的 MoveIt 介面(MoveIt CPP、moveit_boilerplate);它們與 Robowflex 的比較屬於定性比較
- Robonaut 2 使用情境被描述為在 RViz 中視覺化的規劃評估;並未報告任何硬體執行結果
對領域的影響
入圍 IROS 2022 工業機器人應用研究最佳論文獎決選,被引用 31 次。Robowflex 已在 GitHub 上以開源釋出,並附線上文件。
摘要
Robowflex 是一套用於工業與研究應用的機器人運動規劃軟體函式庫,運用廣受歡迎的 MoveIt 函式庫與機器人作業系統(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/