2025-11-10 15:35:31 -05:00
2025-11-09 21:26:36 -05:00
2025-11-10 15:35:31 -05:00
2025-11-10 15:35:31 -05:00
2025-11-09 21:15:13 -05:00
2025-11-09 02:52:51 -05:00
2025-11-09 19:54:51 -05:00
2025-11-10 15:35:31 -05:00

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

# 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):

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 its switched to libgpiod, set brc.gpioPin: -1 if you prefer to run unprivileged (the Create will then nap unless something else keeps it awake).

S
Description
No description provided
Readme
240 MiB
Languages
JavaScript 91.3%
Go 4.2%
C++ 2.3%
Shell 1.4%
CSS 0.4%
Other 0.3%