How ikhyeon-cho/fastdem works
FastDEM is a CPU elevation-mapping engine for mobile robots, with C++ and optional ROS1/ROS2 interfaces. The main workflow receives LiDAR or RGB-D point clouds, uses sensor-aware estimation to update a local or global elevation map, and can post-process and publish the result. The README documents the estimator choices and post-processing capabilities; the tree supports the named module paths, but most core implementations were not sampled, so internal call wiring is shown only where supported by the ROS node excerpts.
Main entry points: src/fastdem_ros_node.cpp ROS1 node · src/fastdem_ros_node.cpp ROS2 node · elevation_map.hpp Elevation map · elevation_mapping.hpp Elevation estimators
Components 26
Robot interfaces
- ROS1 node
ros1/src/fastdem_ros_node.cpp - ROS2 node
ros2/src/fastdem_ros_node.cpp - ROS1 adapters
fastdem/include/fastdem/bridge/ros1.hpp - ROS2 adapters
fastdem/include/fastdem/bridge/ros2.hpp - Transform provider
fastdem/include/fastdem/transform_interface.hpp - ROS visualization
fastdem/include/fastdem/bridge/ros/impl_visualization.hpp
Mapping core
- Pipeline configuration
fastdem/include/fastdem/config/fastdem.hpp - FastDEM mapper
fastdem/include/fastdem/fastdem.hpp - Sensor models
fastdem/include/fastdem/sensors/sensor_model.hpp - LiDAR model
fastdem/include/fastdem/sensors/lidar_model.hpp - RGB-D model
fastdem/include/fastdem/sensors/rgbd_model.hpp - Elevation estimators
fastdem/include/fastdem/mapping/elevation_mapping.hpp - Kalman estimator
fastdem/include/fastdem/mapping/kalman_estimation.hpp - P² quantile estimator
fastdem/include/fastdem/mapping/quantile_estimation.hpp
Terrain processing
- Post-process settings
fastdem/include/fastdem/config/postprocess.hpp - Raycasting
fastdem/include/fastdem/postprocess/raycasting.hpp - Uncertainty fusion
fastdem/include/fastdem/postprocess/uncertainty_fusion.hpp - Inpainting
fastdem/include/fastdem/postprocess/inpainting.hpp - Feature extraction
fastdem/include/fastdem/postprocess/feature_extraction.hpp - Spatial smoothing
fastdem/include/fastdem/postprocess/spatial_smoothing.hpp
Map data and I/O
- Elevation map
fastdem/include/fastdem/elevation_map.hpp - NPZ map I/O
fastdem/include/fastdem/io/npz.hpp - PNG export
fastdem/include/fastdem/io/png.hpp - PCD conversion
fastdem/include/fastdem/io/pcd_convert.hpp
Other components
- Robot sensors
- ROS transform service
Connections 41
- Robot sensors → ROS1 node: sends scans
- Robot sensors → ROS2 node: sends scans
- ROS1 node → ROS1 adapters: converts messages
- ROS2 node → ROS2 adapters: converts messages
- ROS1 node → Transform provider: sets provider
- ROS2 node → Transform provider: sets provider
- Transform provider → ROS transform service: requests transforms
- ROS1 node → Pipeline configuration: loads settings
- ROS2 node → Pipeline configuration: loads settings
- ROS1 node → FastDEM mapper: constructs mapper
- ROS2 node → FastDEM mapper: constructs mapper
- FastDEM mapper → Sensor models: models measurements
- Sensor models → LiDAR model: selects model
- Sensor models → RGB-D model: selects model
- FastDEM mapper → Elevation estimators: integrates scans
- Elevation estimators → Kalman estimator: uses estimator
- Elevation estimators → P² quantile estimator: uses estimator
- Elevation estimators → Elevation map: updates layers
- ROS1 node → Post-process settings: reads settings
- ROS2 node → Post-process settings: reads settings
- ROS1 node → Raycasting: runs post-processing
- ROS2 node → Raycasting: runs post-processing
- ROS1 node → Uncertainty fusion: runs service
- ROS2 node → Uncertainty fusion: runs service
- ROS1 node → Inpainting: runs service
- ROS2 node → Inpainting: runs service
- ROS1 node → Feature extraction: runs service
- ROS2 node → Feature extraction: runs service
- ROS1 node → Spatial smoothing: applies configured
- ROS2 node → Spatial smoothing: applies configured
- Raycasting → Elevation map: processes map
- Uncertainty fusion → Elevation map: processes map
- Inpainting → Elevation map: processes map
- Feature extraction → Elevation map: extracts from
- Spatial smoothing → Elevation map: processes map
- ROS1 node → ROS visualization: converts map
- ROS2 node → ROS visualization: converts map
- ROS visualization → Robot sensors: publishes outputs
- Elevation map → NPZ map I/O: reads or writes
- Elevation map → PNG export: exports image
- Elevation map → PCD conversion: converts cloud