Skip to content

feat(manipulation): add RoboPlan-native OInK backend - #3230

Open
TomCC7 wants to merge 24 commits into
mainfrom
cc/feat/roboplan-oink
Open

feat(manipulation): add RoboPlan-native OInK backend#3230
TomCC7 wants to merge 24 commits into
mainfrom
cc/feat/roboplan-oink

Conversation

@TomCC7

@TomCC7 TomCC7 commented Jul 27, 2026

Copy link
Copy Markdown
Member

Contribution path

  • No linked issue. The repository includes the OpenSpec change
    add-roboplan-oink-kinematics.

Problem

RoboPlan-backed manipulation stacks implicitly use Pink for inverse kinematics.
This separates IK from the RoboPlan scene, planning-group mappings, collision
state, and native model semantics.

Solution

  • Make RoboPlanWorld implement KinematicsSpec with bundled
    roboplan.optimal_ik.
  • Select RoboPlan OInK when a RoboPlan world omits kinematics configuration,
    while retaining Pink as the default for other worlds and as an explicit
    override.
  • Support world-frame single-target, multi-target, auxiliary, disjoint
    same-robot, and composite multi-robot requests.
  • Reuse one request-local OInK instance across bounded attempts, validate
    convergence independently, check optional composite endpoint collisions, and
    restore the shared scene in finally.
  • Add focused unit coverage, pinned RoboPlan integration coverage, user docs,
    ADRs, and the complete OpenSpec design record.

The first version intentionally omits a self-collision barrier and persistent
OInK caching. Client-level simulation QA remains deferred and is recorded as
the sole unchecked OpenSpec task.

How to Test

uv sync --extra manipulation --inexact
uv run pytest dimos/manipulation/test_roboplan_oink_integration.py -q
uv run pytest dimos/manipulation -q

Latest local results:

  • Focused change suite: 122 passed
  • Full manipulation suite: 347 passed, 12 deselected
  • Ruff, mypy, documentation checks, OpenSpec validation, and git diff --check
    passed

AI assistance

Codex with GPT-5 helped explore the design, implement the change, write tests
and documentation, and prepare this PR. The author should review every line
before merge.

Checklist

  • I have read and approved the CLA.

@mintlify

mintlify Bot commented Jul 27, 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 Jul 27, 2026, 10:00 PM

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

@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 86.74033% with 72 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
dimos/manipulation/planning/world/roboplan_oink.py 81.15% 19 Missing and 17 partials ⚠️
...mos/manipulation/test_roboplan_oink_integration.py 41.17% 20 Missing ⚠️
...imos/manipulation/planning/world/roboplan_world.py 68.42% 8 Missing and 4 partials ⚠️
dimos/manipulation/test_roboplan_world.py 99.12% 0 Missing and 2 partials ⚠️
dimos/manipulation/planning/factory.py 92.30% 0 Missing and 1 partial ⚠️
dimos/manipulation/planning/kinematics/config.py 75.00% 0 Missing and 1 partial ⚠️
@@            Coverage Diff             @@
##             main    #3230      +/-   ##
==========================================
+ Coverage   74.90%   74.95%   +0.05%     
==========================================
  Files        1114     1116       +2     
  Lines      106086   106610     +524     
  Branches     9665     9718      +53     
==========================================
+ Hits        79461    79914     +453     
- Misses      23816    23865      +49     
- Partials     2809     2831      +22     
Flag Coverage Δ
OS-ubuntu-24.04-arm 68.59% <86.55%> (+0.09%) ⬆️
OS-ubuntu-latest 70.59% <86.55%> (+0.07%) ⬆️
Py-3.10 70.59% <86.55%> (+0.08%) ⬆️
Py-3.11 70.59% <86.55%> (+0.08%) ⬆️
Py-3.12 70.59% <86.55%> (+0.07%) ⬆️
Py-3.13 70.59% <86.55%> (+0.07%) ⬆️
Py-3.14 70.60% <86.55%> (+0.07%) ⬆️
Py-3.14t 70.59% <86.55%> (+0.07%) ⬆️
SelfHosted-Large 29.31% <20.38%> (-0.02%) ⬇️
SelfHosted-Linux 35.88% <21.01%> (-0.06%) ⬇️
SelfHosted-macOS 34.97% <21.01%> (-0.06%) ⬇️

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

Files with missing lines Coverage Δ
dimos/manipulation/manipulation_module.py 55.46% <100.00%> (ø)
...imos/manipulation/planning/world/roboplan_model.py 83.53% <ø> (-0.14%) ⬇️
dimos/manipulation/test_manipulation_unit.py 100.00% <100.00%> (ø)
dimos/manipulation/test_planning_factory.py 98.41% <100.00%> (+0.49%) ⬆️
dimos/manipulation/planning/factory.py 79.31% <92.30%> (+4.95%) ⬆️
dimos/manipulation/planning/kinematics/config.py 87.87% <75.00%> (+1.67%) ⬆️
dimos/manipulation/test_roboplan_world.py 98.49% <99.12%> (+0.26%) ⬆️
...imos/manipulation/planning/world/roboplan_world.py 75.92% <68.42%> (-1.26%) ⬇️
...mos/manipulation/test_roboplan_oink_integration.py 41.17% <41.17%> (ø)
dimos/manipulation/planning/world/roboplan_oink.py 81.15% <81.15%> (ø)

... and 2 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.

@mintlify

mintlify Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

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

Project Status Preview Updated (UTC)
dimensional 🟡 Building Jul 27, 2026, 9:59 PM

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

@TomCC7
TomCC7 marked this pull request as ready for review July 28, 2026 03:09
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