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.

Version Python Platform

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:

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

Development

Indices and Tables

License

MIT License - Copyright (c) 2026 Baptiste Moulin / Flag Labs