Autonomous Navigation¶
AQUA Stack's autonomous navigation system enables underwater vehicles to execute complex missions safely and efficiently.
Overview¶
The navigation system transforms high-level mission goals into precise vehicle commands through:
- Global Planning: Optimal paths between waypoints
- Local Planning: Real-time obstacle avoidance
- Path Following: Accurate trajectory tracking
- Behavior Trees: Hierarchical mission logic
- Dynamic Replanning: Adaptation to changing conditions
Architecture¶
graph TD
A[Mission Waypoints] --> B[Global Planner]
B --> C[Path Smoother]
C --> D[Local Planner]
E[SLAM Position] --> D
F[Obstacle Detection] --> D
D --> G[Path Tracker]
G --> H[Vehicle Controller]
style B fill:#4CAF50
style D fill:#FF9800
style G fill:#2196F3
Key Features¶
3D Waypoint Navigation¶
Navigate through 3D underwater space with precise waypoint following:
waypoints:
- position: [0, 0, 0] # Start
- position: [10, 0, -5] # 10m forward, 5m down
- position: [10, 10, -5] # 10m right
- position: [0, 10, 0] # Return to surface
Adaptive Path Following¶
Follow planned paths while adapting to: - Water currents - Vehicle dynamics - Sensor noise - Unexpected obstacles
Behavior-Based Control¶
Compose complex behaviors from simple primitives:
Dynamic Replanning¶
Automatically replan when conditions change: - Obstacles detected - Path blocked - Current too strong - Battery low
Navigation Modes¶
Mode 1: Waypoint Navigation¶
Best for: Simple missions, site surveys
mission = WaypointMission([
Waypoint(x=0, y=0, z=0),
Waypoint(x=10, y=0, z=-5),
Waypoint(x=10, y=10, z=-5),
])
mission.execute()
Mode 2: Path Following¶
Best for: Pipeline inspection, transects
path = generate_pipeline_path(
start=[0, 0, -5],
direction=[1, 0, 0],
length=100,
offset=2.0 # 2m from pipeline
)
follow_path(path, speed=0.5)
Mode 3: Station Keeping¶
Best for: Photography, sampling
Mode 4: Terrain Following¶
Best for: Seafloor mapping, inspection
Coordinate Frames¶
AQUA Stack uses multiple reference frames:
World Frame (NED)¶
- Origin: Mission start or known position
- X: North
- Y: East
- Z: Down (positive downward)
Vehicle Frame (FRD)¶
- Origin: Vehicle center of mass
- X: Forward
- Y: Right
- Z: Down
# Transform waypoint from world to vehicle frame
waypoint_vehicle = transform_world_to_vehicle(
waypoint_world=[10, 5, -8],
vehicle_pose=current_pose
)
Planning Algorithms¶
Global Planner¶
Computes optimal path from start to goal:
Algorithms Available: - A*: Fast, optimal for known maps - RRT*: Good for complex environments - Visibility Graph: Fast for 2D planning
Cost Functions: - Distance (default) - Energy consumption - Risk (proximity to obstacles) - Time (accounting for currents)
Local Planner¶
Real-time obstacle avoidance:
Algorithms: - DWA (Dynamic Window Approach): Fast, suitable for dynamic environments - TEB (Timed Elastic Band): Optimal velocity profiles - APF (Artificial Potential Field): Simple, reactive
Path Smoother¶
Optimizes global path for vehicle dynamics: - Removes sharp turns - Respects velocity limits - Minimizes energy - Ensures feasibility
Control System¶
Path Tracking¶
Methods Available:
-
Pure Pursuit: Simple, widely used
-
Line-of-Sight (LOS): Better for underwater vehicles
-
Model Predictive Control (MPC): Most advanced
Velocity Control¶
Adapts speed based on: - Path curvature (slow in turns) - Obstacle proximity - SLAM confidence - Battery state
velocity_profile = compute_velocity(
path=planned_path,
max_speed=1.0,
min_speed=0.2,
deceleration_distance=3.0
)
Safety Features¶
Geofencing¶
Define safe operating area:
geofence:
type: polygon
vertices:
- [0, 0]
- [100, 0]
- [100, 100]
- [0, 100]
depth_min: 0
depth_max: -50
Collision Avoidance¶
Multiple layers of protection:
- Global planning: Avoid known obstacles
- Local planning: Reactive avoidance
- Emergency stop: Hard limit at 1m
Return-to-Home¶
Automatic return triggers: - Low battery (<20%) - Lost localization - Communication timeout - Manual activation
rtl_config = {
'ascent_rate': 0.5, # m/s
'surface_swim_speed': 0.3,
'return_path': 'direct', # or 'retrace'
}
Performance Metrics¶
Typical navigation performance:
| Metric | Value | Conditions |
|---|---|---|
| Waypoint accuracy | ±0.5m | Good SLAM |
| Path following error | ±0.3m RMS | Steady state |
| Planning time | <1s | <100 waypoints |
| Replan frequency | As needed | Typically 0.1Hz |
| Max operating speed | 2 m/s | Vehicle dependent |
Configuration¶
Key navigation parameters in ~/.config/aqua/navigation.yaml:
navigation:
global_planner:
algorithm: astar
resolution: 0.5 # meters
inflation_radius: 1.0
local_planner:
algorithm: dwa
horizon: 2.0 # seconds
sim_time: 3.0
path_tracker:
method: los
lookahead: 2.5 # meters
cross_track_gain: 0.5
velocity:
max_linear: 1.0 # m/s
max_angular: 30 # deg/s
acceleration_limit: 0.3 # m/s²
Next Steps¶
Explore each navigation component in detail:
- Waypoint Missions - Plan and execute waypoint-based missions
- Path Following - Follow complex paths accurately
- Behavior Trees - Create sophisticated mission logic
- Dynamic Replanning - Handle unexpected situations
Or jump to practical guides: