Newton bed-making: two G1s make a bed on Isaac Lab 3.0 (MJWarp) over MHS (refs #9) - #10
Newton bed-making: two G1s make a bed on Isaac Lab 3.0 (MJWarp) over MHS (refs #9)#10armwaheed wants to merge 1 commit into
Conversation
…ver MHS (refs #9) The Newton twin of examples/isaac_bed_making, ported off PhysX/Isaac Sim onto the Isaac Lab 3.0 Newton (MuJoCo-Warp) backend — physics is Newton, the render is Newton's own headless GL viewer, no Omniverse Kit / Isaac Sim. examples/newton_bed_making/: - demo.py: bespoke single-scene render — two G1 articulations flank one correctly proportioned bed (2.0x1.8x0.61) + headboard + two propped pillows + a drawn cover, each driven by the trained bed-reach policy, coordinating over MHS, captured to MP4. - bed_reach.py: deploy driver reproducing the policy's 127-D obs off the Articulation buffers + a bilateral mirror so the +y-side robot draws headward with its right hand. - geometry.py: authoritative bed/robot geometry + quaternion helpers (XYZW — the Newton backend's convention; a WXYZ value silently tips the robot and the policy then reads inverted gravity and collapses). - MHS layer (coordination/swarm_driver/mhs_trace/mhs_sidecar) shared with the Isaac demo, engine-agnostic; newton_g1_locomotion.py = the shipped-walk-policy proof. - media/: rendered MP4, a hero still, and the captured MHS message-flow trace. Both robots balance on their own two feet (free base is the default; --base-hold is a gantry fallback). The sheet is a documented visible PROXY (a rigid drawn cover): Isaac Lab's coupled MJWarp+VBD cloth spawner hard-requires omni.physx (Kit), unavailable here — the issue's stated fallback. Real fabric is the tracked follow-up (see #9). Bed, pillows, two policy-driven robots and MHS coordination are real. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Superseded — please close. This work continued in cagataycali/strands-robots-model-hardware-standard#2, which is where the bed-making demo now lives (that repo is private, which also settles the MHS pre-announcement exposure question — I did not merge this one, because reviewing it against the Learning Path turned up problems that made merging the wrong move:
All of these are fixed in the new PR: retrained policy (with a heading anchor, which was the missing reward term), the training env and checkpoint committed alongside the demo, an SDK-stamped trace, a hand-driven cover, and a per-run summary that reports pelvis height, stance drift, heading drift and cover motion so a bad run is reported rather than left to the eye. The genuinely valuable findings from this PR carried over — above all the XYZW-vs-WXYZ quaternion gotcha, which is preserved verbatim in |
|
Superseded — please close. This work continued in https://github.com/cagataycali/strands-robots-model-hardware-standard/pull/2, which is where the bed-making demo now lives |
The Newton twin of
examples/isaac_bed_making, ported off PhysX/Isaac Sim onto the Isaac Lab 3.0 Newton (MuJoCo-Warp) backend — physics is Newton, the render is Newton's own headless GL viewer, no Omniverse Kit / Isaac Sim. Adds a self-containedexamples/newton_bed_making/.What it does
Two Unitree G1s flank one correctly-proportioned bed (2.0×1.8×0.61 mattress + headboard + two propped pillows), each driven by the trained whole-body bed-reach policy, reach onto it and draw the sheet headward toward the pillows — each balancing on its own two feet (free base, no pin, no cheats) — while coordinating as equal peers over MHS. Rendered headless to an MP4.
media/newton_bed_making.mp4· still:media/hero.png· MHS trace:media/mhs_trace.jsonHow it's built
G1_MINIMAL_CFGarticulations + furniture + a cover in oneSimulationContexton the Newton MJWarp preset.Articulationbuffers; the 37-D action →act*0.5 + default. The policy is left-handed, so the +y robot is driven through a bilateral mirror so both draw headward.launch_simulation(notAppLauncher), headless capture via Newton'sViewerGL, per-shape colours set on the Newton model (USD materials are skipped without Kit).The one gotcha worth flagging
This Isaac Lab Newton build stores orientation as XYZW, not the usual WXYZ. A WXYZ spawn quaternion silently rotates the robot about X, so the policy reads inverted gravity and collapses — it looks like a fragile policy but it's a quaternion-order bug. Fixed in
geometry.yaw_to_quat; with it correct the policy balances free-base exactly as in its training env.Honest limitations (all in the README)
omni.physx(Kit), unavailable here — the issue's stated fallback. Real fabric is the tracked follow-up (see Remake the Newton (Isaac Lab 3.0) bed-making demo: two robots + real bed dims + soft sheet #9).mhs+ nats-server).Refs #9 — kept open for the real-fabric follow-up; this lands the convincing baseline.
🤖 Generated with Claude Code