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:
- Check Requirements - Ensure your hardware is compatible
- Installation - Set up AQUA Stack
- Quick Start - Run your first mission
- Tutorials - Detailed walkthroughs
Further Reading¶
- Navigation System - Deep dive into path planning
- Visual SLAM - SLAM algorithms and configuration
- Vehicle Integration - Connect your vehicle
- Troubleshooting - Common issues