Back to behaviors
Hardware verifiedmanipulationv1.0.0Apache-2.0

Impulse Ball Kick (Left Foot)

One-shot dynamic kick with the left foot designed to strike a 70mm / 15g ball forward while maintaining single-leg biped balance.

By Pollen Robotics @pollen-robotics

About this behavior

Actor is ball-blind (the operator or higher-level vision aims the robot). The runtime hot-swaps this policy for a 0.5-second execution window with command channels zeroed. Runs at standing gain tuning to maintain stance leg stability while the swing leg delivers an impulse strike.

Runtime contract

61-dimension input · 14 joint targets · 50 Hz

Show details
50 Hz / 4×slot: kick
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
Hardware verified
Evidence
Verified on physical MicroDuck hardware kicking a standard 70 mm lightweight practice ball.
Target hardware
MicroDuck v1 (Rockchip RK3566, 14 Dynamixel XL330-M077)
Simulation
mjlab (MuJoCo Warp) at 50 Hz
Note
Targeted for 70mm diameter, 15g mass spheres.

Compatibility

Robot model
microduck-standard
MJCF model
robot_allcollisions.xml
Terrain
flat
Required accessories
70 mm ball

Run it on your duck

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

slot: kick
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 ball_kick_left.onnx
curl -L "https://huggingface.co/spaces/pollen-robotics/microduck-simulator/resolve/main/app/public/policies/ball_kick_left.onnx" -o "/opt/robot/policies/ball_kick_left.onnx"
2 Add the policy to robotd
[policy]
kick_left = "/opt/robot/policies/ball_kick_left.onnx"
3 Restart the control loop
sudo systemctl restart robotd
robotctl health
Try it in simulation
uv run scripts/infer_policy.py --walking BEST_alpha_walking.onnx --new-cmd-obs

Sources