Code Map: Where Should You Change Things?

This chapter is package-level navigation for the refactored external task layout. The key distinction is that this repository only contains HOMIE-specific extensions; the general framework directories now live upstream in the installed mjlab package.

Key directories

Directory

What you do here

src/mjlab_homierl/__init__.py

Entry-point task registration. This is where the two HOMIE task ids are registered against env cfg, rl cfg, and runner class.

src/mjlab_homierl/homie_env_cfg.py

Base HOMIE manager configuration: commands, observations, rewards, terminations, events, and curriculum shared by H1 variants.

src/mjlab_homierl/env_cfgs.py

H1-specific overrides: lower-body action split, upper-body disturbance action, contact sensors, play-time overrides, and with_hands logic.

src/mjlab_homierl/mdp/

HOMIE-specific commands, observations, rewards, terminations, and curriculum helpers.

src/mjlab_homierl/rl_cfg.py

Actor / critic / algorithm dataclasses aligned to modern mjlab RL config structure.

src/mjlab_homierl/rl/

Package-local HIMPPO implementation, custom runner, and ONNX export.

src/mjlab_homierl/robots/

H1 XML assets, Robotiq assets, and spec assembly helpers.

src/mjlab/scripts/

No longer part of this repository. train and play come from the installed upstream mjlab package.

tests/

Package-only regression tests for task registration, env cfgs, RL cfgs, and H1 asset assembly.

docs/

Sphinx documentation (this walkthrough lives here too).

What is upstream now?

When you need framework internals, look in upstream mjlab for:

  • mjlab.envs: ManagerBasedRlEnv and generic env utilities

  • mjlab.managers: manager classes and term cfg machinery

  • mjlab.scene / mjlab.sim: scene assembly and MuJoCo runtime

  • mjlab.rl: vec-env wrapper and base runner integration