Skip to content

fix(manip): stand the sim model on the pedestal - #3733

Open
mustafab0 wants to merge 1 commit into
mainfrom
mustafa/fix/sim-pedestal-and-gripper-reopen
Open

fix(manip): stand the sim model on the pedestal#3733
mustafab0 wants to merge 1 commit into
mainfrom
mustafa/fix/sim-pedestal-and-gripper-reopen

Conversation

@mustafab0

@mustafab0 mustafab0 commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

A pick in xarm-perception-sim has never been able to succeed. make_xarm7_sim_robot_config placed the arm at the origin while xarm7.xml bolts link_base to a 12cm pedestal, so the planner solved every pose 12cm below the arm it was driving. Forward kinematics for the same joint vector came out 12cm apart between the planning model and MuJoCo, and grasps closed on air with nothing anywhere reporting an error.

The test reads the mount height back out of the scene asset rather than restating it, so the model and the MJCF cannot drift apart again.

Verified on the sim: planning and MuJoCo TCP now agree exactly, and a pick on the cup holds at readback 0.725, inside the band #3701 calibrated.

An earlier revision of this PR also widened arrival in await_gripper_settle so a re-open of already-open jaws could not time out. Greptile was right that it regressed the release path, and it has been withdrawn.

@codecov

codecov Bot commented Aug 27, 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    #3733      +/-   ##
==========================================
- Coverage   77.46%   76.59%   -0.87%     
==========================================
  Files        1302     1304       +2     
  Lines      123061   125994    +2933     
  Branches    10772    11125     +353     
==========================================
+ Hits        95330    96506    +1176     
- Misses      24924    26634    +1710     
- Partials     2807     2854      +47     
Flag Coverage Δ
OS-ubuntu-24.04-arm 73.54% <30.00%> (+0.05%) ⬆️
OS-ubuntu-latest 74.10% <30.00%> (+0.04%) ⬆️
Py-3.10 74.10% <30.00%> (+0.05%) ⬆️
Py-3.11 74.10% <30.00%> (+0.04%) ⬆️
Py-3.12 74.10% <30.00%> (+0.04%) ⬆️
Py-3.13 74.10% <30.00%> (+0.05%) ⬆️
Py-3.14 74.10% <30.00%> (+0.05%) ⬆️
Py-3.14t 74.10% <30.00%> (+0.05%) ⬆️
SelfHosted-Linux 34.84% <100.00%> (-0.02%) ⬇️

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

Files with missing lines Coverage Δ
dimos/robot/manipulators/xarm/config.py 92.98% <100.00%> (+0.06%) ⬆️
dimos/robot/manipulators/xarm/test_model_config.py 100.00% <100.00%> (ø)

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

@greptile-apps

greptile-apps Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This change adds the simulated xArm7 pedestal offset and allows gripper opening to use the configured open-position tolerance. The open wait can accept an unchanged readback that is already within the open band, allowing place to continue into retraction without observing that the accepted open command moved the jaws.

T-Rex validation blocked

The focused gripper reproduction could not execute because .venv/bin/python points to a missing temporary interpreter, and the available fallback Python lacks the pydantic_settings package. Both attempted runs stopped during project import before invoking _open_gripper.

Confidence Score: 4/5

Do not merge until opening requires evidence that the accepted command has taken effect, or otherwise safely distinguishes an already-open gripper from an object-obstructed gripper.

The affected control flow is directly established in the code: the open tolerance is passed to settling, stationary in-band samples are accepted as arrival, and a successful open result allows place to retract. Runtime execution was blocked before the focused reproduction reached that path.

Files Needing Attention: dimos/manipulation/pick_and_place_module.py needs attention, together with the settling behavior in dimos/manipulation/grasp_verification.py.

T-Rex T-Rex Logs

What T-Rex did

  • A focused reproduction for the control and _open_gripper paths was authored and attempted, but the Python interpreter in the prepared virtual environment resolved to a missing executable, causing ModuleNotFoundError: No module named 'pydantic_settings' and preventing gripper settling behavior.
  • Artifacts were uploaded showing the reproduction script and both before-run and after-run logs, which fail due to the same missing dependency and thus produce no gripper behavior results.
  • The environment evidence shows .venv/bin/python is a symlink to the missing temporary Python path, explaining the interpreter failure.
  • A note explains that the artifact-upload mechanism is not available, so uploaded URLs cannot be emitted.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "fix(manip): stand the sim model on the p..." | Re-trigger Greptile

Comment on lines +390 to +392
settle = self._command_and_settle(
config.open_position, group_id, config, config.open_tolerance
)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Arrival masks pending motion

When place starts with stationary gripper feedback between 0.85 and 1.0, passing open_tolerance lets unchanged pre-command readings count as settled before the accepted command moves the jaws, causing the arm to retract and report success while a thin object remains held or is released at the wrong location.

make_xarm7_sim_robot_config placed the arm at the origin while xarm7.xml bolts
link_base to a 12cm pedestal, so the planner solved every pose 12cm below the
arm it was driving. Forward kinematics for the same joint vector disagreed by
exactly that much between the planning model and MuJoCo, and every grasp in
xarm-perception-sim closed on air with nothing anywhere reporting an error.

The test reads the mount height back out of the scene asset rather than
restating it, so the model and the MJCF cannot drift apart again.
@mustafab0
mustafab0 force-pushed the mustafa/fix/sim-pedestal-and-gripper-reopen branch from c527168 to 03fc191 Compare August 27, 2026 21:05
@mustafab0 mustafab0 changed the title fix(manip): stand the sim model on the pedestal and let an open gripper settle fix(manip): stand the sim model on the pedestal Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant