Skip to content

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:

  1. Reads sensor data (water-contact flag and depth) from a Redis cache
  2. Determines that the ROV is in the water and below a configurable depth threshold
  3. Switches the OBS scene to the active-dive layout (MainOnly)
  4. Starts the live stream to the configured platform

When the dive ends:

  1. Detects the change in sensor state
  2. Switches OBS to the fallback scene (FeedOffline)
  3. Stops the stream

Two per-ship toggles on the dashboard override this automation:

  • Automatic streaming — when off, the detector forces the stream stopped on FeedOffline regardless of dive state.
  • Force stream ON — wins over the automatic toggle; keeps OBS streaming on MainOnly regardless 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