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.pydeployment-rehearsal path, with randomization off. It did not reproduce the behavior throughuv run playusing 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 normalizermanifest.json— machine-readable contract and limitationsmedia/onnx_viewer_example.mp4— example from the supported safe ONNX viewercheckpoints/model_11500.pt— resumable exported training checkpointcheckpoints/resume_parent_model_8750.pt— immediate resume parentconfig/env.yaml,config/agent.yaml— instantiated training configurationreproduction/source-overlay/— full-shell/task/viewer source not present in the Git basechecksums.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.