pymoveit2

Four simulated Franka Emika Panda arms from the pymoveit2 examples: joint goal, pose goal, gripper action and servoing

pymoveit2 moves a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services. It needs no compiled MoveIt bindings and works with any robot that has a MoveIt 2 configuration. It is used across the ROS 2 community, including in the robot arm labs I teach.

Features

  • Motion planning and execution: joint and pose goals in joint or Cartesian space, with orientation path constraints.
  • Kinematics: forward and inverse kinematics through MoveIt 2’s services.
  • Planning scene: add primitive shapes or triangle meshes as collision objects, allow or forbid collisions with them, or clear the scene.
  • Grippers and servoing: gripper actions and real-time servoing with MoveIt 2 Servo.
  • One-line session: with connect() as robot: discovers the robot description and sets up the arm, gripper and servo interfaces; ex_doctor.py helps diagnose a setup where nothing moves.

Status

The latest release is pymoveit2 5.0.0 (September 2026), licensed under BSD-3-Clause. It ships as a ROS 2 package for Humble, Jazzy, Lyrical and Rolling, as a PyPI package and as a Docker image.