// the find
AndrejOrsula/pymoveit2
Basic Python interface for MoveIt 2 built on top of ROS 2 actions and services
A Python wrapper around MoveIt 2's ROS 2 actions and services, letting you script robot arm motion planning without writing C++. Aimed at researchers and hobbyists who want to quickly prototype manipulation tasks with common arms like Panda, UR, or Kinova. The README honestly acknowledges that PickNik's official `moveit_py` now exists as an alternative.
- The API is genuinely simple — move_to_joint_positions, move_to_pose, servo twist commands — you can read an example script and understand it in two minutes without digging into MoveIt internals.
- Robot presets in pymoveit2/robots/ mean you don't have to manually specify joint names, planning group names, or end-effector link strings for common hardware like UR or Panda.
- Covers a useful breadth of operations: joint/pose goals, Cartesian servo control, collision object management (primitive and mesh), FK/IK calls, and path constraints — enough for most manipulation research scripts.
- Active maintenance (last push April 2026), CI via GitHub Actions, and pre-commit hooks indicate the repo isn't abandonware.
- The README itself flags the elephant in the room: PickNik's official `moveit_py` bindings now exist and are the sanctioned path. Adopting pymoveit2 for anything serious means betting on a community shim over the upstream-supported library.
- Supported ROS 2 distros listed are Galactic, Humble, and Iron — Galactic is EOL, Iron is EOL, and there's no mention of Jazzy or Rolling support, which is a real concern for new projects starting today.
- The action/service interface means every move call goes through the ROS middleware round-trip; there's no direct access to the MoveIt C++ planning pipeline, so you can't do things like inspect the planned trajectory before execution or hook into planning callbacks.
- No unit or integration tests visible in the repo — the CI workflow builds the package but there's nothing testing actual planning behavior, so regressions in edge cases (e.g., constraint handling, async execution) are likely to go unnoticed.