How pollen-robotics/microduck_rl works
Microduck RL trains MuJoCo policies for a small biped, exports them for deployment, and supports publishing plus sim-to-real tooling. The main workflow is task configuration and robot/actuator simulation → PPO training → ONNX export → policy packaging. README-described task families are grouped by behavior rather than enumerated individually. The source index supports several implementation links; unsampled wiring is omitted or marked unverified.
Main entry points: train_cli.py PPO training · microduck_velocity_env_cfg.py Locomotion tasks · mdp.py Rewards and MDP · body_server.py MuJoCo body server
Components 23
Training and tasks
- PPO training
src/mjlab_microduck/train_cli.py - Task registry
src/mjlab_microduck/tasks/__init__.py - Locomotion tasks
src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py - Recovery tasks
src/mjlab_microduck/tasks/microduck_standup_env_cfg.py - Sit-stand task
src/mjlab_microduck/tasks/microduck_sitstand_env_cfg.py - Tricks and rollers
src/mjlab_microduck/tasks - Rewards and MDP
src/mjlab_microduck/tasks/mdp.py - Symmetry augmentation
src/mjlab_microduck/tasks/symmetry.py - Policy distillation
src/mjlab_microduck/tasks/distill.py
Robot simulation
- Robot and actuator config
src/mjlab_microduck/robot/microduck_constants.py - BAM friction model
src/mjlab_microduck/actuator/friction_dr_bam.py - Backlash models
src/mjlab_microduck/tasks/backlash.py
Policy delivery
- HF job dispatch
src/mjlab_microduck/train_hook.py - HF job submission
src/mjlab_microduck/hf_jobs.py - ONNX export
src/mjlab_microduck/export.py - Policy publishing
src/mjlab_microduck/publish/cli.py - Policy manifest
src/mjlab_microduck/publish/manifest.py
Simulation tools
- MuJoCo body server
src/mjlab_microduck/sim/body_server.py - Camera simulation
src/mjlab_microduck/sim/camera.py - ToF simulation
src/mjlab_microduck/sim/tof.py - Testbench environment
src/mjlab_microduck/tasks/testbench_env_cfg.py
Other components
- Engineer
- Robot runtime
Connections 27
- Engineer → PPO training: starts training
README.md - PPO training → Task registry: selects task
- Task registry → Locomotion tasks: registers tasks
- PPO training → Locomotion tasks: trains policy
README.md - PPO training → Recovery tasks: trains policy
README.md - PPO training → Sit-stand task: trains policy
README.md - PPO training → Tricks and rollers: trains policy
README.md - Locomotion tasks → Rewards and MDP: uses terms
src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py - Locomotion tasks → Symmetry augmentation: configures
src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py - Recovery tasks → Rewards and MDP: uses terms
src/mjlab_microduck/tasks/microduck_standup_env_cfg.py - Sit-stand task → Rewards and MDP: uses terms
src/mjlab_microduck/tasks/microduck_sitstand_env_cfg.py - Locomotion tasks → Robot and actuator config: configures robot
src/mjlab_microduck/tasks/microduck_velocity_env_cfg.py - Robot and actuator config → BAM friction model: configures actuator
src/mjlab_microduck/robot/microduck_constants.py - Rewards and MDP → BAM friction model: randomizes friction
src/mjlab_microduck/tasks/mdp.py - PPO training → Policy distillation: can distill
- Locomotion tasks → Backlash models: has variants
README.md - Engineer → HF job dispatch: requests HF run
README.md - HF job dispatch → HF job submission: dispatches
src/mjlab_microduck/train_hook.py - PPO training → ONNX export: exports checkpoint
README.md - ONNX export → Policy publishing: provides ONNX
README.md - Policy publishing → Policy manifest: writes manifest
src/mjlab_microduck/publish/cli.py - Robot runtime → Policy manifest: validates policy
src/mjlab_microduck/publish/manifest.py - Robot runtime → ONNX export: runs ONNX
README.md - MuJoCo body server → Camera simulation: streams frames
src/mjlab_microduck/sim/body_server.py - MuJoCo body server → ToF simulation: uses sensor
src/mjlab_microduck/sim/body_server.py - MuJoCo body server → Robot runtime: serves over TCP
src/mjlab_microduck/sim/body_server.py - Testbench environment → Robot and actuator config: uses constants
src/mjlab_microduck/tasks/testbench_env_cfg.py