YouDuck.ai

Commands and reference

Last updated

Lookup material — not meant to be read front to back.

Three tools, and which one you want

This is what newcomers mix up most. Microduck has three command-line tools; they run in different places and solve different problems.

Tool Runs on Reach for it when
robotctl the robot Everything day to day: diagnosis, configuration, driving, updates. It ships in the release.
duckctl your laptop The robot has no network, or you would rather not ssh. Goes over Bluetooth LE.
scripts/dev-push.sh your laptop You changed the robot’s code and want it installed without waiting for CI.

Three rules decide it:

  • You can ssh inrobotctl.
  • The robot has never joined a wifi network → only duckctl works. wifi connect goes over the radio and needs no network of its own; this is the only way out of that chicken-and-egg.
  • Never install duckctl on the robot. Nothing in a release depends on it.

One rule about privilege

  • Read-only commands need none.
  • Anything that changes the robot needs sudo, or membership of configd’s --allow-user / --allow-group, or updater.toml’s allow_uids / allow_gids.

The fixed three steps

Whatever the symptom, these are worth running first:

robotctl version    # is the running code the code you think it is
robotctl health     # is anything unhealthy, and why
robotctl monitor    # requested vs applied, and why it was clamped

version is first because a daemon still serving old code after an update looks exactly like the fix you just shipped not working.

On a dev board there is one more: robotctl health’s units block lists which release each daemon was launched from, and warns by name when that disagrees with what is installed.

Deeper material (Chinese)

In this section