How superxslam/superodom works
SuperOdometry is a ROS 2 LiDAR and IMU odometry/mapping system. Its principal workflow accepts sensor streams, extracts LiDAR features, estimates LiDAR motion against a local map, and combines LiDAR constraints with IMU preintegration to produce odometry; IMU predictions also seed LiDAR registration. Mapping/localization and degeneracy awareness are documented capabilities. The source index and README support the main components and fusion relationships, but sampled excerpts do not show all runtime topic wiring, so uncertain links are omitted.
Main entry points: laserMapping.cpp LiDAR Mapping Node · LidarSlam.cpp LiDAR SLAM · imuPreintegration.cpp IMU Preintegration · featureExtraction.cpp Feature Extraction
Components 18
Sensor Ingestion
- Sensor Launch Profiles
super_odometry/launch - LiDAR Stream
- IMU Stream
- Feature Extraction
super_odometry/src/FeatureExtraction/featureExtraction.cpp
Odometry Estimation
- LiDAR Mapping Node
super_odometry/src/LaserMapping/laserMapping.cpp - LiDAR SLAM
super_odometry/src/LidarProcess/LidarSlam.cpp - IMU Preintegration
super_odometry/src/ImuPreintegration/imuPreintegration.cpp - Odometry Output
Mapping And Risk
- Local Map
super_odometry/include/super_odometry/LidarProcess/LocalMap.h - Point Search
super_odometry/include/super_odometry/flann/octree.h - Lidar Optimization
super_odometry/src/LaserMapping/lidarOptimization.cpp - Pose Factor
super_odometry/src/LidarProcess/SE3AbsolutatePoseFactor.cpp - Degeneracy Awareness
super_odometry/src/LidarProcess/LidarSlam.cpp - Localization Mode
super_odometry/src/LaserMapping/laserMapping.cpp
Configuration And Views
- Parameters And Calibration
super_odometry/src/parameter/parameter.cpp - Rerun Visualization
script/visualizers/rerun_visualizer.py - RViz Visualization
Other components
- Operator
Connections 17
- Operator → Sensor Launch Profiles: launches
- LiDAR Stream → Feature Extraction: supplies scans
- IMU Stream → IMU Preintegration: supplies measurements
- Feature Extraction → LiDAR Mapping Node: provides features
- LiDAR Mapping Node → LiDAR SLAM: delegates SLAM
- LiDAR SLAM → Local Map: uses map
- Local Map → Point Search: builds index
super_odometry/include/super_odometry/LidarProcess/LocalMap.h - LiDAR SLAM → Lidar Optimization: uses optimizer
- LiDAR SLAM → Pose Factor: uses factor
- LiDAR Mapping Node → IMU Preintegration: provides pose constraints
- IMU Preintegration → LiDAR Mapping Node: provides pose predictions
- LiDAR Mapping Node → Odometry Output: publishes odometry
- LiDAR SLAM → Degeneracy Awareness: estimates risk
super_odometry/src/LidarProcess/LidarSlam.cpp - LiDAR Mapping Node → Localization Mode: supports mode
super_odometry/src/LaserMapping/laserMapping.cpp - Operator → Rerun Visualization: views results
- Operator → RViz Visualization: views results
- Parameters And Calibration → LiDAR Mapping Node: configures