IsaacLab 3 Migration Pin#
ProtoMotions’ IsaacLab backend targets the public IsaacLab develop line that
includes the nested rigid-body contact-sensor fix from issue #5085 (merged in
PR #6259, merge commit 17136c6).
Pinned revision#
Public IsaacLab commit:
4ecd0b036da19ff6ad2bb4d621f886b63e9f6db8Resolved: 2026-07-16
Guarantees: newer than
17136c6/ PR #6259
Humanoid assets#
Humanoid robot configs declare only MJCF via RobotAssetConfig.asset_file_name.
At IsaacLab scene construction, convert_robot_mjcf_to_usd() invokes IsaacLab
3 MjcfConverterCfg / MjcfConverter and spawns through UsdFileCfg.
Contact-sensor prim paths are resolved from the converted USD hierarchy
(flat or nested). Non-IsaacLab simulators continue to load the same MJCF files.
Temporary MJCF importer compatibility#
The IsaacLab 3 converter currently collapses multiple single-axis MJCF joints between the same bodies into a PhysX D6 joint. ProtoMotions installs a narrow compatibility repair at first conversion that preserves the shared source frame, restores MuJoCo spring gains, and locks unused D6 axes. IsaacLab still owns the conversion; the repair is removed once the upstream importer includes the corresponding fix. The converter cache includes the repair version, so a USD generated before an update is not reused silently.
For SOMA and SMPL, IsaacLab exposes the collapsed axes with :0, :1, and
:2 suffixes. ProtoMotions maps those backend names back to the semantic MJCF
DOF names before configuring actuators and simulator state.
Kit-free dry run#
Unit tests inject a converter factory or set
PROTOMOTIONS_ISAACLAB_MJCF_DRY_RUN=1 to exercise path/config/caching without
starting Kit.
Headless smoke (requires IsaacLab 3 + Kit)#
Run in an IsaacLab 3 environment checked out at the pin above:
python protomotions/inference_agent.py \\
--checkpoint data/pretrained_models/motion_tracker/g1-bones-deploy/last.ckpt \\
--motion-file data/motion_for_trackers/g1_bones_seed_mini.pt \\
--simulator isaaclab --num-envs 1 --headless
That path converts the robot MJCF, builds the articulation/contact sensors, and
steps physics. In the local verification, Kit reached scene setup and policy
materialization before a ten-minute bound expired during cold Torch warm-up.
The direct simulator tutorial (examples/tutorial/0_create_simulator.py)
using the same pinned runtime initialized, reset, stepped, and read state for
more than 3,800 action/physics cycles before its 180-second guard expired. Allow
more time on a cold machine for the first policy compilation.