SRMP is a motion planning library for robotic manipulation built on state-of-the-art search-based algorithms. It produces consistent, predictable motions backed by rigorous theoretical guarantees, and plans for up to dozens of manipulators at once while guaranteeing collision-free execution — between robots and with the environment.
Why SRMP?
Existing motion planning frameworks often struggle with the demands of high-stakes applications, where predictability and repeatability are critical. SRMP addresses these challenges with search-based planning, giving motions that are both efficient and reliable — for single-arm manipulation, industrial automation, mobile manipulators and large-scale multi-robot coordination.
Key features
- Multi-robot motion planning — first-of-its-kind support for coordinated motions in multi-manipulator systems.
- Reliable, consistent trajectories — predictable and repeatable, for high-precision and safety-critical use.
- Two collision-checking backends — coal mesh collision checking, and the VAMP SIMD backend for supported robots (sub-millisecond planning on uncluttered scenes).
- Mobile manipulators — whole-body planning for arm-on-base systems with base-aware heuristics.
- Seamless integration — works with MuJoCo, Sapien, Genesis, PyBullet and Isaac; MoveIt! plugin for deployment on real systems.
- Python and C++ — one library for research and industrial workflows.
Installation
pip install srmp
Prebuilt wheels for Python 3.9–3.14:
| Platform | Requirement |
|---|---|
| Linux x86-64 (manylinux) | CPU with AVX2 (Intel Haswell 2013+ / AMD Zen+) — the VAMP backend is compiled for x86-64-v3. import srmp checks for it and raises a clear ImportError otherwise. |
| macOS Apple Silicon | macOS 11+ |
Other platforms, older CPUs, or building from source: see instructions.md.
Quick start
import numpy as np
import srmp
planner = srmp.PlannerInterface()
planner.add_robot("panda") # downloaded from the robot registry on first use
# An obstacle in the scene.
box = srmp.Pose()
box.p = np.array([0.5, 0.2, 0.4])
planner.add_box("box", np.array([0.1, 0.1, 0.4]), box)
# Weighted A* with a BFS workspace heuristic; the collision backend picks
# VAMP when the robot supports it, coal otherwise.
planner.make_planner(["panda"], {
"planner_id": "wAstar", "heuristic": "bfs", "weight": "10",
"validity_backend": "auto",
})
start = np.radians([50, 47, -10, -35, -22, 93, 39])
goal_pose = srmp.Pose()
goal_pose.p = np.array([0.642, -0.068, 0.505])
goal_pose.q = np.array([0.0, 0.0, 0.0, 1.0])
goal = srmp.GoalConstraint(srmp.GoalType.POSE, [goal_pose])
traj = planner.plan(start, goal)
print(len(traj.positions), "waypoints, backend:", planner.get_active_validity_backend())
Joint-space goals use srmp.GoalConstraint(srmp.GoalType.JOINTS, q_goal). For several robots, make_planner([...], ctx) with more than one articulation and plan_multi(...).
Robots
Robot descriptions are downloaded on demand from the SRMP registry — panda, ur5, ur10e, fetch, kinova_gen3, xarm6, ridgeback_ur10e and others (srmp.robots.list_available()). Your own robot: srmp.robots.register("name", urdf_path=..., srdf_path=..., end_effector=...), or pass a URDF path to add_robot.
The VAMP backend ships with modules for panda, ur5, fetch and ridgeback_ur10e; every other robot plans on coal. validity_backend: "auto" selects per robot, "vamp" insists and raises if unavailable.
Planners
Single robot: Astar, wAstar, ARAstar, MHAstar, wPASE (parallel), MGS (multi-graph search), vamp_rrtc. Multi-robot: ECBS, xECBS. Parameters, mobile-manipulator setup and motion-primitive files are covered in instructions.md.
Visualization and agent
- Viser and MeshCat visualizers:
srmp.ViserPlannerInterface,srmp.VisualPlannerInterface— drop-in replacements forPlannerInterfacewith an interactive goal gizmo and plan panel. - Agentic mode:
pip install "srmp[agent]", thenpython -m srmp.agent.cliorpython -m srmp.agent.guito drive the planner in natural language (Gemini by default). - Scenes and plans round-trip through
save_scene/load_scene/save_plan/load_plan— see Saving and Loading.
Links
- Documentation: https://srmp.readthedocs.io
- Source and issues: https://gitlab.com/robot_planning/open/ims_manip
- Developer guide (building, backends, planner reference): instructions.md
License
AGPL-3.0-or-later. See LICENSE.
Metadata
Release files for srmp 0.1.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| srmp-0.1.6-cp314-cp314-manylinux_2_35_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| srmp-0.1.6-cp313-cp313-manylinux_2_35_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| srmp-0.1.6-cp312-cp312-manylinux_2_35_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| srmp-0.1.6-cp311-cp311-manylinux_2_35_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
| srmp-0.1.6-cp310-cp310-manylinux_2_35_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp310-cp310-macosx_11_0_arm64.whl | CPython 3.10 | CPython 3.10 | macOS 11.0+ ARM64 | Details |
| srmp-0.1.6-cp39-cp39-manylinux_2_35_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.35+ x86-64 | Details |
| srmp-0.1.6-cp39-cp39-macosx_11_0_arm64.whl | CPython 3.9 | CPython 3.9 | macOS 11.0+ ARM64 | Details |
Total release size: 145.7 MB
Release files / srmp-0.1.6-cp314-cp314-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp314-cp314-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.14 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
78ef4ad0d0b96e86dc5af63053f52c00841ddf40f3e64f2d60bf33173c9253d9
|
|
BLAKE2b-256 checksum How to use checksums |
90bc3362efdcaa3dc773b0965c4592fe007d7dbf413adf94d3de94a7b9e75b8e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.8 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d1ede999069c4f09793cda8d685618d1e61d73cbefcff7fcf80b1686ce107764
|
|
BLAKE2b-256 checksum How to use checksums |
74c23c071a4141aa4b522f461236f7355a09c6acc992043a03468fe23538bf73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp313-cp313-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp313-cp313-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.13 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d9716ac82c90559c7a9d03410439e6710a966a3b1ecd711359dcefec344b900
|
|
BLAKE2b-256 checksum How to use checksums |
04aac4dab93b9d67e8bb9a9866225ed54530a4fe57a44eda898d721361c817b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.8 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d6d0afeea03034755dfab8875728886c53e8e9e493fe948fada461a97e60a415
|
|
BLAKE2b-256 checksum How to use checksums |
298068f7fa9478d93a9ea6bc1513772a5e3dd13bc0dba779c5ad5e49764313e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp312-cp312-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp312-cp312-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.12 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
8d3d4254ece23ad71980abe22348c1b1ec3ca23c1ff1783f9d721372a72ad987
|
|
BLAKE2b-256 checksum How to use checksums |
ac12c02a2b1fab81fce3be57f1eb5f679feab14b55f14ed11561b30576071d2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.8 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
57c3d3ecdebbc7b9be3ff5dcb6a77345ddf7f01af34e9546b0861004533f4383
|
|
BLAKE2b-256 checksum How to use checksums |
8e0df83c88fd33da0f3c2e6651ef087c7db613f3c78bed6674dd49ae8113927e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp311-cp311-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp311-cp311-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.11 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
3c52dd7311c69429d077b6d4a565bd425a1ecbb2e2117e4ae00eb23b705c8dbf
|
|
BLAKE2b-256 checksum How to use checksums |
ca9b3d8debbc52e6e77926d2e0083fcc322510a28640c3185146ee73fc2c304e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.8 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f5ace6b4a4d1c0821ff9137fd90836456af1d2d4db27fdfe89dc2d30399c54f6
|
|
BLAKE2b-256 checksum How to use checksums |
4320e04dadc3c9464460028812df973172428ac7c97074b05fdd0bb3d02dad53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp310-cp310-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp310-cp310-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.10 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
c93b1d1ac1a34837d70eed652acef587c0c94b0eec15124e80dba1da81ad63c0
|
|
BLAKE2b-256 checksum How to use checksums |
a1db01c542edcc2ef96d6a3862332a4d8862326c9d7ee6402e53ecda04a0486a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.8 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
018780a966620789048b1fb127f46b3d80c15c4e101a2c3032557e3db566ca1c
|
|
BLAKE2b-256 checksum How to use checksums |
b5240d719205df62011c3eaac11989564605e918df1b438094fd2463ca979cfc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp39-cp39-manylinux_2_35_x86_64.whl
| Download URL | srmp-0.1.6-cp39-cp39-manylinux_2_35_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.9 Linux glibc 2.35+ x86-64 |
|
SHA-256 checksum How to use checksums |
b420c79520b14ae13b6a13ef22edca8559ad14026d7c43d862245c1ca184cd18
|
|
BLAKE2b-256 checksum How to use checksums |
888acb89eef0928dddb1d5e33bfb767a8d87bb5e7116f171795b6e6d6a297bd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / srmp-0.1.6-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | srmp-0.1.6-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 11.2 MB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
831de6d69f99a958be3509849ea689b0286320c39bb4846fc452eb5fad70bc57
|
|
BLAKE2b-256 checksum How to use checksums |
773b80b57a62b0bfeb59cbe516bf50d715db0b24fb22f2f41c734744afa00200
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|