From 8960da7eba072edd13b58b3b636c6cd4032e4d08 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Fri, 7 Aug 2026 22:45:11 -0700 Subject: [PATCH 1/2] feat(lite_biped_debug): add the deployment scene wrapper lite_biped_debug shipped the generated robot-only MJCF but never the scene wrapper its sibling lite_biped has, so there was no floor and no spawn keyframe to bring it up against. humanoid_control's biped_mujoco.launch now resolves `scene` from the selected robot_variant (defaulting to _scene) and errors if the file is absent, so `robot_variant:=lite_biped_debug` cannot work without this. Hand-authored, mirroring lite_biped_scene.xml -- the generator emits only the robot-only VARIANT.xml, which mjlab training reuses as-is with its own terrain. Floor friction and the visual block are byte-identical to lite_biped_scene so a lite_biped vs lite_biped_debug run isolates the FOOT and nothing else. The home keyframe differs only in base z: the box foot sits the pelvis 25 mm lower at the same joint angles, so 0.80 -> 0.775 preserves the spawn clearance. Verified in MuJoCo 3.8.1 -- both scenes load with nq=21 / nu=14 / 14 hinges and spawn at 30.6 mm clearance with zero contacts. The 14 leg joint values match the training default pose (= standby_controller_a). Co-Authored-By: Claude Opus 5 (1M context) --- .../mjcf/lite_biped_debug_scene.xml | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml diff --git a/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml b/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml new file mode 100644 index 0000000..7165bf3 --- /dev/null +++ b/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From d3f6c38d780683218001fa6180e1f8e43d57d074 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Fri, 7 Aug 2026 22:49:36 -0700 Subject: [PATCH 2/2] fix: no literal '--' inside the scene's XML comment A double hyphen is illegal inside an XML comment. MuJoCo's tinyxml2 accepts it, which is why the model loaded fine and the `ros` lane passed, but Python's expat does not -- so tests/test_mesh.py failed to even parse the file at collection. Reworded to a colon, matching how lite_biped_scene.xml phrases the same sentence. Verified with both parsers now: xml.etree parses it, MuJoCo 3.8.1 still loads it (nq=21, nu=14, 30.6 mm spawn gap, 0 contacts), and the full suite passes (1569 passed, 6 skipped). Co-Authored-By: Claude Opus 5 (1M context) --- robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml b/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml index 7165bf3..8da4c61 100644 --- a/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml +++ b/robots/lite_biped_debug/mjcf/lite_biped_debug_scene.xml @@ -3,8 +3,8 @@ robot (lite_biped_debug.xml: freejoint + IMU site/sensors + actuators) on a ground plane, with a `home` keyframe for the standing spawn pose. - Hand-authored (NOT generated), mirroring lite_biped/mjcf/lite_biped_scene.xml - -- the generator emits the robot-only lite_biped_debug.xml (reused as-is by + Hand-authored (NOT generated), mirroring lite_biped/mjcf/lite_biped_scene.xml: + the generator emits the robot-only lite_biped_debug.xml (reused as-is by mjlab training, which adds its own terrain); this wrapper adds the deployment floor + spawn pose. It lives in this mjcf/ dir so the included robot's meshdir ("../meshes/visual/") resolves. Consumed by humanoid_bringup_lite