Keyboard
| ↑ ↓ | Both motors forward / backward (hold) |
| ← → | Right / left motor forward (hold, combinable with ↑ ↓) |
| A S | Pivot counterclockwise / clockwise |
| + - | Increase / decrease speed (step 5) |
| R E | Red up / down |
| G F | Green up / down |
| B V | Blue up / down |
| C | Toggle all small green LEDs |
| U | Toggle TV remote receiver |
| I | Toggle all IR emitters |
| O P | Toggle obstacle / cliff avoidance |
| J | Toggle sleep (the robot sleeps for 1 minute) |
| K | Calibrate sensors (proximity, ground, accelerometer) and reset odometry |
| L | Start odometry calibration (selector in position 8) |
| Space | Reset LEDs, flags and motors |
| H | Show / hide this help |
| Q | Disconnect |
Motors only run while a movement key or the joystick is held. Motors are stopped automatically when the window loses focus.
Odometry and selector
With the selector in position 0 the speed controller is off: the robot sends only the encoder sums, and X, Y, θ stay at 0. In every other position the speed controller is on: the robot computes X, Y, θ and the encoder sums are no longer updated. Position 15 is meant for remote control over the radio (speed controller only, no onboard behaviour). Wheel calibration: selector 8, right wheel aligned on a black line, then L; repeat for the other wheel.
Flags received from the robot
| bit 0 | 1 = robot is charging |
| bit 1 | 0 = button pressed (active low) |
| bit 2 | 1 = battery completely charged |
Requirements
Chrome or Edge on desktop (WebUSB). The page must be opened from https://, localhost or as a local file. Close any other program using the base station (e.g. the C monitor) before connecting: only one application can claim the USB interface.
Serve locally with:
python3 -m http.server 8000
# then open http://localhost:8000/elisa3-web-monitor.html
Windows
The base station must use the WinUSB driver (libusb-win32 / libusbK are not visible to the browser). Run Zadig, enable Options → List All Devices, select the device with USB ID 1915 0101, choose WinUSB and click Replace Driver. Programs built on libusb-1.0 keep working with WinUSB.
Linux
Allow non-root access with a udev rule:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1915", ATTR{idProduct}=="0101", MODE="0666"' \
| sudo tee /etc/udev/rules.d/99-elisa3-base-station.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
Then unplug and plug the base station again.
macOS
No driver setup is needed.
Multiple robots
Each radio packet carries up to 4 robots and packets are exchanged every 4 ms (250 Hz), so with N robots each robot is refreshed at about 250 / ceil(N / 4) Hz. Sensor data arrives in 5 rotating packet types, so a full sensor update takes 5 refresh cycles.