Skip to content

AQUA Stack Overview

A comprehensive guide to understanding the AQUA Stack autonomy platform for underwater vehicles.

What is AQUA Stack?

AQUA Stack is a complete software platform for autonomous underwater vehicles (AUVs) that provides:

  • GPS-denied navigation using visual SLAM
  • Autonomous mission execution with behavior trees
  • Real-time path planning and obstacle avoidance
  • Vehicle-agnostic interface through ArduSub integration
  • Simulation tools for safe mission testing

The Challenge of Underwater Autonomy

Autonomous underwater operations present unique challenges:

No GPS

Unlike aerial or ground robots, underwater vehicles cannot use GPS for localization. Water blocks GPS signals beyond a few meters depth.

Limited Communication

Underwater communication is restricted to: - Acoustic: Low bandwidth, high latency - Tether: Limited range, drag effects - None: Fully autonomous operation required

Dynamic Environment

  • Currents: Constant disturbances to planned paths
  • Poor visibility: Turbidity reduces camera range
  • Variable lighting: Depth and time-of-day variations

Safety Critical

  • Equipment is expensive (>$50K typical)
  • Recovery is difficult if lost
  • Environmental risks (entanglement, collision)

How AQUA Stack Solves These Challenges

1. Visual SLAM for Localization

Instead of GPS, AQUA Stack uses Visual SLAM (Simultaneous Localization and Mapping):

graph LR
    A[Camera Images] --> B[Feature Detection]
    B --> C[Feature Tracking]
    C --> D[Pose Estimation]
    D --> E[Map Update]
    E --> F[Loop Closure]
    F --> D

    style D fill:#4CAF50
    style F fill:#FF9800

How it works: 1. Extract visual features from camera images 2. Track features across frames 3. Estimate camera (vehicle) pose from feature motion 4. Build 3D map of environment 5. Detect when vehicle returns to known areas (loop closure) 6. Correct accumulated drift

Result: Accurate position estimation without GPS

2. Behavior Trees for Mission Control

AQUA Stack uses behavior trees for flexible, reactive mission execution:

Mission: Survey Pipeline
├─ Sequence
│  ├─ GoToWaypoint(start)
│  ├─ Repeat(10)
│  │  └─ Sequence
│  │     ├─ FollowPath(pipeline)
│  │     ├─ TakeSurveyPhoto
│  │     └─ AdvanceAlongPath
│  └─ ReturnToHome
└─ Fallback (if above fails)
   └─ EmergencyS urface

Advantages: - Composable: Build complex behaviors from simple primitives - Reactive: Respond to changing conditions - Debuggable: Clear structure for troubleshooting - Reusable: Share behaviors across missions

3. Adaptive Path Planning

AQUA Stack continuously replans based on:

  • Currents detected: Compensate for water flow
  • Obstacles discovered: Reroute around hazards
  • Energy remaining: Adjust mission to ensure safe return
  • SLAM confidence: Fall back to safer modes if needed

4. Proven Vehicle Integration

ArduSub provides the low-level control interface:

┌────────────────────────────────────────┐
│          AQUA Stack                     │
│  (High-level Navigation & Planning)    │
└─────────────────┬──────────────────────┘
                  │ MAVLink
┌─────────────────┴──────────────────────┐
│          ArduSub Autopilot              │
│  (Stabilization, Motor Control)        │
└─────────────────┬──────────────────────┘
                  │ PWM/Serial
┌─────────────────┴──────────────────────┐
│    Vehicle Hardware (Thrusters, ESCs)  │
└────────────────────────────────────────┘

Benefits: - Proven autopilot with thousands of flight hours - Safety features (failsafes, arming checks) - Standard interface (MAVLink protocol) - Large community and support

Architecture Deep Dive

Component Layers

AQUA Stack is organized into distinct layers:

Layer 1: Perception

Input: Raw sensor data (images, IMU, depth) Processing: - Camera calibration and undistortion - Feature detection (ORB, SIFT, etc.) - IMU preintegration - Sensor synchronization

Output: Processed observations for SLAM

Layer 2: Localization

Input: Processed observations Processing: - Visual odometry (frame-to-frame tracking) - Local mapping (sliding window optimization) - Loop closure detection - Global pose graph optimization

Output: Vehicle pose estimate + confidence

Layer 3: Planning

Input: Current pose, mission waypoints, map Processing: - Global path planning (A, RRT) - Local trajectory optimization - Collision checking - Current compensation

Output: Desired trajectory

Layer 4: Control

Input: Desired trajectory, current state Processing: - Path following (pure pursuit, LQR, MPC) - Behavior tree evaluation - Safety checks - Failsafe triggers

Output: Vehicle commands (velocity, heading, depth)

Layer 5: Actuation

Input: Vehicle commands Processing: - ArduSub MAVLink interface - Command translation - Telemetry feedback

Output: Motor PWM commands

Data Flow

Sensors → Perception → SLAM → World State
Mission Plan → Planning → Trajectory → Control → Actuation
                                                  Vehicle

Coordinate Frames

AQUA Stack uses several coordinate frames:

World Frame (W)

  • Origin: Mission start location
  • Orientation: North-East-Down (NED)
  • Usage: Global planning, waypoint definition

Body Frame (B)

  • Origin: Vehicle center of mass
  • Orientation: Forward-Right-Down (FRD)
  • Usage: Vehicle dynamics, control

Camera Frame (C)

  • Origin: Camera optical center
  • Orientation: Forward-Left-Up (FLU) or as calibrated
  • Usage: Visual observations, SLAM

Map Frame (M)

  • Origin: First keyframe in SLAM map
  • Orientation: Arbitrary (typically aligned with world at start)
  • Usage: SLAM, local navigation

Transform chain: W → M → B → C

Performance Characteristics

Localization Accuracy

Environment Drift Rate Loop Closure Notes
Clear water, good features <1% distance traveled Yes Optimal conditions
Murky water, few features 2-5% distance traveled Rare Challenging
Structured (pipeline, wall) <0.5% distance traveled Frequent Ideal

Computational Requirements

Component CPU Usage Memory Notes
Visual SLAM 40-60% 500MB Single core on Jetson Nano
Planning 10-20% 100MB Depends on map size
Control 5-10% 50MB Realtime constraint
Total ~70% ~650MB With margin for other tasks

Mission Duration

Typical mission times with AQUA Stack:

  • Setup & calibration: 10-15 minutes
  • Mission execution: Limited by vehicle battery (1-4 hours typical)
  • Data download & processing: 5-10 minutes

Integration Points

AQUA Stack interfaces with:

Inputs

  • Cameras: ROS camera drivers or GStreamer pipelines
  • IMU: Standard IMU drivers (MPU6050, BMI088, etc.)
  • Depth sensor: MS5837 or similar
  • DVL (optional): Teledyne, Nortek, LinkQuest
  • GPS (surface): For initial heading, mission upload

Outputs

  • ArduSub: MAVLink over serial/UDP
  • Ground station: Telemetry via acoustic modem or tether
  • Data logging: ROS bags, custom formats
  • Mission results: Maps, trajectories, photos

Deployment Scenarios

Scenario 1: Tethered Operations

Setup: Fiber optic or copper tether Benefits: - Real-time telemetry - Human-in-loop control possible - Continuous power

Limitations: - Range limited (100-300m typical) - Drag affects vehicle performance

Scenario 2: Acoustic Communications

Setup: Acoustic modem (e.g., WHOI MicroModem) Benefits: - Longer range (1-5km) - Untethered freedom

Limitations: - Very low bandwidth (100-1000 bps) - High latency (seconds) - Expensive ($10K+ for modem)

Scenario 3: Fully Autonomous

Setup: Pre-loaded mission, no communication Benefits: - Maximum range (limited only by battery) - No communication infrastructure needed

Limitations: - No real-time monitoring - Must complete mission or return safely - Higher risk

Safety Features

AQUA Stack includes multiple safety layers:

Pre-Mission Checks

  • ✓ SLAM initialization quality
  • ✓ Sensor health
  • ✓ Battery state
  • ✓ ArduSub arming checks
  • ✓ GPS fix (if surface start)

In-Mission Monitoring

  • 🛡️ SLAM confidence tracking
  • 🛡️ Battery consumption monitoring
  • 🛡️ Obstacle detection
  • 🛡️ Depth limits
  • 🛡️ Communication timeout (if applicable)

Failsafe Behaviors

  • Low SLAM confidence → Switch to dead reckoning, head to surface
  • Low battery → Abort mission, return home
  • Obstacle detected → Stop, replan, or surface
  • Communication loss → Continue mission or return based on settings
  • Depth limit exceeded → Emergency ascent

Comparison with Other Systems

Feature AQUA Stack Custom Development Academic SLAM Only
Development time Days 18-24 months 6-12 months
Mission planning Included Build from scratch Not included
Vehicle integration Plug-and-play Custom for each vehicle Manual integration
Safety features Production-ready Must implement Basic or none
Support Commercial None Academic papers only
Cost License fee Engineer time (>$200K) Free (software only)

Next Steps

Now that you understand AQUA Stack:

  1. Check Requirements - Ensure your hardware is compatible
  2. Installation - Set up AQUA Stack
  3. Quick Start - Run your first mission
  4. Tutorials - Detailed walkthroughs

Further Reading