Robowflex: Robot Motion Planning with MoveIt Made Easy
Authors: Zachary Kingston, Lydia E. Kavraki · IROS 2022
Licences
- Open Access
- Paper: CC BY 4.0
Everything below draws on the full paper under its CC BY 4.0 licence; its figure is credited to the authors.
TL;DR
Robowflex loads MoveIt's robots, scenes and planners directly inside a C++ program instead of through ROS messages, making planner development, benchmarking and task-and-motion planning scriptable.
Why it matters
Because MoveIt already supports many robots, a team can script planning experiments for an existing robot in a short program and still connect to a ROS system when needed. Direct access to planner internals lets researchers swap OMPL samplers or planners without recompiling MoveIt, and run many planning queries with different scenes for task and motion planning. NASA used it to evaluate handrail grasps and motion planning for Robonaut 2 on the International Space Station.
Problem
Most MoveIt users plan through the MoveGroup program, configured by launch files and ROS parameters and queried over ROS messages. That works for basic planning but makes it hard to profile planners, change their components, extract internal information or run many planning queries inside a larger algorithm. Changing MoveIt's behaviour means writing plugin classes, which is difficult for people unfamiliar with its internals.
Proposed solution
Robowflex is a C++ library that wraps MoveIt's core library, loading robots (URDF, SRDF, joint limits, kinematics) without launch files and exposing scenes, motion requests and planners as objects in a single program. It adds input and output helpers for YAML, XACRO, ROS bags and ROS parameters, a benchmarking tool with OMPL-compatible output, and modules for OMPL internals, DART, Tesseract's TrajOpt, a live MoveGroup and Blender rendering. Adapters keep code compiling from ROS Indigo to ROS Noetic.
Key insights
- Wrapping MoveIt as a library, rather than talking to MoveGroup over ROS messages, gives full access to internal data structures while keeping ROS integration optional
- Many robots, scenes and planners can be loaded in one program, which task and motion planning needs to try many motion plans in different scenes
- Benchmark output in the OMPL log format plugs into existing tools such as Planner Arena, and scenes and requests stored as plain files make datasets easy to build
- MoveIt's own benchmarking needs ROS Warehouse and does not easily support scenes with varied obstacles, which learning-based planners need
- Integration modules allow comparisons across libraries, for example MoveIt's RRTConnect against Tesseract's TrajOpt on the same scene in one short script
Main results
- Demonstrated basic motion planning on a Fetch robot in a script of about 40 lines, with no ROS messages
- Benchmarking example: 200 runs of RRT* on the Fetch robot, recording best path cost over time as a progress property
- DART module used for multi-robot planning with two Fetch robots in a composite space and as the motion planning component of a multi-robot task and motion planning framework
- Used by NASA to evaluate inverse kinematics solvers, handrail grasp configurations and planning difficulty for Robonaut 2 climbing across handrails
- Robowflex benchmarking or modules had been used in eight publications ([12]–[19]) at the time of writing; code compiles from ROS Indigo to ROS Noetic
Limitations
- The paper has no stated limitations section; the use-cases are demonstrations, with no measured comparison of effort or runtime against MoveGroup
- It is built on MoveIt and ROS, so each robot still needs its MoveIt configuration files (URDF, SRDF, joint limits, kinematics)
- The authors note other simplified MoveIt interfaces exist (MoveIt CPP, moveit_boilerplate); their comparison with Robowflex is qualitative
- The Robonaut 2 use-case is described as planning evaluation visualised in RViz; no hardware execution results are reported
Field impact
Finalist for the IROS 2022 Best Paper Award for Industrial Robotics Research for Applications, with 31 citations. Robowflex is released as open source on GitHub with online documentation.
Abstract
Robowflex is a software library for robot motion planning in industrial and research applications, leveraging the popular MoveIt library and Robot Operating System (ROS) middleware. Robowflex takes advantage of the ease of motion planning with MoveIt while providing an augmented API to craft and manipulate motion planning queries within a single program. Robowflex’s high-level API simplifies many common use-cases while still providing access to the underlying MoveIt library. Robowflex is particularly useful for 1) developing new motion planners, 2) evaluation of motion planners, and 3) complex problems that use motion planning (e.g., task and motion planning). Robowflex also provides visualization capabilities, integrations to other robotics libraries (e.g., DART and Tesseract), and is complimentary to many other robotics packages. With our library, the user does not need to be an expert at ROS or MoveIt in order to set up motion planning queries, extract information from results, and directly interface with a variety of software components. We provide a few example use-cases that demonstrate its efficacy.
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
- Project page: https://kavrakilab.github.io/robowflex/