Skip to content

fix(client): version-skew warning + compiled-XML model fallback - #3

Open
jonathanembleyriches wants to merge 2 commits into
mainfrom
fix/issue76-model-fallback
Open

fix(client): version-skew warning + compiled-XML model fallback#3
jonathanembleyriches wants to merge 2 commits into
mainfrom
fix/issue76-model-fallback

Conversation

@jonathanembleyriches

Copy link
Copy Markdown
Contributor

Problem

A client built with `local_model=False`, or one whose MJB fails to load (the MJB binary format is version-locked to the exact MuJoCo release that saved it), ends up with empty `art.joints` / `art.actuators` and no warning. Every name-based consumer then no-ops: the RoboJuDo policy adapter logs `dof joint 'X' not found in art.joints` for all 29 DoFs, drops all ctrl, and the robot stands still while the pipeline steps. The dashboard shipped exactly this state via a temporary `local_model=False` bypass, which is what URLab-Sim/UnrealRoboticsLab#76 ran into.

Changes

  • MuJoCo version skew warns (major.minor compare) instead of raising `URLabVersionMismatch`. The class stays exported but is no longer raised.
  • MJB load failure falls back to building the local model from the handshake's `mjcf_compiled` + `vfs_assets` (XML parses across MuJoCo versions). If the reply carried no XML, the client refetches the handshake once with `include_assets=true`.
  • A handshake that yields articulations but no model now logs a loud warning that joint/actuator maps are empty.
  • Removed the `mujoco_version_check=False, local_model=False` bypasses from the dashboard connect and the integration conftest.

Testing

uv run pytest tests --ignore=tests/integration
188 passed in 62.37s

4 new tests: skew warns not raises, bypass stays silent, unloadable MJB falls back to compiled XML, unloadable MJB without XML warns loudly. Verified live end to end: dashboard -> BeyondMimic on a G1 scene resolves all 29 joints and the robot tracks the policy.

…XML model
An unloadable MJB (cross-version) now falls back to building the local
model from the handshake's mjcf_compiled + vfs_assets instead of leaving
art.joints/art.actuators silently empty. Removes the local_model=False
bypasses from the dashboard and integration conftest.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jonathanembleyriches