How nathanrasami/bruce-slam works
Bruce-SLAM is a ROS sonar-based SLAM system, extended for the Aracati2017 dataset with command-velocity odometry, Cartesian sonar handling, optional sonar-context and USBL methods, HoloOcean simulation, and evaluation tools. The principal workflow takes sensor data through feature extraction and graph optimization to maps and trajectories, then evaluates completed runs. Source excerpts establish several internal calls; README statements support the dataset adaptations and broader capabilities. Unsampled subsystem links are omitted where their callers are not evidenced.
Main entry points: slam.py Graph SLAM · slam_ros.py SLAM ROS interface · conversions.py ROS conversions · mapping.py Occupancy mapping
Components 21
Dataset and Ingestion
- Command odometry
bruce_slam/src/bruce_slam/cmd_vel_odom.py - Aracati odometry
aracati2017/src/Odom.cpp - Cartesian sonar bridge
aracati2017/src/AerialImageNode.cpp
SLAM Estimation
- Feature extraction
bruce_slam/src/bruce_slam/feature_extraction.py - CFAR detection
bruce_slam/src/bruce_slam/CFAR.py - Sonar model
bruce_slam/src/bruce_slam/sonar.py - SLAM ROS interface
bruce_slam/src/bruce_slam/slam_ros.py - Graph SLAM
bruce_slam/src/bruce_slam/slam.py - SLAM objects
bruce_slam/src/bruce_slam/slam_objects.py - iSAM2 messages
bruce_msgs/src/bruce_msgs/conversions.cpp
Mapping and Output
- Mapping ROS node
bruce_slam/scripts/mapping_node.py - Occupancy mapping
bruce_slam/src/bruce_slam/mapping.py - Visualization
bruce_slam/src/bruce_slam/utils/visualization.py
Simulation and Evaluation
- HoloOcean simulation
offline_sim - Trajectory evaluation
analysis/traj_eval.py - Paper evaluation
analysis/paper_eval.py - Structure cloud scoring
analysis/traj_on_cloud.py
Shared Utilities
- ROS topic names
bruce_slam/src/bruce_slam/utils/topics.py - ROS conversions
bruce_slam/src/bruce_slam/utils/conversions.py - Bag and run I/O
bruce_slam/src/bruce_slam/utils/io.py
Other components
- ROV data
Connections 26
- ROV data → Command odometry: provides commands
- ROV data → Aracati odometry: provides sensor data
- ROV data → Cartesian sonar bridge: provides sonar images
- Command odometry → SLAM ROS interface: supplies odometry
- Aracati odometry → SLAM ROS interface: supplies odometry
- Cartesian sonar bridge → Feature extraction: supplies images
- Feature extraction → CFAR detection: runs detection
- SLAM ROS interface → Graph SLAM: invokes
bruce_slam/src/bruce_slam/slam_ros.py - Graph SLAM → Sonar model: uses
bruce_slam/src/bruce_slam/slam.py - Graph SLAM → SLAM objects: uses
bruce_slam/src/bruce_slam/slam.py - Mapping ROS node → Occupancy mapping: runs mapping
bruce_slam/scripts/mapping_node.py - Occupancy mapping → Sonar model: uses sonar model
bruce_slam/src/bruce_slam/mapping.py - Occupancy mapping → ROS conversions: uses conversions
bruce_slam/src/bruce_slam/mapping.py - Graph SLAM → ROS conversions: uses conversions
bruce_slam/src/bruce_slam/slam.py - Graph SLAM → Visualization: uses visualization
bruce_slam/src/bruce_slam/slam.py - SLAM ROS interface → Bag and run I/O: uses run I/O
bruce_slam/src/bruce_slam/slam_ros.py - SLAM ROS interface → Visualization: uses visualization
bruce_slam/src/bruce_slam/slam_ros.py - Sonar model → ROS conversions: converts messages
bruce_slam/src/bruce_slam/sonar.py - ROS conversions → ROS topic names: uses topic types
bruce_slam/src/bruce_slam/utils/conversions.py - Bag and run I/O → ROS topic names: uses topic names
bruce_slam/src/bruce_slam/utils/io.py - ROV data → HoloOcean simulation: synthetic scenarios
- Trajectory evaluation → Paper evaluation: provides metrics
analysis/paper_eval.py - Trajectory evaluation → Structure cloud scoring: scores trajectories
- Paper evaluation → Structure cloud scoring: scores map cloud
analysis/holoocean_report.py - SLAM ROS interface → iSAM2 messages: exchanges graph updates
- Graph SLAM → Graph SLAM: adds USBL factors
bruce_slam/src/bruce_slam/slam.py