Standing 6-DOF Body Pose Controller
Fine-grained torso orientation and height controller while standing, continuously mapping roll, pitch, yaw, and squat commands to compliant leg and neck adjustments.
About this behavior
Developed for the community microduck_runtime port. Utilizes the full 6-dim body_pose command vector (tx, ty, tz, roll, pitch, yaw) in the standard 61-dim observation contract. Allows interactive puppeteering of the duck's stance height, torso tilt, and look-around angles without shifting foot contact locations.
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
Show details
Runtime contract
61-dimension input · 14 joint targets · 50 Hz
Positions, velocities, previous actions, gravity, and gyro.
Forward, lateral, and yaw velocity intent.
Neck and head orientation targets.
Six-axis torso offset command.
hip yaw · hip roll · hip pitch · knee · ankle
neck pitch · head pitch · yaw · roll
hip yaw · hip roll · hip pitch · knee · ankle
Verification
- Status
- Hardware claimed
- Evidence
- Reported running on Raspberry Pi microduck_runtime port controlling Dynamixel XL330 bus directly.
- Target hardware
- MicroDuck Raspberry Pi SBC / Dynamixel XL330
- Simulation
- mjlab (MuJoCo Warp) at 50 Hz
- Note
- Community policy. Tested on custom Raspberry Pi controller stack.
Compatibility
- Robot model
- microduck-standard
- MJCF model
- robot_allcollisions.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.
Deployment stepsShow instructions
curl -L "https://raw.githubusercontent.com/TommyZihao/microduck_runtime/main/policies/standing_body_control.onnx" -o "/opt/robot/policies/standing_body_control.onnx"[policy]
stand = "/opt/robot/policies/standing_body_control.onnx"sudo systemctl restart robotd
robotctl healthuv run scripts/infer_policy.py --standing standing_body_control.onnx --new-cmd-obs