How santhasangar/microduck works
Microduck is the runtime software for a small biped robot. Its main operational loop runs through robotd, which owns motor control and exposes robot intents; padd turns gamepad input into those intents, while robotctl and duckctl provide local and Bluetooth-facing operator access. Separate daemons handle configuration, camera streaming, and depth sensing. updaterd manages verified installation and rollback using a robot health gate. The README documents these service responsibilities and their shared JSON-RPC contract; several subsystem links are omitted where sampled source did not establish caller-level wiring.
Main entry points: lib.rs JSON-RPC contract · src/main.rs Control daemon · src/main.rs Gamepad daemon · src/main.rs UDP gamepad
Components 18
Robot control
- Control daemon
robotd/src/main.rs - Gamepad daemon
padd/src/main.rs - UDP gamepad
netpadd/src/main.rs - Pad mapping
pad-map/src/mapper.rs - Control parameters
robotd-params/src/lib.rs
Operator access
- Robot CLI
robotctl/src/main.rs - Bluetooth CLI
duckctl/src/main.rs - Bluetooth daemon
btd/src/main.rs
Perception and media
- Camera streaming
mediad/src/pipeline.rs - Camera capture
mediad/src/camera.rs - Media routing
mediad/src/route.rs - Depth daemon
tof/src/main.rs
Robot services
- Configuration daemon
configd/src/main.rs - JSON-RPC contract
duck-ipc-proto/src/lib.rs
Software updates
- Update engine
updater/src/engine.rs - Update IPC
updater/src/ipc.rs - Health gate
robotd/src/main.rs
Other components
- Operator
Connections 17
- Operator → Robot CLI: operates locally
README.md - Operator → Bluetooth CLI: operates remotely
README.md - Gamepad daemon → Pad mapping: maps input
padd/src/main.rs - UDP gamepad → Pad mapping: shares mapping
netpadd/src/main.rs - Gamepad daemon → Control daemon: sends intents
README.md - UDP gamepad → Control daemon: sends intents
README.md - Robot CLI → JSON-RPC contract: uses contract
README.md - Bluetooth CLI → Bluetooth daemon: reaches by Bluetooth
README.md - Bluetooth daemon → JSON-RPC contract: uses contract
README.md - Configuration daemon → JSON-RPC contract: uses contract
README.md - Control daemon → JSON-RPC contract: serves control API
README.md - Camera streaming → Camera capture: captures from
- Camera streaming → Media routing: uses routes
mediad/src/pipeline.rs - Depth daemon → JSON-RPC contract: publishes sensor data
README.md - Update engine → Update IPC: exposes update API
updater/src/engine.rs - Update engine → Health gate: gates on health
README.md - Control daemon → Control parameters: loads parameters