feat(lite_biped_debug): add the deployment scene wrapper - #14
Merged
Conversation
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 <variant>_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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
lite_biped_debugshipped the generated robot-only MJCF but never the scene wrapper its siblinglite_bipedhas — no floor, no spawn keyframe.This blocks merged code: humanoid_control_ros2#24 made
biped_mujoco.launchresolvescenefrom the selectedrobot_variant(defaulting to<variant>_scene) and error if the file is absent. Sorobot_variant:=lite_biped_debugcurrently fails on a fresh clone.Hand-authored, mirroring
lite_biped_scene.xml— the generator emits only the robot-onlyVARIANT.xml, which mjlab training reuses as-is with its own terrain; this wrapper adds the deployment floor + spawn pose.Keeping the A/B honest
Floor friction and the visual block are byte-identical to
lite_biped_scene, so alite_bipedvslite_biped_debugrun isolates the foot and nothing else.The
homekeyframe differs only in base z. The box foot sits the pelvis 25 mm lower at the same joint angles (0.7443 m above the sole vs 0.7693 m), so0.80 → 0.775preserves the spawn clearance.Verification (MuJoCo 3.8.1)
lite_biped_scenelite_biped_debug_scenenq/nu/ hingesIdentical structure and identical spawn clearance — which is what the base-z change was for. The 14 leg joint values match the training default pose (=
standby_controller_a).🤖 Generated with Claude Code