feat(manipulation): add roboplan Cartesian planning - #3240
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
Codecov Report❌ Patch coverage is @@ Coverage Diff @@
## main #3240 +/- ##
==========================================
+ Coverage 75.21% 75.31% +0.10%
==========================================
Files 1128 1131 +3
Lines 107983 108661 +678
Branches 9751 9908 +157
==========================================
+ Hits 81220 81842 +622
- Misses 23951 23983 +32
- Partials 2812 2836 +24
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 4 files with indirect coverage changes 🚀 New features to boost your workflow:
|
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
FYI we just did a big overhaul of the Cartesian planner in roboplan, based on some testing we did for a demo. It also changes some of the options slightly, so it will be a breaking change. This is not yet on PyPi, but will be available in the upcoming 0.6.0 release. Or you can try building a wheel from the latest version for now. |
Thanks for your attention on our project! We'll just migrate after the new version is officially released, and looking forward to all the new updates from there :) |
Contribution path
Problem
The manipulation planner contract can only request collision-free joint-space
paths. It cannot express a straight tool-center-point motion for approaches,
retreats, or interactive Cartesian moves, even though RoboPlan provides an
official Cartesian path planner.
The Viser manipulation panel also resolves its Cartesian gizmos to joint goals
and invokes free-space planning, so there is no convenient way to exercise or
preview a linear TCP path.
Solution
plan_linear_cartesian_pathplanner operationwith absolute world-frame poses, relative Cartesian deltas, and the existing
target-plus-auxiliary-group convention.
planner, including synchronized multi-group timing and full-model start-state
handling.
velocities, and atomically post-validate waypoints and interpolated edges
against the DimOS collision world.
UNSUPPORTEDfrom planner backends without linear Cartesian support;never substitute a free-space path for a failed linear request.
planner-name compatibility path.
Linear Cartesian for absolute transform-control targets. Existing preview
and synchronized execution reuse the planner-supplied trajectory directly.
The public RPC, skill, MCP, and CLI motion APIs remain unchanged.
How to Test
Run the interactive feature:
Move the TCP gizmo, choose Linear Cartesian, click Plan, and then
Preview.
Automated validation performed:
uv run pytest dimos/manipulation -m 'not (self_hosted or mujoco or self_hosted_large)' uv run pytest -m self_hosted dimos/manipulation/test_roboplan_world_integration.py uv run mypy dimos/manipulationResults: 360 manipulation tests passed, 2 real-RoboPlan integration tests
passed, and mypy passed across all manipulation source files.
AI assistance
OpenAI Codex with GPT-5 was extensively involved in API exploration,
implementation, tests, documentation, and validation. The design decisions and
scope were reviewed collaboratively with the author.
Checklist