Skip to content

Quick Start Guide

Get AQUA Stack running on your vehicle in under 30 minutes.

Prerequisites

Before starting, ensure you have:

  • Installed AQUA Stack
  • ✓ Underwater vehicle with ArduSub
  • ✓ Camera and IMU connected
  • ✓ Laptop with ground station software

Overview

This guide will walk you through:

  1. Initial configuration (10 min)
  2. Calibration (10 min)
  3. Running your first mission (10 min)

Step 1: Initial Configuration

Configure Vehicle Parameters

# Launch configuration wizard
aqua-config wizard

# Answer prompts:

Vehicle Type:

Select your vehicle:
1. BlueROV2 Heavy Configuration
2. BlueROV2 Standard Configuration
3. Custom Vehicle

Choice [1-3]: 1

Camera Setup:

Select camera type:
1. Intel RealSense D435 (Stereo)
2. USB Webcam (Monocular)
3. Custom Camera

Choice [1-3]: 1

Camera resolution:
1. 640x480 @ 30fps (recommended)
2. 1280x720 @ 30fps
3. 1920x1080 @ 15fps

Choice [1-3]: 1

Navigation Mode:

Select navigation mode:
1. Visual SLAM only
2. Visual SLAM + DVL
3. Visual SLAM + DVL + GPS (surface)

Choice [1-3]: 1

Verify Configuration

# View generated config
cat ~/.config/aqua/config.yaml

Expected output:

vehicle:
  type: bluerov2_heavy
  frame_config: X
  mass: 11.5  # kg

camera:
  type: realsense_d435
  resolution: [640, 480]
  fps: 30
  baseline: 0.05  # meters (for stereo)

navigation:
  mode: visual_slam
  loop_closure: true
  min_features: 100

mavlink:
  connection: udpin:0.0.0.0:14550
  heartbeat_rate: 1.0

Step 2: Calibration

Camera Calibration

Option A: Use Pre-Calibrated Values

For standard cameras (RealSense, etc):

# Load factory calibration
aqua-calibrate camera --load-factory

Option B: Calibrate Manually

For best accuracy or custom cameras:

# Start calibration
aqua-calibrate camera --interactive

# Follow on-screen instructions:
# 1. Print calibration pattern (checkerboard)
# 2. Show pattern to camera from various angles
# 3. Capture 20-30 images
# 4. Calibration will be computed and saved

IMU Calibration

# Start IMU calibration
aqua-calibrate imu

# Instructions:
# 1. Place vehicle on level surface
# 2. Keep still for 30 seconds (accel bias)
# 3. Slowly rotate 360° around each axis (gyro bias)
# 4. Calibration saved automatically

Sensor Alignment

Define camera-to-IMU transformation:

# For BlueROV2 with RealSense mounted forward:
aqua-calibrate alignment

# Enter transformation:
# Translation (x, y, z) in meters: [0.15, 0.0, 0.05]
# Rotation (roll, pitch, yaw) in degrees: [0, 0, 0]

Compass Calibration

If using magnetometer:

# Start compass calibration
aqua-calibrate compass

# Rotate vehicle in figure-8 pattern
# for 60 seconds underwater

# Calibration quality will be displayed

Step 3: System Check

Launch AQUA Stack

# Start all AQUA Stack nodes
roslaunch aqua_stack bringup.launch

# Wait for initialization:
# [INFO] SLAM initialized
# [INFO] Navigation ready
# [INFO] Control active
# [INFO] MAVLink connected

Monitor System Status

Open new terminal:

# Check system status
aqua-status

# Output:
# ┌─────────────────────────────────────┐
# │ AQUA Stack System Status            │
# ├─────────────────────────────────────┤
# │ SLAM:        ✓ Running (152 kf)     │
# │ Navigation:  ✓ Ready                │
# │ Control:     ✓ Armed                │
# │ MAVLink:     ✓ Connected            │
# │ Camera:      ✓ 640x480 @ 30fps      │
# │ IMU:         ✓ 200Hz                │
# │ Battery:     ✓ 16.2V (95%)          │
# │ Depth:       ✓ 0.0m                 │
# └─────────────────────────────────────┘

View Camera Feed

# Launch RViz visualization
roslaunch aqua_stack rviz.launch

# You should see:
# - Camera image with feature tracks
# - 3D map visualization
# - Vehicle position
# - Planned path (if mission loaded)

Step 4: First Mission - Manual Mode

Before autonomous missions, test manual control:

Surface Test

# Arm vehicle
aqua-control arm

# Test manual control:
aqua-control --mode manual

# Use keyboard:
# W/S: Forward/Backward
# A/D: Strafe left/right
# Q/E: Yaw left/right
# R/F: Ascend/Descend
# SPACE: Stop
# ESC: Disarm

Check SLAM Performance

# Monitor SLAM while moving
aqua-slam-monitor

# Metrics to watch:
# - Feature count: Should stay > 100
# - Tracking quality: Should be "GOOD"
# - Loop closures: Will increase if revisiting areas
# - Drift estimate: Should be low (<1% distance)

Step 5: First Autonomous Mission

Define Simple Mission

Create a mission file first_mission.yaml:

mission:
  name: "First Test Mission"
  start_position: [0, 0, 0]  # x, y, z in meters

  waypoints:
    - id: 1
      position: [5, 0, -1]  # 5m forward, 1m down
      tolerance: 0.5

    - id: 2
      position: [5, 5, -1]  # 5m right
      tolerance: 0.5

    - id: 3
      position: [0, 5, -1]  # 5m back
      tolerance: 0.5

    - id: 4
      position: [0, 0, 0]    # Return to start
      tolerance: 0.5

  behaviors:
    - action: goto_waypoint
      waypoint_id: 1
      speed: 0.3  # m/s

    - action: goto_waypoint
      waypoint_id: 2
      speed: 0.3

    - action: goto_waypoint
      waypoint_id: 3
      speed: 0.3

    - action: goto_waypoint
      waypoint_id: 4
      speed: 0.3

  failsafes:
    low_battery: return_home
    slam_lost: surface
    obstacle: stop_and_replan

Load and Execute Mission

# Load mission
aqua-mission load first_mission.yaml

# Preview mission (visualize in RViz)
aqua-mission preview

# Verify:
# - Waypoints are reasonable
# - Path is collision-free
# - Mission fits in battery capacity

# Start mission
aqua-mission start

# Monitor progress:
# ┌──────────────────────────────────────┐
# │ Mission: First Test Mission          │
# ├──────────────────────────────────────┤
# │ Status: In Progress                  │
# │ Waypoint: 2/4                        │
# │ Distance: 8.2m / 20.0m total         │
# │ Battery: 90% (Est. 45min remaining)  │
# │ SLAM Quality: GOOD                   │
# └──────────────────────────────────────┘

Emergency Abort (If Needed)

# Abort mission and return home
aqua-mission abort

# Or surface immediately
aqua-control surface

Step 6: Review Mission Data

After mission completion:

# Generate mission report
aqua-mission report

# Output saved to:
# ~/.aqua/missions/first_mission_YYYYMMDD_HHMMSS/
#   ├── trajectory.csv
#   ├── slam_map.pcd
#   ├── mission_log.txt
#   ├── camera_images/
#   └── report.html

View Trajectory

# Visualize in RViz
roslaunch aqua_stack replay.launch \
  mission:=first_mission_YYYYMMDD_HHMMSS

# Or export to Google Earth
aqua-export kml first_mission_YYYYMMDD_HHMMSS \
  --output ~/first_mission.kml

Common Issues & Solutions

Issue: SLAM Initialization Failed

Symptom: "Waiting for SLAM initialization..." indefinitely

Solution:

# Check camera feed
rostopic echo /camera/image_raw --noarr

# Verify features are detected
rosrun aqua_slam feature_viewer

# Ensure sufficient lighting and visual features
# Move camera slowly in well-lit area with texture

Issue: Vehicle Not Responding

Symptom: Commands sent but vehicle doesn't move

Solution:

# Check ArduSub connection
aqua-mavlink test

# Verify vehicle is armed
aqua-control status

# Check for errors in ArduSub
aqua-mavlink stream STATUSTEXT

Issue: Poor SLAM Tracking

Symptom: Tracking quality "POOR", frequent lost tracking

Solution: - Increase lighting - Reduce speed - Add visual features to environment - Check camera focus - Verify calibration accuracy

Next Steps

🎉 Congratulations! You've completed your first AQUA Stack mission.

Learn More:

Navigation: - Waypoint Missions - Advanced waypoint planning - Path Following - Follow complex paths - Behavior Trees - Create custom behaviors

SLAM: - SLAM Configuration - Optimize SLAM performance - Loop Closure - Improve long-duration accuracy

Integration: - BlueROV2 Setup - Specific BlueROV2 configuration - Custom Vehicles - Adapt to your vehicle

Tutorials: - Advanced Navigation - Complex missions - Custom Behaviors - Program new behaviors - Multi-Vehicle - Coordinate multiple vehicles

Troubleshooting

Having issues? Check:

Get Support

  • Email: support@signalbotics.com
  • Documentation: https://docs.signalbotics.com
  • Emergency: See your license agreement

Previous: Installation → | Next: First Mission Tutorial →