MoveIt 2 Python Bindings

A new Python library for MoveIt is now available in ROS 2 Rolling. The new Python library binds core components of the MoveIt C++ API and exposes the functionalities of these components through a Python API.

Python Library Features

The Python library can be found under the folder moveit_py in the MoveIt 2 repository root directory. An outline of the codebase structure is provided within the package, below we provide a high-level overview of the structure of the Python library,

  • A core module that provides Python bindings for packages available in moveit_core
    • collision_detection
    • kinematic_constraints
    • planning_interface
    • planning_scene
    • robot_model
    • robot_state
    • robot_trajectory
    • transforms
  • A planning module that provides Python bindings for a subset of the functionalities within moveit_cpp
  • A servo module that enables users to integrate new teleoperation devices in Python

Getting Started In order to help new users get started with the library we have curated the following set of tutorials,

API documentation is also available for the library here.

What’s next?

There are many additional features, enhancements and tutorials that can be made available for the existing Python library. Below are some features, enhancements and tutorials that should be addressed in the near future:

  • features
    • Implement interface for interacting with grippers
    • Implement utilities for deploying learnt policies with MoveIt Servo
    • Establish feature parity with existing C++ API
  • enhancements
  • tutorials
    • Real-world data collection for imitation learning
    • Setting up real-world reinforcement learning experiments
    • Deploying policies learnt in Isaac-Sim on real robots

New contributors to the MoveIt project are highly encouraged to get involved in development of the Python library. See the Contribution Guides for further details.

This article was originally published by Peter David Fagan on