kick-right
Right-foot ball kick from a standing start (Mjlab-BallKick-Flat-MicroDuck), trained in simulation only: 10,000 iterations, 4096 envs, 161 min on one RTX 5090. Blind to the ball by design, so the ball must sit at the right toe (trained with +-1.5 cm placement noise). In 3 of 3 sim takes the ball travelled 1.03 to 1.13 m in the first second and the duck stayed standing. Not yet tested on a real Microduck.
A episodic policy for the microduck (61-D observation, 14 actions, 50 Hz). Runs 1.0 s and returns itself to a standing pose.
Run it on a robot
sudo robotctl policy add kick-right witcheer/microduck-kick-right
robotctl robot do kick-right
The observation normalizer is baked into policy.onnx; feed raw observations.
manifest.json follows schema 2 of the microduck policy manifest (docs/policy-manifest.md in the daemon repo).
Training
- repo:
pollen-robotics/microduck_rl - branch:
develop - commit:
53b8971b6
Results in simulation
Simulation only. This policy has not run on a real Microduck yet; a kick in MuJoCo says nothing yet about what a real foot does to a real ball on a real floor.
- Task
Mjlab-BallKick-Flat-MicroDuckfrompollen-robotics/microduck_rlat53b8971, the maker's budget of 10,000 iterations, 4096 parallel envs, 161 min (0.97 s/iteration) on one RTX 5090. - The policy is blind to the ball, as the task file intends: the actor gets no ball position or velocity (the real robot has no ball sensor), only the critic sees it. The ball is spawned 9 cm in front of the right toe with +-1.5 cm of noise, and an always-on reward for keeping the left foot grounded makes it a right-foot kick. Aim the robot so the ball sits at the right toe before running it.
- Proof takes with mjlab
play(1 env, standing spawn, 12 s episode with the first 4.1 s logged, camera tracking the ball), read from the ball position, trunk height and body-frame gravity every 0.1 s, not from the video: 3 of 3 takes kick and stay standing. The ball is moving by 0.2 s and has travelled 1.03 to 1.13 m by 1.0 s and 2.11 to 2.24 m by 2.0 s. The trunk stays between 100 and 123 mm with gravity pointing straight down in the body frame, and there is no environment reset inside any take. The iteration-0 control does not move the ball at all in the first 2 s. duration_sis 1.0: foot contact is over by 0.3 s and the trunk is back at a steady 114 mm by 0.5 s in the takes.- The mean reward reached 92.9 by iteration 1,000 and ended at 90.1 at 10,000 (1.3 at iteration 1, 70.3 at 500). A 1,000-iteration run would very likely have given the same kick.
- Not tested: any ball placement other than the toe, beyond the +-1.5 cm the training saw, and the left foot (Pollen ships a separate left-kick policy).
- Clip, reward curve and proof-take logs: https://huggingface.co/datasets/witcheer/microduck-skill-tree/tree/main/level-07-kick-right
Built as level 7 of a sim-first skill tree for a Microduck that is still on order. Levels 1 to 6 (walk, stand up, sit and stand, rough-ground walk, walk plus recover, roulade) came before it; more policies from the same tree appear under witcheer/microduck-*.