{"id":30808640,"url":"https://github.com/andrejorsula/pymoveit2","last_synced_at":"2025-09-06T03:51:34.157Z","repository":{"id":37954846,"uuid":"438051779","full_name":"AndrejOrsula/pymoveit2","owner":"AndrejOrsula","description":"Basic Python interface for MoveIt 2 built on top of ROS 2 actions and services","archived":false,"fork":false,"pushed_at":"2025-08-27T12:25:00.000Z","size":829,"stargazers_count":271,"open_issues_count":5,"forks_count":92,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-08-27T21:35:18.510Z","etag":null,"topics":["moveit2","python","robotics","ros2"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndrejOrsula.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-12-13T23:07:48.000Z","updated_at":"2025-08-27T12:21:30.000Z","dependencies_parsed_at":"2023-01-31T01:01:07.024Z","dependency_job_id":"95dbbea8-cc4b-4fca-95b4-c32f31621ad4","html_url":"https://github.com/AndrejOrsula/pymoveit2","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/AndrejOrsula/pymoveit2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejOrsula%2Fpymoveit2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejOrsula%2Fpymoveit2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejOrsula%2Fpymoveit2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejOrsula%2Fpymoveit2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndrejOrsula","download_url":"https://codeload.github.com/AndrejOrsula/pymoveit2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrejOrsula%2Fpymoveit2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273854792,"owners_count":25180014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-06T02:00:13.247Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["moveit2","python","robotics","ros2"],"created_at":"2025-09-06T03:51:32.736Z","updated_at":"2025-09-06T03:51:34.149Z","avatar_url":"https://github.com/AndrejOrsula.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pymoveit2\n\nBasic Python interface for MoveIt 2 built on top of ROS 2 actions and services.\n\n\u003e Note: The official Python library for MoveIt 2 `moveit_py` is now available. Check the announcement [here](https://picknik.ai/moveit/ros/python/google/2023/04/28/GSOC-MoveIt-2-Python-Bindings.html)!\n\n\u003cdiv align=\"center\" class=\"tg-wrap\"\u003e\n\u003ctable\u003e\n\u003ctbody\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"25%\"\u003e\u003cimg width=\"100%\" src=\"https://user-images.githubusercontent.com/22929099/147369355-5f1b33ef-2e18-4042-9ea3-cd85b1a78fa0.gif\" alt=\"Animation of ex_joint_goal.py\"/\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cimg width=\"100%\" src=\"https://user-images.githubusercontent.com/22929099/147369356-b8ad2f4c-1996-47ac-9bfb-7fccd243fd56.gif\" alt=\"Animation of ex_pose_goal.py\"/\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cimg width=\"100%\" src=\"https://user-images.githubusercontent.com/22929099/147369354-640831e2-4661-4f3d-8fc2-3e97d7766e1a.gif\" alt=\"Animation of ex_gripper.py\"/\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cimg width=\"100%\" src=\"https://user-images.githubusercontent.com/22929099/147374152-50128188-ab73-4d55-a537-b641325ce9c6.gif\" alt=\"Animation of ex_servo.py\"/\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd width=\"25%\"\u003e\u003cdiv align=\"center\"\u003eJoint Goal\u003c/div\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cdiv align=\"center\"\u003ePose Goal\u003c/div\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cdiv align=\"center\"\u003eGripper Action\u003c/div\u003e\u003c/td\u003e\n    \u003ctd width=\"25%\"\u003e\u003cdiv align=\"center\"\u003eMoveIt 2 Servo\u003c/div\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n## Instructions\n\n### Dependencies\n\nThese are the primary dependencies required to use this project.\n\n- ROS 2 [Galactic](https://docs.ros.org/en/galactic/Installation.html), [Humble](https://docs.ros.org/en/humble/Installation.html) or [Iron](https://docs.ros.org/en/iron/Installation.html)\n- [MoveIt 2](https://moveit.ros.org/install-moveit2/binary) corresponding to the selected ROS 2 distribution\n\nAll additional dependencies are installed via [rosdep](https://wiki.ros.org/rosdep) during the building process below.\n\n### Building\n\nClone this repository, install dependencies and build with [colcon](https://colcon.readthedocs.io).\n\n```bash\n# Clone this repository into your favourite ROS 2 workspace\ngit clone https://github.com/AndrejOrsula/pymoveit2.git\n# Install dependencies\nrosdep install -y -r -i --rosdistro ${ROS_DISTRO} --from-paths .\n# Build\ncolcon build --merge-install --symlink-install --cmake-args \"-DCMAKE_BUILD_TYPE=Release\"\n```\n\n### Sourcing\n\nBefore utilising this package, remember to source the ROS 2 workspace.\n\n```bash\nsource install/local_setup.bash\n```\n\nThis enables importing of `pymoveit2` module from external workspaces.\n\n## Examples\n\nTo demonstrate `pymoveit2` usage, [examples](./examples) directory contains scripts that demonstrate the basic functionality. Additional examples can be found under [ign_moveit2_examples](https://github.com/AndrejOrsula/ign_moveit2_examples) repository.\n\nPrior 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](https://github.com/AndrejOrsula/panda_ign_moveit2) repository can be used.\n\n```bash\n# RViz (fake) ROS 2 control\nros2 launch panda_moveit_config ex_fake_control.launch.py\n# Gazebo (simulated) ROS 2 control\nros2 launch panda_moveit_config ex_ign_control.launch.py\n```\n\nAfter that, the individual scripts can be run.\n\n```bash\n# Move to joint configuration\nros2 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]\"\n# Move to Cartesian pose (motion in either joint or Cartesian space)\nros2 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\n# Repeatadly toggle the gripper (or use \"open\"/\"close\" actions)\nros2 run pymoveit2 ex_gripper.py --ros-args -p action:=\"toggle\"\n# Example of using MoveIt 2 Servo to move the end-effector in a circular motion\nros2 run pymoveit2 ex_servo.py\n# Example of adding a collision object with primitive geometry to the planning scene of MoveIt 2\nros2 run pymoveit2 ex_collision_primitive.py --ros-args -p shape:=\"sphere\" -p position:=\"[0.5, 0.0, 0.5]\" -p dimensions:=\"[0.04]\"\n# Example of adding a collision object with mesh geometry to the planning scene of MoveIt 2\nros2 run pymoveit2 ex_collision_mesh.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]\"\n```\n\n## Directory Structure\n\nThe following directory structure is utilised for this package.\n\n```bash\n.\n├── examples/              # [dir] Examples demonstrating the use of `pymoveit2`\n├── pymoveit2/             # [dir] ROS 2 launch scripts\n    ├── robots/            # [dir] Presets for robots (data that can be extracted from URDF/SRDF)\n    ├── gripper_command.py # Interface for Gripper that is controlled by GripperCommand\n    ├── moveit2_gripper.py # Interface for MoveIt 2 Gripper that is controlled by JointTrajectoryController\n    ├── moveit2_servo.py   # Interface for MoveIt 2 Servo that enables real-time control in Cartesian Space\n    └── moveit2.py         # Interface for MoveIt 2 that enables planning and execution of trajectories\n├── CMakeLists.txt         # Colcon-enabled CMake recipe\n└── package.xml            # ROS 2 package metadata\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejorsula%2Fpymoveit2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrejorsula%2Fpymoveit2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrejorsula%2Fpymoveit2/lists"}