Remove experimental per-side branch toggles and continuity state from the urdf-loader playback solver. Keep a single lower-branch rule for all chains and update docs to reflect the stable ground-facing behavior.
2.9 KiB
2.9 KiB
Isaac Model
Converted from sim/mujoco/model/walker.xml.
Current Status
- URDF conversion pipeline is in place and regenerates
sim/isaac/model/walker.urdffrom MuJoCo XML. - Standalone browser demo runs via
uv run python -m http.server 8000and loads inurdf-loader. - Cranks rotate continuously through full 360+ cycles in playback.
- Leg/tendon linkage is kinematically solved in playback and stays ground-facing on both near and far sides.
- Anchor diagnostics are enabled in demo: cyan line segments + console distance logs.
Generate URDF (Option A)
python sim/isaac/mjcf_to_urdf_option_a.py \
--input sim/mujoco/model/walker.xml \
--output sim/isaac/model/walker.urdf
Output
- URDF:
sim/isaac/model/walker.urdf - Converter:
sim/isaac/mjcf_to_urdf_option_a.py
Constraint Notes
- URDF is a tree format and cannot represent MuJoCo
equality/connectclosed-loop constraints as true physical constraints. urdf-loaderssupports standard URDF features (includingmimicjoints), butmimicis kinematic coupling and does not create a physics loop constraint.- The generated URDF does not include
mimictags; linkage coupling is handled in demo playback code. - The generated URDF also adds small magenta marker spheres at each dropped MuJoCo
equality/connectanchor so pivot locations are visible in URDF viewers. - For Isaac Sim fidelity, keep the URDF tree and add constraints after import (USD/PhysX joints or an Isaac-side constraints config).
Validation
- XML syntax check:
python -c "import xml.etree.ElementTree as ET; ET.parse('sim/isaac/model/walker.urdf'); print('ok')"
- Visual check: drag and drop the URDF in the online viewer: https://gkjohnson.github.io/urdf-loaders/javascript/example/bundle/index.html
urdf-loaders Playback
- A browser playback helper is provided at
sim/isaac/urdf_loaders_play.js. - Playback sets joint
ignoreLimits=trueso crank joints can rotate continuously through 360+ degrees. - In playback, tendon joints are solved from crank + leg kinematics each frame (approximate closure for cleaner visualization).
- After loading the model in a
urdf-loaderapp and getting arobotinstance:
import { playWalker } from './sim/isaac/urdf_loaders_play.js';
const stop = playWalker(robot);
- Call
stop()to halt animation.
Standalone Demo (uv)
- Files:
sim/isaac/demo/index.htmlsim/isaac/demo/main.js
- Dependencies are loaded from CDN in the browser (
threeandurdf-loader). - The demo draws cyan debug line segments between each paired equality-anchor marker and logs pair distances in the browser console every 0.25s.
- The demo overlays near-side part labels for quick inspection:
CF,CG,AD,BE. - Run a local server from repo root:
uv run python -m http.server 8000
Next
- Add an Isaac constraints companion file to recreate the four MuJoCo loop closures after URDF import.