How senseroboticslab/aqua-slam works
AQUA-SLAM combines stereo vision, IMU, and DVL measurements for underwater pose estimation and mapping. Its main workflow is ROS sensor input, frame tracking and initialization, local map construction and sensor fusion, then loop closure and visualization. The README also documents sensor extrinsic calibration, optional loop detection, and environmental reconstruction. Sampled source confirms vocabulary-based place recognition, graph optimization, camera projection, and DVL calibration; wiring for other subsystems is inferred only where the documented product workflow supports it.
Main entry points: System.cc SLAM System · Tracking.cc Frame Tracking · Optimizer.cc Graph Optimizer · LocalMapping.cc Local Mapping
Components 22
Sensor Ingestion & Tracking
- ROS Sensor Adapter
src/RosHandling.cpp - ROS SLAM Node
src/ros_stereo_DVL_tighly.cc - SLAM System
src/System.cc - Frame Tracking
src/Tracking.cc - Frame & Features
src/Frame.cc - ORB Extraction
src/ORBextractor.cc - Camera Models
src/CameraModels/KannalaBrandt8.cpp - Visual Initialization
src/Initializer.cc
Mapping & Sensor Fusion
- Local Mapping
src/LocalMapping.cc - Map Atlas
src/Atlas.cc - Map & Points
src/Map.cc - DVL-IMU Fusion
src/DVLGroPreIntegration.cpp - DVL-Gyro Calibration
src/DvlGyroOptimizer.cpp
Recognition & Optimization
- Graph Optimizer
src/Optimizer.cc - Loop Closing
src/LoopClosing.cc - Keyframe Database
src/KeyFrameDatabase.cc - Place Vocabulary
Thirdparty/DBoW2/DBoW2/TemplatedVocabulary.h
Mapping & Visualization
- Dense Reconstruction
src/DenseMapper.cpp - Occupancy Mapping
Thirdparty/octomap/include/octomap/OccupancyOcTreeBase.h - SLAM Viewer
src/Viewer.cc
Other components
- Stereo, IMU, DVL
- ROS / RViz
Connections 25
- Stereo, IMU, DVL → ROS Sensor Adapter: publish measurements
- ROS SLAM Node → ROS Sensor Adapter: subscribe to data
- ROS SLAM Node → SLAM System: start SLAM
- ROS Sensor Adapter → SLAM System: deliver sensor data
- SLAM System → Frame Tracking: track input
- Frame Tracking → Frame & Features: construct frames
- Frame & Features → ORB Extraction: extract features
- Frame Tracking → Camera Models: project observations
- Frame Tracking → Visual Initialization: initialize map
- Frame Tracking → Local Mapping: submit keyframes
- Local Mapping → Map & Points: update map
- SLAM System → Map Atlas: manage maps
- Frame Tracking → DVL-IMU Fusion: integrate measurements
- DVL-IMU Fusion → Graph Optimizer: provide constraints
- DVL-Gyro Calibration → Graph Optimizer: calibrate constraints
- Local Mapping → Graph Optimizer: optimize map
- SLAM System → Loop Closing: coordinate loop detection
- Loop Closing → Keyframe Database: query candidates
- Keyframe Database → Place Vocabulary: score visual words
- Loop Closing → Graph Optimizer: correct map
- Dense Reconstruction → Occupancy Mapping: update occupancy map
- SLAM System → Dense Reconstruction: provide map data
- SLAM System → SLAM Viewer: publish visualization state
- SLAM Viewer → ROS / RViz: display results
- SLAM System → ROS / RViz: publish SLAM output