Skip to content

feat: add Microduck robot and integrate it into humanoid walk task - #18

Merged
wlgys8 merged 1 commit into
mainfrom
feat/microduck-humanoid-walk
Sep 8, 2026
Merged

feat: add Microduck robot and integrate it into humanoid walk task#18
wlgys8 merged 1 commit into
mainfrom
feat/microduck-humanoid-walk

Conversation

@wlgys8

@wlgys8 wlgys8 commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Port the Pollen Robotics Microduck 14-DoF biped MJCF and meshes from microduck_rl (Apache-2.0 code, CC BY-SA-NC meshes), with STAND/SIT/FOLD key poses and a trunk_collision capsule on trunk_base for fall termination (sole geoms must touch the ground, so they can't be used for termination)
  • Register robotcfg microduck (motrix_envs/robot/microduck.py) and microduck-walk-flat / microduck-walk-rough presets on the shared HumanoidVelocityTrackingEnv, with scale-tuned initial hyperparameters for the ~25 cm biped:
    • gait: period=0.5, swing_height=0.04 (legs are ~8 cm; default 0.09 is too large)
    • commands: vel_limit restates the shared default (lin_vel ±1.0 m/s, ang_vel ±1.0 rad/s)
    • pose weights: low on legs, 50.0 on the 4 neck/head joints (keeps the head stable while walking, same treatment as G1 arms)
  • Fix the shared foot-orientation penalty to measure against the default-pose foot gravity, so robots whose ankle frames aren't world-aligned (onshape-to-robot exports like Microduck) are no longer rewarded for tilting their soles
  • Add task configs (configs/task/microduck-walk-{flat,rough}/motrix.fastsac.yaml), posters, bilingual env/robot docs, and test coverage

Does not modify HumanoidVelocityTrackingEnv otherwise; no Microduck-specific reward terms or observations.

Closes #17

Verification

uv run scripts/view.py env=microduck-walk-flat        # renders, STAND pose soles on ground
uv run scripts/view.py env=microduck-walk-rough       # rough variant loads
uv run scripts/train.py task=microduck-walk-flat/motrix.fastsac
uv run pytest motrix_envs/tests

Port the Pollen Robotics Microduck 14-DoF biped MJCF and meshes from
microduck_rl (Apache-2.0 code, CC BY-SA-NC meshes) with STAND/SIT/FOLD
key poses plus a trunk termination capsule, and register
microduck-walk-flat/rough presets on the shared velocity-tracking env
with scale-tuned gait rewards, task configs, posters, and env docs.

Measure the shared foot-orientation penalty against the default-pose
foot gravity so robots with non-world-aligned ankle frames (onshape-
to-robot exports like Microduck) are not rewarded for tilting soles.
@wlgys8 wlgys8 self-assigned this Sep 8, 2026
@wlgys8
wlgys8 requested a lite review from Copilot September 8, 2026 03:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The Microduck preset parameters in code (command limits and swing height) don’t match the stated PR/issue acceptance criteria, so behavior will differ from what’s documented and expected.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

This PR adds the Pollen Robotics Microduck humanoid robot (MJCF + mesh assets) to MotrixLab and integrates it into the existing robot-agnostic humanoid velocity-tracking walk task family, including a shared fix to the foot-orientation penalty so non-world-aligned ankle frames are handled correctly.

Changes:

  • Add Microduck robot config, MJCF, and mesh assets (plus asset README and registry wiring).
  • Add microduck-walk-flat / microduck-walk-rough presets on HumanoidVelocityTrackingEnv and new Hydra task configs.
  • Update shared humanoid walk reward foot-orientation penalty and extend tests/docs to cover the new robot and presets.
File summaries
File Description
motrix_envs/tests/test_robot_cfg.py Adds Microduck registration and model/asset smoke tests.
motrix_envs/tests/test_humanoid_walk.py Extends humanoid-walk preset tests to include Microduck and its camera setup.
motrix_envs/src/motrix_envs/robot/microduck.py Introduces the Microduck robot configuration and key poses.
motrix_envs/src/motrix_envs/robot/assets/microduck/README.md Documents upstream source and local MJCF modifications (termination geom).
motrix_envs/src/motrix_envs/robot/assets/microduck/microduck.xml Adds the Microduck MJCF model, including trunk_collision termination capsule.
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/yaw2roll.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/yaw_roll_motion.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/xl330.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/upper_leg_rigidity_plate.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/upper_leg_right.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/upper_leg_left.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/trunk_base.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/top_head_shell.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/speaker.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/sole_right.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/sole_left.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/soft_mouth_top.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/seeed_bearing__configuration_default.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/seeed_bearing__configuration__22x16x4.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/right_shell.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/power_support.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/pcb__raspberry_pi_zero_2_w.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/np_f970.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/noenoeil.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/neck.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/neck_pitch.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/motor_support.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/m12_lens_holder.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/lens.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/leg.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/left_shell.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/jaw.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/jaw_soft.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/hip_l.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/foot_right.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/foot_left.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/face_part.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/elec_rpi_robot_hat_pcb.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/bottom_head_shell.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/bearing_roll.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/banana_pcb_locker.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/ankle_right.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/assets/microduck/assets/ankle_left.stl Microduck mesh asset (Git LFS pointer).
motrix_envs/src/motrix_envs/robot/init.py Registers microduck robotcfg and re-exports Microduck.
motrix_envs/src/motrix_envs/locomotion/humanoid/walk_np.py Fixes shared foot-orientation penalty to use default-pose foot gravity reference.
motrix_envs/src/motrix_envs/locomotion/humanoid/microduck.py Adds Microduck walk presets and registers env IDs.
motrix_envs/src/motrix_envs/locomotion/humanoid/init.py Ensures Microduck humanoid presets are imported for registration.
docs/source/zh_CN/user_guide/robots.md Adds Microduck to generated robot table (zh_CN).
docs/source/zh_CN/user_guide/envs/index.md Adds Microduck walk tasks to env index (zh_CN).
docs/source/en/user_guide/robots.md Adds Microduck to generated robot table (en).
docs/source/en/user_guide/envs/index.md Adds Microduck walk tasks to env index (en).
docs/source/_static/images/robots/microduck.png Adds Microduck robot screenshot (Git LFS pointer).
docs/source/_static/images/poster/microduck-walk-rough.jpg Adds Microduck rough-walk poster (Git LFS pointer).
docs/source/_static/images/poster/microduck-walk-flat.jpg Adds Microduck flat-walk poster (Git LFS pointer).
docs/scripts/generate_robot_docs.py Adds doc-generation camera framing defaults for Microduck.
configs/task/microduck-walk-rough/motrix.fastsac.yaml Adds training recipe config for microduck-walk-rough.
configs/task/microduck-walk-flat/motrix.fastsac.yaml Adds training recipe config for microduck-walk-flat.
Review details
  • Files reviewed: 57/57 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread motrix_envs/src/motrix_envs/locomotion/humanoid/microduck.py
Comment thread motrix_envs/src/motrix_envs/locomotion/humanoid/microduck.py
Comment thread motrix_envs/src/motrix_envs/locomotion/humanoid/walk_np.py
@wlgys8 wlgys8 assigned TATP-233 and unassigned TATP-233 Sep 8, 2026
@wlgys8
wlgys8 requested review from TATP-233 and krai33 September 8, 2026 05:33
@wlgys8
wlgys8 merged commit 20d25b3 into main Sep 8, 2026
6 checks passed
@wlgys8
wlgys8 deleted the feat/microduck-humanoid-walk branch September 9, 2026 04:43
Sign up for free to 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.

集成 Microduck 机器人并实现 humanoid walk 任务

4 participants