Robowflex: Robot Motion Planning with MoveIt Made Easy
Autoren: Zachary Kingston, Lydia E. Kavraki · IROS 2022
Lizenzen
- Open Access
- Paper: CC BY 4.0
Alles Folgende stützt sich auf das vollständige Paper unter seiner Lizenz CC BY 4.0; die Abbildung wird mit Nennung der Autoren gezeigt.
Kurz gesagt
Robowflex lädt Roboter, Szenen und Planer von MoveIt direkt in einem C++-Programm statt über ROS-Nachrichten und macht so Planerentwicklung, Benchmarking sowie Aufgaben- und Bewegungsplanung skriptfähig.
Warum es wichtig ist
Da MoveIt bereits viele Roboter unterstützt, kann ein Team Planungsexperimente für einen vorhandenen Roboter in einem kurzen Programm skripten und bei Bedarf trotzdem an ein ROS-System anbinden. Der direkte Zugriff auf Planerinterna erlaubt es Forschenden, OMPL-Sampler oder -Planer auszutauschen, ohne MoveIt neu zu kompilieren, und für die Aufgaben- und Bewegungsplanung viele Planungsanfragen mit unterschiedlichen Szenen auszuführen. Die NASA nutzte es, um Handlauf-Griffe und die Bewegungsplanung für Robonaut 2 auf der Internationalen Raumstation zu evaluieren.
Problem
Die meisten MoveIt-Nutzer planen über das Programm MoveGroup, das über Launch-Dateien und ROS-Parameter konfiguriert und über ROS-Nachrichten abgefragt wird. Für einfache Planung funktioniert das, erschwert aber das Profiling von Planern, das Ändern ihrer Komponenten, das Auslesen interner Informationen oder das Ausführen vieler Planungsanfragen innerhalb eines größeren Algorithmus. Um das Verhalten von MoveIt zu ändern, müssen Plugin-Klassen geschrieben werden, was für Personen ohne Kenntnis der Interna schwierig ist.
Lösungsansatz
Robowflex ist eine C++-Bibliothek, die die Kernbibliothek von MoveIt kapselt, Roboter (URDF, SRDF, Gelenkgrenzen, Kinematik) ohne Launch-Dateien lädt und Szenen, Bewegungsanfragen und Planer als Objekte in einem einzigen Programm bereitstellt. Hinzu kommen Ein- und Ausgabehilfen für YAML, XACRO, ROS-Bags und ROS-Parameter, ein Benchmarking-Werkzeug mit OMPL-kompatibler Ausgabe sowie Module für OMPL-Interna, DART, TrajOpt von Tesseract, eine laufende MoveGroup und Rendering mit Blender. Adapter sorgen dafür, dass der Code von ROS Indigo bis ROS Noetic kompiliert.
Wichtigste Erkenntnisse
- MoveIt als Bibliothek zu kapseln, statt über ROS-Nachrichten mit MoveGroup zu kommunizieren, gibt vollen Zugriff auf interne Datenstrukturen und lässt die ROS-Integration optional
- Viele Roboter, Szenen und Planer lassen sich in einem Programm laden, was die Aufgaben- und Bewegungsplanung braucht, um viele Bewegungspläne in unterschiedlichen Szenen auszuprobieren
- Benchmark-Ausgaben im OMPL-Logformat lassen sich direkt in bestehende Werkzeuge wie Planner Arena einspeisen, und als einfache Dateien gespeicherte Szenen und Anfragen erleichtern den Aufbau von Datensätzen
- Das MoveIt-eigene Benchmarking benötigt ROS Warehouse und unterstützt Szenen mit wechselnden Hindernissen, wie lernbasierte Planer sie brauchen, nicht ohne Weiteres
- Integrationsmodule ermöglichen bibliotheksübergreifende Vergleiche, etwa MoveIts RRTConnect gegen TrajOpt von Tesseract in derselben Szene in einem kurzen Skript
Hauptergebnisse
- Einfache Bewegungsplanung auf einem Fetch-Roboter in einem Skript von etwa 40 Zeilen demonstriert, ohne ROS-Nachrichten
- Benchmarking-Beispiel: 200 Durchläufe von RRT* auf dem Fetch-Roboter, wobei die besten Pfadkosten über die Zeit als Fortschrittseigenschaft aufgezeichnet wurden
- Das DART-Modul wurde für die Multi-Roboter-Planung mit zwei Fetch-Robotern in einem zusammengesetzten Raum und als Bewegungsplanungskomponente eines Multi-Roboter-Frameworks für Aufgaben- und Bewegungsplanung eingesetzt
- Von der NASA genutzt, um Löser für die inverse Kinematik, Griffkonfigurationen an Handläufen und die Planungsschwierigkeit für Robonaut 2 beim Klettern entlang von Handläufen zu evaluieren
- Benchmarking oder Module von Robowflex waren zum Zeitpunkt der Veröffentlichung in acht Publikationen ([12]–[19]) verwendet worden; der Code kompiliert von ROS Indigo bis ROS Noetic
Einschränkungen
- Das Paper enthält keinen ausgewiesenen Abschnitt zu Einschränkungen; die Anwendungsfälle sind Demonstrationen, ohne gemessenen Vergleich von Aufwand oder Laufzeit gegenüber MoveGroup
- Es baut auf MoveIt und ROS auf, daher benötigt jeder Roboter weiterhin seine MoveIt-Konfigurationsdateien (URDF, SRDF, Gelenkgrenzen, Kinematik)
- Die Autoren weisen darauf hin, dass es andere vereinfachte MoveIt-Schnittstellen gibt (MoveIt CPP, moveit_boilerplate); ihr Vergleich mit Robowflex ist qualitativ
- Der Anwendungsfall Robonaut 2 wird als in RViz visualisierte Planungsevaluierung beschrieben; Ergebnisse einer Ausführung auf Hardware werden nicht berichtet
Wirkung auf das Fachgebiet
Finalist für den IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, mit 31 Zitierungen. Robowflex ist als Open Source auf GitHub mit Online-Dokumentation veröffentlicht.
Zusammenfassung
Robowflex ist eine Softwarebibliothek für die Bewegungsplanung von Robotern in industriellen und wissenschaftlichen Anwendungen, die die verbreitete MoveIt-Bibliothek und die Middleware Robot Operating System (ROS) nutzt. Robowflex macht sich die einfache Bewegungsplanung mit MoveIt zunutze und bietet zugleich eine erweiterte API, um Bewegungsplanungsanfragen innerhalb eines einzigen Programms zu erstellen und zu bearbeiten. Die High-Level-API von Robowflex vereinfacht viele gängige Anwendungsfälle und bietet dennoch Zugriff auf die zugrunde liegende MoveIt-Bibliothek. Robowflex ist besonders nützlich für 1) die Entwicklung neuer Bewegungsplaner, 2) die Evaluierung von Bewegungsplanern und 3) komplexe Probleme, die Bewegungsplanung verwenden (z. B. Aufgaben- und Bewegungsplanung). Robowflex bietet außerdem Visualisierungsfunktionen und Integrationen mit anderen Robotikbibliotheken (z. B. DART und Tesseract) und ergänzt viele andere Robotikpakete. Mit unserer Bibliothek muss der Nutzer kein Experte für ROS oder MoveIt sein, um Bewegungsplanungsanfragen einzurichten, Informationen aus Ergebnissen zu extrahieren und direkt mit einer Vielzahl von Softwarekomponenten zu interagieren. Wir stellen einige Beispielanwendungsfälle vor, die ihre Wirksamkeit zeigen.
Links
- 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
- Code: https://github.com/KavrakiLab/robowflex
- Projektseite: https://kavrakilab.github.io/robowflex/