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:
- Initial configuration (10 min)
- Calibration (10 min)
- Running your first mission (10 min)
Step 1: Initial Configuration¶
Configure Vehicle Parameters¶
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¶
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):
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)¶
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 →