How pollen-robotics/microduck works
Microduck is the runtime for a small biped robot: daemons provide control, sensing, connectivity, camera media, configuration, and reversible updates, with command-line and gamepad clients. The principal path is gamepad input through shared mapping to robotd’s intent/control loop and motor bus. The README documents other major services and capabilities retained here. Unsampled subsystems and cross-daemon socket wiring are shown only where the README supports them; unsupported internal calls are omitted.
Main entry points: src/main.rs Control daemon · lib.rs JSON-RPC contract · pipeline.rs Media pipeline · src/main.rs Gamepad daemon
Components 21
Robot control
- Control daemon
robotd/src/main.rs - Control parameters
robotd-params/src/edit.rs - Policy inference
duck-detect/src/onnx.rs - Robot kinematics
kinematics/src/lib.rs - Servo bus
duck-control/src/bus.rs - Sound generation
sounds/src/synth.rs
Sensing and media
- Depth daemon
tof/src/main.rs - Camera capture
mediad/src/camera.rs - Media pipeline
mediad/src/pipeline.rs - Media routing
mediad/src/route.rs
Connectivity and input
- Gamepad daemon
padd/src/main.rs - Pad mapping
pad-map/src/mapper.rs - UDP pad daemon
netpadd/src/main.rs - Bluetooth daemon
btd/src/session.rs - Remote control CLI
duckctl/src/main.rs
Configuration and updates
- System configuration
configd/src/main.rs - Update engine
updater/src/engine.rs - Robot CLI
robotctl/src/main.rs
Other components
- Operator
- Gamepad
- JSON-RPC contract
duck-ipc-proto/src/lib.rs
Connections 20
- Operator → Gamepad: uses
- Gamepad → Gamepad daemon: provides input
padd/src/main.rs - Gamepad daemon → Pad mapping: maps controls
padd/src/main.rs - Pad mapping → Control daemon: sends intents
- UDP pad daemon → Control daemon: sends intents
netpadd/src/main.rs - Control daemon → Servo bus: drives motors
- Control daemon → Policy inference: runs policies
- Control daemon → Control parameters: loads parameters
- Control daemon → Robot kinematics: uses geometry
- Control daemon → Sound generation: generates sound
- Depth daemon → JSON-RPC contract: publishes frames
tof/src/main.rs - Camera capture → Media pipeline: provides frames
- Media pipeline → Media routing: routes streams
mediad/src/pipeline.rs - Operator → Robot CLI: operates robot
- Robot CLI → JSON-RPC contract: sends RPC
robotctl/src/main.rs - Bluetooth daemon → JSON-RPC contract: serves calls
- Remote control CLI → Bluetooth daemon: connects over Bluetooth
duckctl/src/main.rs - System configuration → JSON-RPC contract: serves RPC
- Update engine → Control daemon: health gates
- Operator → Update engine: requests updates