Terms you meet in the official docs and in command output. Only words with a specific meaning in the Microduck context — general vocabulary is left out.
Daemons
| Term |
What it owns |
robotd |
Motors, kinematics, odometry, gait policies, sensor loop, safety. Authoritative on anything that can hurt the robot |
mediad |
Camera and mic, encoding, perception, WebRTC. The heaviest service |
configd |
Wifi, identity, power, gamepad pairing |
updaterd |
Installs signed releases; rolls back when a robot comes up unhealthy |
padd |
Reads the gamepad. Deliberately unprivileged |
btd |
BLE GATT server. A transport adapter that owns no state |
tofd |
The head’s 8×8 ToF depth matrix |
State and safety
| Term |
Meaning |
deadman |
Zeroes velocity when no fresh intent arrives. What stops the robot when padd dies |
held |
The stream’s state for a command that was not refreshed |
fallen |
Decided from the IMU’s projected gravity |
| projected gravity |
The only IMU quantity on the stream. Upright is about [0, 0, -1] |
limp |
Joints unpowered. robot relax gets there, and the robot collapses unheld |
fall_limp / fall_recover |
[safety] switches. A fall is a report by default, not a gate |
home pose |
Where robot init ramps to over about two seconds |
unhealthy / degraded |
robotctl health verdicts. A policy that failed to load reports unhealthy |
stale reads |
Fusion stopped while the bus still answers. Nothing errors and the attitude stays plausible indefinitely |
Updates
| Term |
Meaning |
golden |
The boot recovery net’s fallback. A branch build never becomes golden |
current |
What is running |
| health gate |
The post-update check. Failing it rolls back automatically |
already_current |
The requested version is installed. Not inert — it restarts daemons not running it |
stale |
The daemons already_current names as not on the current release |
--ref <branch> |
Install what a branch last built on CI. Without it, apply is usually a downgrade on a dev board |
--staging |
Install a release candidate nobody has promoted |
revision: null |
The release was built on a laptop, not by CI |
Training and sim2real
| Term |
Meaning |
| sim2real |
Moving a policy trained in simulation onto real hardware |
| PPO |
The reinforcement learning algorithm used here |
| MuJoCo Warp |
GPU-accelerated physics; training runs on it |
| domain randomisation |
Randomising physical parameters so the policy holds across the real distribution |
| backlash |
Gear play. Modelled here as ±1° per servo |
| BAM |
The actuator physics model for the Dynamixel servos |
| ONNX |
The export format robotd loads |
| observation contract |
The 61-dimensional format every policy shares. The precondition for hot-swapping |
num-envs |
How many robots are simulated in parallel. 4096 is the documented reference |
Hardware and driving
| Term |
Meaning |
walk / roller |
The two drive modes. Hold D-pad up for 3 s to switch, no restart |
| swizzle |
The symmetric skating stroke; it has a training task of its own |
| roulade |
The forward roll. X / square, hold to chain |
| ground pick |
Crouch and touch the floor with the beak tip |
| ToF |
The head’s 8×8 depth sensor |
| chorale |
Several ducks singing together. Off by default, and invisible when off |
| voice bank |
Generated from the SoC serial, so every robot sounds different |
| dev board |
A board that trusts the team dev key and takes branch builds |
| customer robot |
Deliberately refuses builds signed with a dev key |
Bluetooth pairing
These only appear while chasing a gamepad problem, but they are where people get stuck.
| Term |
Meaning |
| bond |
The long-term key relationship. pad forget removes only the robot’s half |
paired but NOT trusted |
Works now, will not reconnect after a reboot |
Privacy = device / off |
A BlueZ setting. device on a board that only needed the pause makes the bond flap |
PIN or Key Missing (0x06) |
Usually means --weird-ble was used where it should not have been |
| aic8800 |
A radio chip. The whole Bluetooth workaround exists for it |