Collision Flamingo II

An asymmetric Microduck one-foot-balance policy trained using the new decomposed full exterior-shell collision model. It keeps the right foot lifted while using the left foot as support.

The video above records the supported safe ONNX scripts/infer_policy.py viewer with the full-shell collision model and nominal physics.

The policy was observed to work only through the safe ONNX scripts/infer_policy.py deployment-rehearsal path, with randomization off. It did not reproduce the behavior through uv run play using either the Native or Viser viewer. That discrepancy is unresolved and is part of this artifact's result—not something hidden by the packaging.

Reproduce the observed case

The collision geometry is simulator-side and is not embedded in the ONNX. This repository therefore includes the exact worktree overlay needed on top of the upstream training repository.

git clone https://github.com/pollen-robotics/microduck_rl.git
cd microduck_rl
git checkout d424a0c899f6b33cbd3daeb279913134349c0b63

hf download Teethyfish/microduck-collision-flamingo-ii \
  --local-dir ../microduck-collision-flamingo-ii

cp -a ../microduck-collision-flamingo-ii/reproduction/source-overlay/. .
cp ../microduck-collision-flamingo-ii/reproduction/pyproject.toml pyproject.toml
cp ../microduck-collision-flamingo-ii/reproduction/uv.lock uv.lock
uv sync --frozen

uv run scripts/infer_policy.py \
  --standing ../microduck-collision-flamingo-ii/policy.onnx \
  --new-cmd-obs \
  --collision-model full_shell

Use zero twist, head, and body commands. Do not add --training-randomization, friction overrides, contact-softness overrides, or an action-scale override when reproducing the observed case.

What has and has not been validated

Path Result
Safe ONNX viewer: scripts/infer_policy.py, full shell, nominal physics Observed working
Safe ONNX viewer with --training-randomization Not supported; did not provide the working case
uv run play ... --viewer native Did not reproduce the behavior
uv run play ... --viewer viser Did not reproduce the behavior
Real Microduck hardware Never tested

The included example video records the supported nominal ONNX-viewer result. No quantitative evaluation battery exists for this checkpoint, so the model card does not convert that recording into an unsupported success-rate claim.

Policy contract

  • Input: obs[1,61] float32
  • Output: actions[1,14] float32
  • Control rate: 50 Hz
  • Action scale: 1.0 around the Microduck HOME pose
  • Observation normalizer: baked into policy.onnx
  • Command block: twist[3], head_pose[4], body_pose[6], all zero here
  • Entry pose: standing

Observation order:

base_ang_vel[3]
projected_gravity[3]
joint_pos_relative[14]
joint_vel[14]
previous_actions[14]
twist[3]
head_pose[4]
body_pose[6]

Provenance

  • Task: Mjlab-OneLegStandNoBall-Flat-MicroDuck
  • Run: 2026-09-01_17-49-38_HoppingTraining_V2
  • Exported checkpoint: model_11500.pt
  • Resume parent: 2026-09-01_13-43-17_HoppingTraining/model_8750.pt
  • Seed: 42
  • Environments: 2048
  • Simulator: MuJoCo 3.10.0 + MuJoCo Warp 3.8.1
  • Training stack: mjlab 1.3.0, Warp 1.12.0, PyTorch 2.9.1, rsl-rl-lib 5.0.1
  • Physics timestep: 0.005 s; decimation: 4
  • Full-shell contact buffers: nconmax=200, contact_sensor_maxmatch=128
  • Git base: d424a0c899f6b33cbd3daeb279913134349c0b63
  • Exact uncommitted training/viewer source: reproduction/source-overlay/

See manifest.json for machine-readable metadata, reproduction/README.md for the training command, and config/ for the serialized environment and PPO configuration.

Files

  • policy.onnx — deployable policy with observation normalizer
  • manifest.json — machine-readable contract and limitations
  • media/onnx_viewer_example.mp4 — example from the supported safe ONNX viewer
  • checkpoints/model_11500.pt — resumable exported training checkpoint
  • checkpoints/resume_parent_model_8750.pt — immediate resume parent
  • config/env.yaml, config/agent.yaml — instantiated training configuration
  • reproduction/source-overlay/ — full-shell/task/viewer source not present in the Git base
  • checksums.sha256 — artifact integrity hashes

Safety

Simulation research artifact only. It has not been tested on hardware. Do not deploy it to a physical robot without independent review, controlled testing, and an emergency-stop procedure.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading