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
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Jul 28, 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