Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
|
pymoveit2 package from eyrc-24-25-logistic-cobot repoebot_description ebot_docking ebot_nav2 eyantra_warehouse linkattacher_msgs payload_service pymoveit2 realsense_gazebo_plugin servo_msgs ur5_control ur_description ur_moveit_config ur_simulation_gazebo |
ROS Distro
|
Package Summary
| Version | 2.1.0 |
| License | BSD |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/eyantra-robotics-competition/eyrc-24-25-logistic-cobot.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2024-12-20 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Basic Python interface for MoveIt 2 built on top of ROS 2 actions and services.
Note: The official Python library for MoveIt 2
moveit_pyis now available. Check the announcement here!
![]() |
![]() |
![]() |
![]() |
Joint Goal |
Pose Goal |
Gripper Action |
MoveIt 2 Servo |
source install/local_setup.bash
This enables importing of pymoveit2 module from external workspaces.
Examples
To demonstrate pymoveit2 usage, examples directory contains scripts that demonstrate the basic functionality. Additional examples can be found under ign_moveit2_examples repository.
Prior to running the examples, configure an environment for control of a robot with MoveIt 2. For instance, one of the following launch scripts from panda_ign_moveit2 repository can be used.
# RViz (fake) ROS 2 control
ros2 launch panda_moveit_config ex_fake_control.launch.py
# Gazebo (simulated) ROS 2 control
ros2 launch panda_moveit_config ex_ign_control.launch.py
After that, the individual scripts can be run.
# Move to joint configuration
ros2 run pymoveit2 ex_joint_goal.py --ros-args -p joint_positions:="[1.57, -1.57, 0.0, -1.57, 0.0, 1.57, 0.7854]"
# Move to Cartesian pose (motion in either joint or Cartesian space)
ros2 run pymoveit2 ex_pose_goal.py --ros-args -p position:="[0.25, 0.0, 1.0]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]" -p cartesian:=False
# Repeatadly toggle the gripper (or use "open"/"close" actions)
ros2 run pymoveit2 ex_gripper.py --ros-args -p action:="toggle"
# Example of using MoveIt 2 Servo to move the end-effector in a circular motion
ros2 run pymoveit2 ex_servo.py
# Example of adding a collision object to the planning scene of MoveIt 2
ros2 run pymoveit2 ex_collision_object.py --ros-args -p action:="add" -p position:="[0.5, 0.0, 0.5]" -p quat_xyzw:="[0.0, 0.0, -0.707, 0.707]"
Directory Structure
The following directory structure is utilised for this package.
.
├── examples/ # [dir] Examples demonstrating the use of `pymoveit2`
├── pymoveit2/ # [dir] ROS 2 launch scripts
├── robots/ # [dir] Presets for robots (data that can be extracted from URDF/SRDF)
├── gripper_command.py # Interface for Gripper that is controlled by GripperCommand
├── moveit2_gripper.py # Interface for MoveIt 2 Gripper that is controlled by JointTrajectoryController
├── moveit2_servo.py # Interface for MoveIt 2 Servo that enables real-time control in Cartesian Space
└── moveit2.py # Interface for MoveIt 2 that enables planning and execution of trajectories
├── CMakeLists.txt # Colcon-enabled CMake recipe
└── package.xml # ROS 2 package metadata
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_srvs | |
| trajectory_msgs |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged pymoveit2 at Robotics Stack Exchange
Package Summary
| Version | 5.0.1 |
| License | BSD-3-Clause |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/AndrejOrsula/pymoveit2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-15 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Andrej Orsula
Authors
- Andrej Orsula
pymoveit2
Move a robot from Python by communicating with MoveIt 2 over ROS 2 actions and services
![]() |
![]() |
![]() |
![]() |
Joint Configuration |
Cartesian Pose |
Gripper Action |
Real-Time Servoing |
Installation
Binary package
sudo apt install ros-$ROS_DISTRO-pymoveit2
Python package
pip install pymoveit2
Docker image
cd $WS
git clone https://github.com/AndrejOrsula/pymoveit2.git
pymoveit2/.docker/run.bash $ROS_DISTRO --network-host --ipc-host --gui
Source build
cd $COLCON_WS
git clone https://github.com/AndrejOrsula/pymoveit2.git src/pymoveit2
rosdep install -y -r -i --rosdistro $ROS_DISTRO --from-paths src/pymoveit2
colcon build --merge-install --symlink-install --cmake-args "-DCMAKE_BUILD_TYPE=Release"
source install/local_setup.bash
Quick start (demo with Franka Emika Panda)
- Configure MoveIt 2 for your robot (install for widely available robots, or build one on your own):
sudo apt install ros-$ROS_DISTRO-moveit-resources-panda-moveit-config ros-$ROS_DISTRO-controller-manager
- Launch the MoveIt 2 setup for your robot:
ros2 launch moveit_resources_panda_moveit_config demo.launch.py
- Move the robot via
pymoveit2examples:
ros2 run pymoveit2 ex_joint_goal.py
Nothing moved? Run ros2 run pymoveit2 ex_doctor.py to investigate the problem.
Examples
Kinematics
# Forward (joint positions -> end effector pose)
ros2 run pymoveit2 ex_fk.py
# Inverse (end effector pose -> joint positions)
ros2 run pymoveit2 ex_ik.py --ros-args -p position:="[0.3, 0.0, 0.3]" -p quat_xyzw:="[0.0, 0.0, 0.0, 1.0]"
Motion planning and execution
File truncated at 100 lines see the full file
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Changed
- CI: Use default entrypoint in the Docker verification step (89efdce) by @AndrejOrsula
- Update README badges (cfa4fdc) by @AndrejOrsula
[5.0.0] - 2026-09-16
Added
- Add
ex_session.pyto expected executables within Debian package check (bdec262) by @AndrejOrsula - Add example for
RobotSessionusage viaconnect()(f055649) by @AndrejOrsula - CI: Add PyPI release workflow for Python package distribution (f8a59d8) by @AndrejOrsula
- CI: Add Docker release workflow (f39838f) by @AndrejOrsula
- Add doctor example to help with diagnosing MoveIt 2 setup issues (3911a84) by @AndrejOrsula
- Docker: Add Dockerfile and helper scripts (9d32e1c) by @AndrejOrsula
- Add simplified RobotSession manager for MoveIt2 interfaces (41754d7) by @AndrejOrsula
- Add script for running tests across different ROS 2 distributions (53ae617) by @AndrejOrsula
- Add integration tests (57b3886) by @AndrejOrsula
- Add typecheck test (3d0060e) by @AndrejOrsula
- Add core tests (31d37b8) by @AndrejOrsula
- Add Python package manifest and metadata (de8842c) by @AndrejOrsula
- Add automated robot description discovery (5c941c4) by @AndrejOrsula
- Gitignore: Add cache and coverage reports (f82f918) by @AndrejOrsula
- Added joints jogging with MoveIt2 servo (1416cb5) by @macmacal
Changed
- Update CHANGELOG for 5.0.0 (release) (98db391) by @AndrejOrsula
- Docker: Update .dockerignore to allow helper scripts (e0d2194) by @AndrejOrsula
- Build(deps): bump actions/upload-artifact from 4.6.2 to 7.0.1 (e5edd27) by @dependabot[bot] in #135
- Build(deps): bump actions/download-artifact from 4.3.0 to 8.0.1 (60842da) by @dependabot[bot] in #137
- Build(deps-dev): bump mypy from 1.15.0 to 2.3.1 in /.ci (6de83c7) by @dependabot[bot] in #134
- Build(deps-dev): bump coverage from 7.6.10 to 7.16.0 in /.ci (31369e5) by @dependabot[bot] in #136
- Update CHANGELOG for 5.0.0 (76eb79c) by @AndrejOrsula
- Deprecate
max_stepparameter in favor ofcartesian_max_step(d101370) by @AndrejOrsula - Update documentation for the 5.0.0 release (d83a4c3) by @AndrejOrsula
- CI: Update Debian package build workflow (69c4801) by @AndrejOrsula
- CI: Update Dependabot automation (99581a9) by @AndrejOrsula
- CI: Automate testing and codecov reporting across ROS 2 distributions (fb66745) by @AndrejOrsula
- CI: Update pre-commit workflow (cbf470f) by @AndrejOrsula
- Update examples (0371a5d) by @AndrejOrsula
- Update ROS 2 package manifest (7b2824b) by @AndrejOrsula
- Standardize MoveIt2Servo across different ROS 2 distributions (b055206) by @AndrejOrsula
- Refactor the unified gripper interface with lifecycle management and joint state validation (6654cd6) by @AndrejOrsula
- Refactor MoveIt2 interface with lifecycle management and error handling (2643626) by @AndrejOrsula
- License: Update copyright year to 2026 (0fcccf1) by @AndrejOrsula
- Pre-commit: Update hooks (c2bbfb4) by @AndrejOrsula
- Pre-commit: Update setup script usage message (3b9d727) by @AndrejOrsula
- Build(deps): bump actions/setup-python from 6 to 7 (149c164) by @dependabot[bot] in #132
- Build(deps): bump actions/checkout from 6 to 7 (b1bcfe3) by @dependabot[bot] in #131
- Build(deps): bump dependabot/fetch-metadata from 2 to 3 (680bdf9) by @dependabot[bot] in #129
- Apply the custom start joint state to the request (900c137) by @AndrejOrsula in #127
- Avoid blocking update planning scene (64ce749) by @AndrejOrsula in #126
- Docs: Update naming from Ignition to Gazebo (3568a98) by @AndrejOrsula in #125
- Use context managers for mutex (732cbc5) by @mfinean in #113
- Merge pull request #124 from christian-rauch/ci_allow_concurrency (d5fc691) by @christian-rauch in #124
- Allow concurrent CI jobs (9d653b1) by @christian-rauch
- Merge pull request #117 from macmacal/bugfix/servo_topic_name_typo (36b6ca7) by @christian-rauch in #117
- Merge remote-tracking branch ‘origin/main’ into bugfix/servo_topic_name_typo (083bda2) by @AndrejOrsula
- Merge pull request #118 from macmacal/feature/add_servo_jogging (79088ac) by @christian-rauch in #118
- Merge remote-tracking branch ‘origin/main’ into feature/add_servo_jogging (df707fc) by @AndrejOrsula
- CI: Disable pull_request trigger for the build workflow (e581b73) by @AndrejOrsula in #121
- Build(deps): bump actions/checkout from 5 to 6 (e40c904) by @dependabot[bot] in #120
- Merge pull request #115 from AndrejOrsula/ci_run_example (8c562a4) by @christian-rauch in #115
- Handle ExternalShutdownException during wait for joint states (20695be) by @christian-rauch
- Run ‘ex_pose_goal’ example (7b74438) by @christian-rauch
- Replace deprecated ‘warn’ with ‘warning’ (efe253a) by @christian-rauch
- Replace internal ‘_logger’ member with public ‘get_logger()’ method (c63e58f) by @christian-rauch
- Install ROS 2 CLI Packages (db8737c) by @christian-rauch
Fixed
- CI: Fix test for documenting script usage (c5a30ad) by @AndrejOrsula
- Fix dockerignore matches across tests (747ea2a) by @AndrejOrsula
- CI: Fix path to scripts and set coverage threshold to 65% (5de2535) by @AndrejOrsula
- Fix type error in mesh upload (b25c9a6) by @grahas in #133
- Fixed topic path for servo commands (5c6b24b) by @macmacal
Removed
- Remove non-existing ‘master’ branch (cce4671) by @christian-rauch
New Contributors
[4.2.0] - 2025-10-31
Added
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake | |
| ament_cmake_python | |
| action_msgs | |
| control_msgs | |
| geometry_msgs | |
| moveit_msgs | |
| rclpy | |
| sensor_msgs | |
| shape_msgs | |
| std_msgs | |
| std_srvs | |
| trajectory_msgs | |
| rcl_interfaces | |
| ament_cmake_pytest |



