Developer Walkthrough (External HOMIE Package)¶
This walkthrough explains the refactored mjlab-homierl layout: what still
lives upstream in mjlab, what now lives in this repository, and where to
change HOMIE-specific behavior without confusing package-local code with
framework internals.
What you will learn here¶
Package boundaries: which pieces are in upstream
mjlabvs this repo.Code navigation: where HOMIE env cfg, assets, MDP terms, and HIMPPO live.
Task deep-dive: how the H1 HOMIE task is assembled, including the
with_handsvariant and play-time overrides.
Recommended reading order¶
If this is your first time reading the refactored repository, follow the order
below. The pages are intentionally package-specific instead of trying to mirror
all upstream mjlab framework docs.
Contents
- Architecture Overview: External Package on Top of mjlab
- Code Map: Where Should You Change Things?
- Example 3: Homie — Mixed Motion and Disturbances (Unitree H1)
- Task registration
- Task skeleton: make_homie_env_cfg (base cfg)
- Env grouping: train three “subtasks” in one vectorized env
- H1 override: unitree_h1_homie_env_cfg
- Core feature: UpperBodyPoseAction (policy-free, 0-dim action)
- Curriculum: gradually increase disturbance strength
- Rewards & terminations: balancing mixed objectives
- H1 override and H1 constants
- with_hands: gripper variant (policy-free)
- Play-time runner behavior
- Why Homie is a good reference