e9038949 and microduck_rl revision cb70b792. This site checked the documented commands and launcher source; it did not reproduce the full daemon simulation locally.Choose the simulator that matches the question.
This is different from the browser experience. The browser simulator is the fastest way to try existing movements. The daemon simulator is for developing the robot software itself: the same robotd, 50 Hz control loop, policies, safety checks, IPC and robotctl drive a MuJoCo body. Official daemon simulation guide ↗
| Route | Use it for | It does not establish |
|---|---|---|
| Browser simulator | Trying controls and existing movements without installing a toolchain. | Local daemon, updater or IPC behaviour. |
duck-sim plain mode | Policy, control-loop, IPC, console and client development. | Motor-bus, Bluetooth, camera ISP, NPU or encoder-driver behaviour. |
duck-sim boot | systemd units, provisioning, updater health gates and multi-duck work. | Electrical or mechanical hardware validation. |
Prepare two pinned checkouts.
Put both repositories under the same parent directory, or set DUCK_SIM_RL to the RL checkout. The launcher expects an RL virtual environment containing duck-body and ONNX Runtime. Building the Rust daemons also requires the toolchain declared by the robot repository.
git clone https://github.com/pollen-robotics/microduck.git
git -C microduck checkout --detach e90389492bd4da42f60da343983e50cecd43b54b
git clone https://github.com/pollen-robotics/microduck_rl.git
git -C microduck_rl checkout --detach cb70b792312d559a4da09064d92009079671815f
cd microduck_rl
uv syncThe official launcher defaults to ~/Pollen/microduck_rl. If your folders are elsewhere, point it at the absolute RL path instead of moving an existing checkout. Official duck-sim launcher ↗
cd /absolute/path/to/microduck
DUCK_SIM_RL=/absolute/path/to/microduck_rl scripts/duck-sim
scripts/duck-sim status
scripts/duck-sim drive
scripts/duck-sim ctl health
scripts/duck-sim realtime
scripts/duck-sim downRead health before judging motion.
drive asks for a short forward walk. It is a smoke check, not a gait benchmark. Save status, ctl health, realtime, log and simlog together. A world running below real time changes the timing seen by the policy; the official guide recommends fewer ducks, fewer cameras, then a headless viewer when the loop cannot stay healthy.
scripts/duck-sim status
scripts/duck-sim realtime
scripts/duck-sim ctl health --json
scripts/duck-sim log
scripts/duck-sim simlogUse container mode only when it answers a container question.
scripts/duck-sim boot 2 starts two ducks with their daemons under real systemd containers and needs sudo, systemd-nspawn and mmdebstrap. It is valuable for updater, unit ownership and restart-order work. For a policy or IPC change, plain mode starts faster and removes unrelated setup.
Keep the hardware boundary in the report.
The simulated body can expose daemon and client failures. It cannot validate the Dynamixel bus, Bluetooth radio, camera ISP, NPU, hardware encoder, power delivery, printed parts or real floor contact. Label a passing result “daemon simulation at these revisions,” then make a separate hardware plan if the question crosses that boundary.
What would you like to understand next?
Keep the source, your environment and your observations together.