Code Map: Where Should You Change Things?#
This chapter is “directory-level navigation”. When you already know what you want to change (reward/obs/sim/robot/training scripts), jump to the right folder directly.
Key directories#
Directory |
What you do here |
|---|---|
|
The manager-based environment core ( |
|
Core abstractions: |
|
|
|
|
|
Data interface for robots/objects (root/joint/body/site). Most task terms read data from here. |
|
Sensors (built-in sensors, contact sensors, etc.). Many obs/rewards read from |
|
Asset library (MJCF/XML). G1 is in |
|
Task packages. A task typically contains:
|
|
RSL-RL integration: VecEnv wrapper, policy/algorithm cfg dataclasses. |
|
CLI entrypoints: |
|
Sphinx documentation (this walkthrough lives here too). |
What does a “standard task skeleton” look like?#
Using velocity as an example (applies to humanoids and quadrupeds):
Base task cfg:
src/mjlab/tasks/velocity/velocity_env_cfg.pyRobot override (e.g., g1/go1):
src/mjlab/tasks/velocity/config/g1/env_cfgs.pyRegister task id:
src/mjlab/tasks/velocity/config/g1/__init__.pyMDP terms:
src/mjlab/tasks/velocity/mdp/*(plus reusablesrc/mjlab/envs/mdp/*)
Similarly for tracking:
Base task cfg:
src/mjlab/tasks/tracking/tracking_env_cfg.pyg1 override + registry:
src/mjlab/tasks/tracking/config/g1/*MDP terms:
src/mjlab/tasks/tracking/mdp/*