Realistic Failure Scenarios for Underwater IMU Navigation
ROS1 ROS2 ROS1 Bridge Gazebo C++ Docker IMU (9-DOF) AUV simulation
Project Overview
Time-based fault-injection framework that simulates realistic IMU and magnetometer failures inside an underwater ROS/Gazebo environment to stress-test AUV navigation algorithms.
- Integrated a ROS1-based underwater world with ROS2 via Docker + ROS1-bridge, enabling modern ROS2 nodes to drive the legacy simulation without rewriting existing code.
- Implemented a time-based fault engine that injects bias, scale-factor drift, stuck values, zero-output, saturation, temperature bias and mis-alignment on demand.
- Generated clean baseline bags, then replayed faults to compare normal vs. faulty IMU data on a AUV model.
Problem & Motivation
AUVs often rely on a single MEMS IMU + tri-axial magnetometer to save mass and power. Without redundancy, any drift, bias or outright sensor failure can doom a mission especially under ice where GPS is unavailable. The goal was to inject realistic failures into an existing project simulation so researchers can quantify risk before field trials.
Challenges & Solutions
- Bridging old ROS1 world → containerised the entire stack and used ROS1-bridge for bidirectional topic mirroring without touching original code.
- Too many possible faults → focussed on eight with highest impact (bias, scale, misalignment, temp, stuck, zero, saturation, g-dependency).
- Need repeatability → fault parameters (type time duration axis value) loaded from YAML so researchers can toggle scenarios between runs.
- Capturing ground truth → recorded ROS 2 bags to correlate sensor error with vehicle drift.
Key Takeaways
- Time-based injection mirrors real AUV transients better than single-frame spikes.
- Docker + bridge let legacy ROS1 sims live on while new ROS2 tooling grows around them—zero refactor.
- Early desktop testing caught orientation blow-ups long before pool trials, saving hardware time and risk.