February 25, 2020

Announcing the MoveIt Task Constructor

by Rob Coleman


Since its introduction at ROSCon 2018 by Robert Haschke and Michael Görner, the MoveIt Task Constructor (MTC) has gained a lot of interest inside the MoveIt community and in industry. We’re happy to announce that MTC is ready for use and we present the official tutorial including a demo application.

The MoveIt Task Constructor (MTC) is a multi-stage planning framework for solving complex motion planning tasks like pick-and-place operations or other object manipulations. With MTC a task is an instance of a high-level planning problem composed of smaller subproblems that are solved by individual stages. These stages are arrangeable components that compute simple steps like moving the robot between two intermediate states or attaching an object to the gripper. Stages can be freely arranged in sequence or in hierarchical order and even allow arbitrary control flows including alternative and fall-back solutions. The MTC package provides a set of primitive default stages which can already be used to integrate a generic pick-and-place pipeline. Check out the new tutorial for more information and an example implementation.

Using MTC for motion planning offers several advantages over conventional approaches. The modular architecture allows for easy replacement and rearrangement of tasks and stages while maintaining a readable and functional implementation. Also, the source code always follows a well-defined structure, which makes components more portable, testable, and reusable. This goes hand-in-hand with better debugging and introspection capabilities. For instance, individual stage solutions can be run and visualized with RViz in using the MTC panel. Lastly, MTC can optimize for the total cost over all stages, finding good solutions in its defined solution graph.

Features / Points:

  • Full end-to-end manipulation planning
  • Flexible levels of abstraction
  • High code reusability
  • Support for alternative solutions
  • Powerful visual debugging

With MTC there is a lot to look out for in the future. Not only will there be more default stages added but also a full Python API for even simpler access. Also, we’re currently working on replacing MoveIt’s dated pick&place pipeline with an MTC implementation, certainly only the first of further new default capabilities. We encourage everyone interested to test the framework and contribute improvements. We hope that we will see many interesting applications running on MTC.