BlueROV SLAM Documentation
Underwater acoustic SLAM system for BlueROV2 combining dual side-scan sonar (Kogger), depth sensors, IMU, GPS, and temperature via ESP32 sensor hub.
Quick Start
1. Flash ESP32 Firmware
cd esp32-sensor-hub
pio run --target upload --upload-port /dev/ttyUSB0
2. Start BlueOS Extensions
# On Raspberry Pi (BlueOS)
docker compose up -d
Dashboards:
Sensor Hub: http://192.168.0.174:8099
Kogger Viewer: http://192.168.0.174:8100
3. Check Status
curl http://192.168.0.174:8099/api/status
curl http://192.168.0.174:8100/api/status
System Architecture
┌──────────────────────────────────────────────────┐
│ ESP32-WROOM-32UE (Sensor Hub) │
│ ┌──────────────────────────────────────────────┐ │
│ │ Kogger A → UART1 GPIO 16/17 @ 921600 │ │
│ │ Kogger B → UART2 GPIO 25/26 @ 921600 │ │
│ │ GPS → Soft GPIO 27/14 @ 9600 │ │
│ │ K1 EZO → Soft GPIO 19/18 @ 9600 [SWAPPED] │ │
│ │ IMU HWT → Soft GPIO 13/15 @ 9600 │ │
│ │ MS5837 → I2C 0x76 (depth/pressure) │ │
│ │ TSYS01 → I2C 0x77 (temperature) │ │
│ └────────────────┬─────────────────────────────┘ │
└──────────────────┼───────────────────────────────┘
│ USB Serial @ 115200
↓
┌──────────────────────────────────────────────────┐
│ Raspberry Pi (BlueOS) │
│ ┌──────────────────────────────────────────────┐ │
│ │ blueos-extension (Docker) │ │
│ │ ├─ HTTP :8099 (dashboard) │ │
│ │ ├─ WS :8766 (live data) │ │
│ │ ├─ UDP :14555 (Kogger A → KoggerApp) │ │
│ │ ├─ UDP :14556 (Kogger B → KoggerApp) │ │
│ │ └─ MAVLink :14401 (→ ArduPilot) │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ kogger-viewer (Docker) │ │
│ │ ├─ HTTP :8100 (waterfall viewer) │ │
│ │ └─ WS :8101 (live waterfall data) │ │
│ └──────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
Hardware Components
Component |
Model |
Interface |
Role |
|---|---|---|---|
MCU |
ESP32-WROOM-32UE |
USB Serial |
Sensor hub |
Sonar A |
Kogger Side-Scan |
UART1 921600 |
Starboard imaging |
Sonar B |
Kogger Side-Scan |
UART2 921600 |
Port imaging |
GPS |
u-blox |
SoftSerial 9600 |
Surface position |
EZO EC |
Atlas Scientific |
SoftSerial 9600 |
Conductivity/salinity |
IMU |
HWT905 (WitMotion) |
SoftSerial 9600 |
9-axis attitude |
Depth |
MS5837-30BA |
I2C 0x76 |
Pressure/depth |
Temp |
TSYS01 |
I2C 0x77 |
High-precision temp |
Table of Contents
Documentation
Development
Indices and Tables
License
MIT License - Copyright (c) 2026 Baptiste Moulin / Flag Labs