SynROV is a modular control stack for seven robot classes: Manipulator, Vehicle, Drone, Boat, Submarine, Biped and Quadruped. This repository contains the complete Version 1 implementation.
| AiBot command center | Processing desktop runtime | Web console |
|---|---|---|
![]() |
![]() |
![]() |
The repository includes the Python AiBot desktop client, the Processing control/visualization runtime, and the browser-based Web Console. The screenshots above are now versioned in assets/screenshots/ and reused by the documentation.
| Manipulator | Vehicle | Drone |
|---|---|---|
![]() |
![]() |
![]() |
| Boat | Submarine | Biped |
![]() |
![]() |
![]() |
| Quadruped | ||
![]() |
firmware/SynROV_Firmware/— Arduino Mega 2560 firmware, physical I/O, persistence, watchdogs, Serial0 and I2C RobotBus.software/processing/SynROV/— main desktop application, robot modules, orchestration, visualization and operator controls.software/python/synrov_aibot/— AiBot runtime, missions, perception, camera bridge and desktop interface.software/web/— browser operator console.software/ros/— ROS 2 adapter for the Processing endpoint.docs/— Version 1 architecture, protocols, hardware, operation and robot behavior.assets/— project banner, application icon, runtime visual mark, and future screenshots/diagrams used by the GitHub documentation.
Runtime-only image resources remain beside the component that loads them so the applications can run directly from their own trees. The documentation-facing copies and future screenshots live in assets/.
Web, AiBot and ROS connect to the Processing application. Processing is the application-level control authority and is the only host runtime that communicates with the gateway firmware over Serial0.
Web ─────┐
│
AiBot ───┼──> Processing ───> Serial0 ───> SynROV firmware ───> hardware
│
ROS 2 ───┘
The gateway firmware may discover additional SynROV Mega 2560 nodes on the shared I2C RobotBus. Robot type and physical node identity are separate, allowing multiple robots of the same class when every board has a unique I2C address.
| Channel | Version 1 behavior |
|---|---|
| Processing ↔ gateway firmware | Serial0 at 500000 baud, A55A ASCII-HEX framing, SynROV Serial v1, CRC-8/ATM |
| Arduino ↔ Arduino | I2C/TWI on SDA 20 / SCL 21, 100 kHz default, addresses 0x60..0x67, RobotBus v1 |
| Web/AiBot/ROS ↔ Processing | WebSocket port 9000, synrov JSON application envelope, softwareVersion:1 |
Application messages include a producer sessionId and monotonically increasing seq. Processing rejects duplicate or out-of-order packets within a producer session. Continuous remote control uses an exclusive source lease, while the safety STOP action can preempt the active remote source and clears pending continuous motion.
Example:
{"protocol":"synrov","softwareVersion":1,"messageType":"sync","source":"web","sessionId":"web-session-id","timestampMs":0,"seq":1,"payload":{"sync":true}}The current Version 1 robot modes are:
Manipulator · Vehicle · Drone · Boat · Submarine · Biped · Quadruped
Robot-specific motion behavior remains in the owning runtime/module. Shared transport and state interfaces are kept consistent across Processing, Python, Web, ROS and firmware.
For the desktop application, open software/processing/SynROV/SynROV.pde in Processing and run the sketch with its required libraries installed.
For firmware, open firmware/SynROV_Firmware/SynROV_Firmware.ino, select Arduino Mega or Mega 2560 / ATmega2560, compile and upload using the Arduino toolchain.
For AiBot, install the Python package from software/python/ and start it with synrov-aibot or run_synrov_aibot.bat. The Web Console is software/web/SynROV.html. ROS 2 setup is documented in software/ros/README.md.
SynROV V1 uses plain ws:// and does not provide cryptographic client authentication or TLS on the application endpoint. Keep port 9000 on localhost or a trusted isolated network. For operation across an untrusted network, use an authenticated encrypted tunnel/VPN rather than exposing the endpoint directly.
Start with docs/README.md. Safety and operating behavior is documented in docs/SAFETY_AND_OPERATION.md, and the application/serial interfaces are described in docs/APPLICATION_PROTOCOL.md and docs/SERIAL_PROTOCOL.md.
See LICENSE.








