mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-15 17:12:59 -04:00
47 lines
1.8 KiB
Markdown
47 lines
1.8 KiB
Markdown
# Multi Roomba Rover
|
||
|
||
a remake of my RoombaRover project with a decentralized and embedded approach
|
||
supports multiple roombas
|
||
|
||
on each roomba:
|
||
- a raspberry pi zero 2 w
|
||
- a raspberry pi camera
|
||
- roomba's serial port hooked up to the built in serial port on the raspberry pi
|
||
|
||
pi provisioning:
|
||
- enable serial port
|
||
- disable wifi powersave
|
||
- disable bluetooth
|
||
|
||
## Repo layout
|
||
|
||
- `pi/roverd`: tiny Go daemon that bridges the Create 2 serial port, BRC pin, and the control server via WebSockets.
|
||
- `server`: Node.js process that terminates rover sockets, relays commands to/from the Socket.IO UI, and serves `public/`.
|
||
- `pi/systemd` / `pi/mediamtx`: ready-to-drop systemd units and a minimal mediaMTX config for WebRTC publishing (roverd can optionally supervise the mediamtx service).
|
||
- `docs/pi-deployment.md`: per-rover build + install instructions (cross-compiling on Fedora 43, deploying roverd + mediaMTX).
|
||
|
||
## Quick start
|
||
|
||
```bash
|
||
# build the Pi agent (armv7)
|
||
cd pi/roverd
|
||
mkdir -p ../../dist
|
||
make pi-build
|
||
|
||
# start the server + UI
|
||
cd ../../server
|
||
npm install
|
||
npm run start
|
||
```
|
||
|
||
Deploy a rover by copying the repo + `dist/roverd` to the Pi and running the helper (it will also fetch mediaMTX when `--mediamtx` is set):
|
||
|
||
```bash
|
||
cd ~/MultiRoombaRover
|
||
sudo ./pi/install_roverd.sh --mediamtx
|
||
```
|
||
|
||
Then point each rover's `/etc/roverd.yaml` at `ws://<server>:8080/rover`, enable the sensor stream from the UI, and drive with WASD.
|
||
Use the “Restart Camera” button if you enable media management so roverd can bounce the mediamtx service remotely.
|
||
Heads-up: the BRC pulser currently hits `/sys/class/gpio/export`, so the service needs root privileges on Raspberry Pi OS. Until it’s switched to `libgpiod`, set `brc.gpioPin: -1` if you prefer to run unprivileged (the Create will then nap unless something else keeps it awake).
|