Back to behaviors
slot: rollers
In-Place Roller Spin
High-angular-velocity in-place spin pirouette executed on roller wheels using counter-opposed leg torque.
About this behavior
A trick behavior demonstrating agility on wheels. Commands high yaw angular rates while maintaining centered weight distribution over the wheel contact points, spinning 360 degrees smoothly before braking back to neutral balance.
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
Show details
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
50 Hz / 4×slot: rollers
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 voltage control law). The beak motor is separate from this fixed locomotion action space.
Verification
- Status
- Simulation tested
- Evidence
- Verified in mjlab simulation reaching up to 3.0 rad/s controlled yaw spin without loss of wheel ground contact.
- Target hardware
- MicroDuck v1 + Roller Skate Accessories
- Simulation
- mjlab (MuJoCo Warp) at 50 Hz
- Note
- Requires low-friction floor surface.
Compatibility
- Robot model
- microduck-rollers
- MJCF model
- robot_allcollisions_rollers.xml
- Terrain
- flat
- Required accessories
- roller skates
Run it on your duck
Use the canonical model and this policy slot to try the behavior locally.
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 roller_spin.onnx
curl -L "https://raw.githubusercontent.com/pollen-robotics/microduck_rl/develop/docs/models/roller_spin.onnx" -o "/opt/robot/policies/roller_spin.onnx"2 Add the policy to robotd
[policy]
roller_spin = "/opt/robot/policies/roller_spin.onnx"3 Restart the control loop
sudo systemctl restart robotd
robotctl health⌁ Try it in simulation
uv run play Mjlab-Spin-Flat-MicroDuck