sm2mm pipelines
This page describes the file format for sm2mm pipelines and lists some useful ready-to-use examples.
Note
👉 There is an online graphical editor for sm2mm pipelines
1. What does sm2mm mean?
sm2mm stands for the process of transforming a “simple map” file, a “key-frame map” typically generated by a SLAM system and having the .simplemap extension, into a “metric map” file (.mm extension), typically comprising several map layers of different types, semantics, or serving to different purposes.
Users may use this through two interfaces: a CLI application sm2mm or the C++ API mp2p_icp_filters::simplemap_to_metricmap().
2. Pipeline file specification
Pipeline configuration files are written in YAML format and define the sequence of operations to be applied to the raw sensor observations stored as map keyframes.
The pipeline can include various filters and generators that process the observations, such as downsampling, noise reduction, or feature extraction. The pipeline file can also specify custom plugins to be loaded, which can define new metric map classes or custom filter algorithms.
Each pipeline file can contain these sections:
generators:: A list of generators to create maps from each raw observations in each key-frame. If none is provided, the default mp2p_icp::Generator is used, which generates a point cloud from the observation.filters:: A list of filters to apply to each key-frame observations, after generators have been applied. For example, here one typically removes the robot body, de-skew the scan, downsamples the point cloud, and merges the result into one or several final metric map layers used to accumulate the result.final_filters:: An optional list of filters to apply to the final map layers, after all key-frames have been processed.
Refer to example pipeline files sm2mm_*.yaml under the demos directory. Some of them are explained below with a diagram.
3. Example sm2mm pipelines
Pipeline: sm2mm_no_decim_imu_mls_keyframe_map.yaml
Purpose: Build a dense (no downsampling) point cloud, using IMU-based motion compensation, then filter the map using the MLS filter,
and store the resulting map into a mola::KeyframePointCloudMap layer named localmap, suitable for MOLA-LIO localization-only mode.
Pipeline YAML code
Pipeline: sm2mm_pointcloud_voxelize.yaml
Purpose: Process point clouds by applying voxelization to downsample the data while preserving spatial structure, creating a more memory-efficient representation.
Pipeline YAML code
Pipeline: sm2mm_voxels_static_dynamic_points.yaml
Purpose: Separate point clouds into static and dynamic layers using voxel-based analysis, enabling differentiation between stationary map features and moving objects for robust localization and mapping.






