Telepresence Dive Detector
The Telepresence Dive Detector is an automated monitoring and control system for MBARI's telepresence infrastructure. It watches each research vessel's ROV sensor feed, detects when the ROV is actively diving, automatically manages OBS streaming, and exposes a web dashboard for operators to override the automation.
What it does
When an ROV dive begins, the system:
- Reads sensor data (water-contact flag and depth) from a Redis cache
- Determines that the ROV is in the water and below a configurable depth threshold
- Switches the OBS scene to the active-dive layout (
MainOnly) - Starts the live stream to the configured platform
When the dive ends:
- Detects the change in sensor state
- Switches OBS to the fallback scene (
FeedOffline) - Stops the stream
Two per-ship toggles on the dashboard override this automation:
- Automatic streaming — when off, the detector forces the stream
stopped on
FeedOfflineregardless of dive state. - Force stream ON — wins over the automatic toggle; keeps OBS
streaming on
MainOnlyregardless of dive state.
Supported ships
The system is deployed in parallel for two research vessels:
| Ship | Identifier | NATS Domain |
|---|---|---|
| R/V Rachel Carson | rcsn |
rc |
| R/V David Packard | dpkd |
dp |
Quick start
# Bring up Redis, collectors, detectors, and the dashboard
docker compose up -d --build
# Open the dashboard
open http://localhost:3000
See Deployment for full instructions.
System components
| Component | Description |
|---|---|
| Dive Detector | Core detection loop and OBS orchestration |
| Navigation Collector | Pulls a configured allow-list of NATS keys into Redis |
| OBS Control | WebSocket interface to OBS Studio |
| Frontend Dashboard | SvelteKit web UI for monitoring and operator override |
| Redis Tools | CLI utilities for inspecting cached sensor data |