Overview
An experimental software and systems architecture for a small autonomous underwater vehicle (AUV), covering navigation, mission execution, and the simulation environment used to test both before committing to hardware.
The project is structured around three cooperating subsystems: a state estimator, a mission executive, and a low-level controller, all built on ROS.
Architecture
The vehicle stack is organized into independent nodes communicating over well-defined interfaces:
- State estimation — fuses IMU, depth, and DVL data into a vehicle state estimate.
- Mission executive — a finite-state mission layer that sequences waypoints and behaviors.
- Controller — a low-level attitude and depth controller driving thruster outputs.
[ sensors ] -> [ state estimator ] -> [ mission executive ] -> [ controller ] -> [ thrusters ]
Design
Early design decisions favored modularity over performance: every subsystem can be swapped between simulation and hardware without touching the mission logic. This made it possible to iterate on mission behavior long before hardware was available.
Implementation
The current implementation targets ROS 2, with hardware-in-the-loop testing planned once the embedded navigation computer reaches a stable revision.
Experiments
Initial experiments focus on validating state estimation accuracy in simulation against known ground-truth trajectories.
Lessons Learned
Simulating sensor noise honestly, rather than assuming clean data, surfaced several state estimation issues much earlier than hardware testing would have.