Skip to main content

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 for PlannerInterface with an interactive goal gizmo and plan panel.
  • Agentic mode: pip install "srmp[agent]", then python -m srmp.agent.cli or python -m srmp.agent.gui to 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.

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)

Table of built distributions (wheels) for srmp 0.1.6
File
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
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page