Back to behaviors
Simulation testedlocomotionv0.9.0Apache-2.0

Waddle Custom Locomotion

Independent community-developed walking gait featuring a pronounced rhythmic waddling sway tuned for biped compliance.

By Nick Koenig @nickoenig37
Waddle gait simulated in MuJoCo viewer displaying rhythmic sway

About this behavior

Developed by Nick Koenig (nickoenig37) as an exploration of duck-like biomimetic locomotion. Modifies reward terms on lateral torso oscillation and foot contact cadence to produce a distinctive waddle gait while preserving the standard 61-dim observation and 14-actuator contract.

Runtime contract

61-dimension input · 14 joint targets · 50 Hz

Show details
50 Hz / 4×slot: walk
Observation vector61 dimensions · normalizer baked in
Proprioception48D

Positions, velocities, previous actions, gravity, and gyro.

Twist command3D

Forward, lateral, and yaw velocity intent.

Head pose4D

Neck and head orientation targets.

Body pose6D

Six-axis torso offset command.

Action targetsscale: 1×
Left leg5 joints

hip yaw · hip roll · hip pitch · knee · ankle

Neck & head4 joints

neck pitch · head pitch · yaw · roll

Right leg5 joints

hip yaw · hip roll · hip pitch · knee · ankle

Actuator model: Dynamixel XL330 (BAM M6 actuator physics). The beak motor is separate from this fixed locomotion action space.

Verification

Status
Simulation tested
Evidence
Simulated and validated in mjlab across 4096 parallel environments on multi-GPU cluster with video recording.
Target hardware
MicroDuck v1 / Waddle Custom Biped Platform
Simulation
mjlab (MuJoCo Warp) at 50 Hz
Note
Community policy. Exhibits higher lateral roll oscillation than the official Alpha walk.

Compatibility

Robot model
custom-duck
MJCF model
robot_walk.xml
Terrain
flat
Required accessories
None — standard duck setup

Run it on your duck

Use the canonical model and this policy slot to try the behavior locally.

slot: walk
Try the simulation first. Hardware testing assumes a matching Microduck, clear space, and a safe surface. uDuck does not guarantee that a community policy is safe to run.
Deployment stepsShow instructions
1 Download the ONNX model waddle_walking.onnx
curl -L "https://raw.githubusercontent.com/nickoenig37/mjlab_microduck_waddle/main/docs/waddle_walking.onnx" -o "/opt/robot/policies/waddle_walking.onnx"
2 Add the policy to robotd
[policy]
walk = "/opt/robot/policies/waddle_walking.onnx"
3 Restart the control loop
sudo systemctl restart robotd
robotctl health
Try it in simulation
uv run play Mjlab-Velocity-Flat-Waddle

Sources