Skip to content

Latest commit

 

History

62 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SynROV

SynROV application icon

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.

Interface preview

AiBot command center Processing desktop runtime Web console
SynROV AiBot command center SynROV Processing desktop runtime in Manipulator mode SynROV 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.

Robot mode gallery

Manipulator Vehicle Drone
Processing Manipulator mode Processing Vehicle mode Processing Drone mode
Boat Submarine Biped
Processing Boat mode Processing Submarine mode Processing Biped mode
Quadruped
Processing Quadruped mode

Repository structure

  • 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/.

Architecture

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.

Version 1 interfaces

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}}

Robot classes

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.

Running the project

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.

Network boundary

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.

Documentation

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.

License

See LICENSE.

About

SynROV is a multi-robot platform. The project combines Arduino firmware, a Processing-based 3D operator station, a browser control console, the Python AiBot runtime, and optional ROS 2/rosbridge integration.

Topics

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages