Run the controller + web UI#
The controller is the host-side control plane: it talks to your gateway (or a simulator), exposes a REST + WebSocket API, and serves a web UI to drive your robots.
Start it#
Point the controller at a connection and open the web UI:
# serial gateway plugged into your computer (no swarm-id needed)
dotbot run controller --conn /dev/ttyACM0 -w
# a swarm over MQTT (swarm-id required - the broker carries many swarms)
dotbot run controller --conn mqtts://argus.paris.inria.fr:8883 --swarm-id 1234 -w
# no hardware at all - pure software simulator
dotbot run controller --conn simulator -w
--conn takes one string: a serial device path (/dev/ttyACM0, COM3 on
Windows), an MQTT broker (mqtts://host:port), or simulator.
-w / --webbrowser opens a tab automatically. Otherwise browse to
http://localhost:8000/PyDotBot yourself.
Flag |
What it does |
|---|---|
|
Connection: serial path, |
|
Swarm id in hex (required for MQTT, ignored otherwise) |
|
Open the web UI automatically |
|
HTTP/REST port (default |
|
Path to a |
|
With |
See dotbot run controller --help for the full list (logging, CSV export, map
size, background map, simulator init state).
dotbot run simulator is shorthand for dotbot run controller --conn simulator - try
the UI with no robot or gateway.
Use a config file#
Save your connection once instead of repeating flags:
# save where to connect (writes ./dotbot.toml)
dotbot config init --conn mqtts://broker:8883 --swarm-id 1234
# the controller picks it up automatically when run from here
dotbot run controller
# override the saved connection for one run (a simulator instead)
dotbot run controller --conn simulator
CLI flags override config-file values when both are given. See the configuration reference for how the file is discovered and the full schema.
The web UI#
At http://localhost:8000/PyDotBot the page lists every DotBot the controller sees. Select one to control it:
Joystick - a virtual joystick drives the selected bot.
RGB LED - pick a color and the bot’s LED follows.
If you flashed Lighthouse 2 localization, bots report their
(x, y)position on the map (see LH2 calibration).
Firefox websockets note#
If the web UI does not connect under Firefox, the WebSocket stream is likely
being blocked. Open about:config (Ctrl + L, then type it), find
network.http.http2.websockets, and set it to false.
Next steps#
Flash robots and a gateway first - see device flashing.
Operate the whole fleet over the air - see swarm.