mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
47 lines
1.7 KiB
Markdown
47 lines
1.7 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 now uses libgpiod; make sure the `roverd` service account is in the `gpio` group (or otherwise allowed to access `/dev/gpiochip*`) and set `brc.gpioChip` if your hardware exposes a different chip name.
|