Robowflex: Robot Motion Planning with MoveIt Made Easy
Autores: Zachary Kingston, Lydia E. Kavraki · IROS 2022
Licencias
- Acceso abierto
- Artículo: CC BY 4.0
Todo lo que sigue se basa en el artículo completo bajo su licencia CC BY 4.0; su figura se muestra con crédito a los autores.
En resumen
Robowflex carga los robots, escenas y planificadores de MoveIt directamente dentro de un programa en C++ en lugar de a través de mensajes de ROS, lo que permite programar con scripts el desarrollo de planificadores, los benchmarks y la planificación de tareas y movimientos.
Por qué importa
Como MoveIt ya es compatible con muchos robots, un equipo puede programar experimentos de planificación para un robot existente en un programa breve y seguir conectándose a un sistema ROS cuando lo necesite. El acceso directo a los componentes internos del planificador permite a los investigadores cambiar muestreadores o planificadores de OMPL sin recompilar MoveIt, y ejecutar muchas consultas de planificación con escenas distintas para la planificación de tareas y movimientos. La NASA lo usó para evaluar agarres de pasamanos y la planificación de movimiento de Robonaut 2 en la Estación Espacial Internacional.
Problema
La mayoría de los usuarios de MoveIt planifican a través del programa MoveGroup, configurado mediante archivos launch y parámetros de ROS y consultado mediante mensajes de ROS. Esto sirve para la planificación básica, pero dificulta perfilar planificadores, cambiar sus componentes, extraer información interna o ejecutar muchas consultas de planificación dentro de un algoritmo mayor. Cambiar el comportamiento de MoveIt implica escribir clases de plugin, lo que resulta difícil para quienes no conocen sus componentes internos.
Solución propuesta
Robowflex es una biblioteca de C++ que envuelve la biblioteca central de MoveIt, carga robots (URDF, SRDF, límites articulares, cinemática) sin archivos launch y expone escenas, solicitudes de movimiento y planificadores como objetos en un único programa. Añade utilidades de entrada y salida para YAML, XACRO, bags de ROS y parámetros de ROS, una herramienta de benchmarking con salida compatible con OMPL, y módulos para los componentes internos de OMPL, DART, TrajOpt de Tesseract, un MoveGroup en ejecución y renderizado con Blender. Unos adaptadores mantienen el código compilable desde ROS Indigo hasta ROS Noetic.
Ideas clave
- Envolver MoveIt como biblioteca, en lugar de comunicarse con MoveGroup mediante mensajes de ROS, da acceso completo a las estructuras de datos internas y mantiene opcional la integración con ROS
- Se pueden cargar muchos robots, escenas y planificadores en un solo programa, algo que la planificación de tareas y movimientos necesita para probar muchos planes de movimiento en escenas distintas
- La salida de los benchmarks en el formato de registro de OMPL se conecta con herramientas existentes como Planner Arena, y las escenas y solicitudes guardadas como archivos simples facilitan la creación de conjuntos de datos
- El propio benchmarking de MoveIt necesita ROS Warehouse y no admite fácilmente escenas con obstáculos variados, que los planificadores basados en aprendizaje necesitan
- Los módulos de integración permiten comparaciones entre bibliotecas, por ejemplo RRTConnect de MoveIt frente a TrajOpt de Tesseract en la misma escena en un único script breve
Resultados principales
- Se demostró la planificación de movimiento básica en un robot Fetch con un script de unas 40 líneas, sin mensajes de ROS
- Ejemplo de benchmarking: 200 ejecuciones de RRT* en el robot Fetch, registrando el mejor coste de trayectoria a lo largo del tiempo como propiedad de progreso
- Módulo DART usado para la planificación multirrobot con dos robots Fetch en un espacio compuesto y como componente de planificación de movimiento de un marco de planificación de tareas y movimientos multirrobot
- Usado por la NASA para evaluar solucionadores de cinemática inversa, configuraciones de agarre de pasamanos y la dificultad de planificación para Robonaut 2 trepando por pasamanos
- El benchmarking o los módulos de Robowflex se habían usado en ocho publicaciones ([12]–[19]) en el momento de redactar el artículo; el código compila desde ROS Indigo hasta ROS Noetic
Limitaciones
- El artículo no tiene una sección declarada de limitaciones; los casos de uso son demostraciones, sin una comparación medida de esfuerzo o tiempo de ejecución frente a MoveGroup
- Está construido sobre MoveIt y ROS, por lo que cada robot sigue necesitando sus archivos de configuración de MoveIt (URDF, SRDF, límites articulares, cinemática)
- Los autores señalan que existen otras interfaces simplificadas de MoveIt (MoveIt CPP, moveit_boilerplate); su comparación con Robowflex es cualitativa
- El caso de uso de Robonaut 2 se describe como una evaluación de planificación visualizada en RViz; no se presentan resultados de ejecución en hardware
Impacto en el campo
Finalista del IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, con 31 citas. Robowflex se publica como código abierto en GitHub con documentación en línea.
Resumen
Robowflex es una biblioteca de software para la planificación de movimiento de robots en aplicaciones industriales y de investigación, que aprovecha la popular biblioteca MoveIt y el middleware Robot Operating System (ROS). Robowflex saca partido de la facilidad de la planificación de movimiento con MoveIt a la vez que ofrece una API ampliada para elaborar y manipular consultas de planificación de movimiento dentro de un único programa. La API de alto nivel de Robowflex simplifica muchos casos de uso habituales sin dejar de dar acceso a la biblioteca MoveIt subyacente. Robowflex es especialmente útil para 1) desarrollar nuevos planificadores de movimiento, 2) evaluar planificadores de movimiento y 3) problemas complejos que usan planificación de movimiento (p. ej., planificación de tareas y movimientos). Robowflex también ofrece capacidades de visualización, integraciones con otras bibliotecas de robótica (p. ej., DART y Tesseract), y es complementaria de muchos otros paquetes de robótica. Con nuestra biblioteca, el usuario no necesita ser experto en ROS o MoveIt para configurar consultas de planificación de movimiento, extraer información de los resultados e interactuar directamente con diversos componentes de software. Presentamos algunos casos de uso de ejemplo que demuestran su eficacia.
Enlaces
- 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
- Código: https://github.com/KavrakiLab/robowflex
- Página del proyecto: https://kavrakilab.github.io/robowflex/