Skip to content

fix(manipulation): upgrade RoboPlan to 0.6 - #3370

Open
TomCC7 wants to merge 27 commits into
mainfrom
cc/feat/roboplan-upgrade-06
Open

fix(manipulation): upgrade RoboPlan to 0.6#3370
TomCC7 wants to merge 27 commits into
mainfrom
cc/feat/roboplan-upgrade-06

Conversation

@TomCC7

@TomCC7 TomCC7 commented Aug 5, 2026

Copy link
Copy Markdown
Member

Contribution path

  • Small, safe change that does not need a tracking issue

Problem

RoboPlan 0.6.0 removed two Cartesian planner options and changed Cartesian planning to resolve a geometric joint path before TOPP-RA timing. DimOS still exposed and forwarded the removed options, so upgrading the dependency would fail before planning.

DimOS also defaulted Cartesian requests to bounded mode. RoboPlan 0.6 implements bounded mode by globally slowing and re-timing the initial TOPP-RA trajectory to meet Cartesian caps, which made default Viser trajectories unnecessarily slow.

Solution

  • Require RoboPlan 0.6.x and refresh the lockfile.
  • Remove limit_ratio_tolerance and max_attempts_per_step from the DimOS Cartesian path configuration and adapter.
  • Validate toppra_blend_deviation as non-negative.
  • Make time_optimal the default speed mode; callers can still opt into bounded when they require Cartesian speed and acceleration caps.
  • Update the manipulation documentation for the geometric-resolution and TOPP-RA pipeline.
  • Simplify the fake planner options and keep tests focused on DimOS path construction, mode selection, and trajectory conversion instead of mirroring RoboPlan's API.

How to Test

Run the real RoboPlan 0.6.0 Cartesian integration tests:

uv sync --extra manipulation --inexact
uv run pytest dimos/manipulation/test_roboplan_world_integration.py -m self_hosted -v

Additional validation completed:

  • uv run pytest dimos/manipulation -m 'not (self_hosted or mujoco or self_hosted_large)'
  • 391 fast manipulation tests and 2 real RoboPlan 0.6 integration tests pass
  • Targeted mypy and Ruff checks
  • Pre-commit hooks for all changed files

AI assistance

Codex with GPT-5 investigated the upstream API change, implemented the migration, updated tests and documentation, ran validation, and drafted this PR description. The author should review and understand every change before merging.

Checklist

  • I have read and approved the CLA.

TomCC7 and others added 25 commits June 4, 2026 13:41
@mintlify

mintlify Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
dimensional 🟢 Ready View Preview Aug 5, 2026, 6:47 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@greptile-apps

greptile-apps Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR upgrades the manipulation stack to RoboPlan 0.6 and aligns DimOS with its revised Cartesian-planning API.

  • Removes obsolete Cartesian planner options from configuration and adapter forwarding.
  • Makes joint-limit-constrained time-optimal planning the default while preserving bounded mode as an explicit option.
  • Adds validation for TOPP-RA blend deviation and updates tests and documentation.
  • Pins RoboPlan to the compatible 0.6 release series and refreshes the lockfile.

Confidence Score: 5/5

The PR appears safe to merge with no actionable defects identified in the changed behavior.

The dependency declaration and lockfile are synchronized, removed options are consistently dropped from configuration and adapter forwarding, and the intentional default-mode change remains explicitly overridable for callers requiring Cartesian caps.

Important Files Changed

Filename Overview
dimos/manipulation/planning/planners/config.py Changes the default speed mode, removes obsolete options, and rejects negative TOPP-RA blend deviations.
dimos/manipulation/planning/world/roboplan_world.py Stops forwarding the two options removed from the supported DimOS Cartesian configuration.
dimos/manipulation/test_roboplan_world.py Simplifies the fake planner and focuses assertions on path conversion and mode selection.
docs/capabilities/manipulation/index.md Documents RoboPlan 0.6’s geometric-path and TOPP-RA pipeline plus the distinction between time-optimal and bounded modes.
pyproject.toml Constrains RoboPlan to the 0.6 release series in manipulation and lint dependencies.
uv.lock Keeps the frozen dependency graph synchronized with the RoboPlan 0.6 requirement.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[Cartesian targets] --> B[RoboPlanCartesianPathConfig]
    B --> C[Resolve geometric joint path]
    C --> D[TOPP-RA timing]
    D --> E{Speed mode}
    E -->|time_optimal default| F[Joint-limit-constrained trajectory]
    E -->|bounded opt-in| G[Retimed for Cartesian caps]
    F --> H[DimOS trajectory conversion]
    G --> H
Loading

Reviews (1): Last reviewed commit: "fix(manipulation): default Cartesian pla..." | Re-trigger Greptile

@codecov

codecov Bot commented Aug 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

@@            Coverage Diff             @@
##             main    #3370      +/-   ##
==========================================
- Coverage   75.80%   75.79%   -0.01%     
==========================================
  Files        1172     1172              
  Lines      113568   113548      -20     
  Branches    10258    10257       -1     
==========================================
- Hits        86090    86064      -26     
- Misses      24492    24495       +3     
- Partials     2986     2989       +3     
Flag Coverage Δ
OS-ubuntu-24.04-arm 69.92% <85.71%> (-0.01%) ⬇️
OS-ubuntu-latest 71.92% <100.00%> (-0.02%) ⬇️
Py-3.10 71.92% <100.00%> (-0.01%) ⬇️
Py-3.11 71.92% <100.00%> (-0.02%) ⬇️
Py-3.12 71.91% <100.00%> (-0.02%) ⬇️
Py-3.13 71.92% <100.00%> (-0.01%) ⬇️
Py-3.14 71.92% <100.00%> (-0.01%) ⬇️
Py-3.14t 71.92% <100.00%> (-0.01%) ⬇️
SelfHosted-Large 29.61% <57.14%> (+<0.01%) ⬆️
SelfHosted-Linux 35.76% <57.14%> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/manipulation/planning/planners/config.py 100.00% <100.00%> (ø)
...imos/manipulation/planning/planners/test_config.py 100.00% <100.00%> (ø)
...imos/manipulation/planning/world/roboplan_world.py 80.41% <ø> (ø)
dimos/manipulation/test_roboplan_world.py 98.38% <100.00%> (-0.05%) ⬇️
...on/visualization/viser/test_viser_visualization.py 97.16% <100.00%> (ø)

... and 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Aug 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant