|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_sm_loop_closure at Robotics Stack Exchange
|
mola_sm_loop_closure package from mola_sm_loop_closure repomola_sm_loop_closure |
ROS Distro
|
Package Summary
| Version | 1.0.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/MOLAorg/mola_sm_loop_closure.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-04-25 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
- Jose-Luis Blanco-Claraco
| Distro | Build dev | Build releases | Stable version |
|---|---|---|---|
| ROS 2 Humble (u22.04) | amd64 arm64 |
||
| ROS 2 Jazzy @ u24.04 | amd64 arm64 |
||
| ROS 2 Kilted @ u24.04 | amd64 arm64 |
||
| ROS 2 Rolling (u24.04) | amd64 arm64 |
mola_sm_loop_closure
Offline loop-closure engine for MOLA CSimpleMap files. Given an input
simplemap produced by any MOLA odometry front-end, the package re-optimises
all keyframe poses by detecting and closing loops, then writes the corrected
simplemap back to disk.
Two algorithms
| Algorithm | Class | Best for |
|---|---|---|
| SimplemapLoopClosure | mola::SimplemapLoopClosure |
Long maps with noticeable drift; groups keyframes into submaps and runs heavy point-cloud ICP between submap pairs |
| FrameToFrameLoopClosure | mola::FrameToFrameLoopClosure |
GNSS-augmented datasets or quick re-optimisation; runs frame-to-frame ICP with a GNC graph optimizer |
CLI usage
# SimplemapLoopClosure (default algorithm):
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-p pipelines/loop-closure-lidar3d-gicp.yaml
# FrameToFrameLoopClosure:
mola-sm-lc-cli -i in.simplemap -o out.simplemap \
-a mola::FrameToFrameLoopClosure \
-p pipelines/loop-closure-f2f-lidar3d-gicp.yaml
Available pipelines
| YAML file | Sensor type | Algorithm |
|---|---|---|
loop-closure-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | SimplemapLoopClosure |
loop-closure-lidar3d-icp.yaml |
3-D LiDAR (point-to-point ICP) | SimplemapLoopClosure |
loop-closure-lidar2d.yaml |
2-D LiDAR | SimplemapLoopClosure |
loop-closure-f2f-lidar3d-gicp.yaml |
3-D LiDAR (GICP) | FrameToFrameLoopClosure |
Key YAML knobs
SimplemapLoopClosure
-
submap_max_absolute_length/submap_min_absolute_length— controls submap granularity. -
assume_planar_world: trueenables annealed soft planar constraints (z, roll, pitch).-
planar_world_initial_sigma_z,planar_world_initial_sigma_ang,planar_world_annealing_rounds— tune the annealing schedule. -
planar_world_hard_flatten: truerestores the old hard-flattening behaviour.
-
-
use_gnss: true/gnss_add_horizontality: true— GNSS-assisted global alignment.
FrameToFrameLoopClosure
-
lc_candidate_strategy—DISTANCE_STRATIFIED(default),PROXIMITY_ONLY, orMULTI_OBJECTIVE. -
assume_planar_world: true— planar-world annealing. -
use_gnss: true— per-keyframe GNSS factors (FactorGnssEnu).
See the online tutorial for a step-by-step example.
License
Copyright (C) 2018-2026 Jose Luis Blanco jlblanco@ual.es, University of Almeria
This package is released under the GNU GPL v3 license as open source, with the main intention of being useful for research and evaluation purposes. Commercial licenses available upon request.
Contributions require acceptance of the Contributor License Agreement (CLA).
Changelog for package mola_sm_loop_closure
1.0.0 (2026-04-14)
- package.xml: add missing test-dep
- add unit tests
- cli: use output directory as default for debug output files, not input
- Install pipelines so they are accessible under 'share'
- Make the package discoverage by ament
- Merge pull request #6 from MOLAorg/save-ram F2F algorithm: save ram in offline runs
- More memory efficient loop
- Bump minimum cmake version to 3.7
- Reuse mp2p_icp::update_velocity_buffer_from_obs() from mp2p_icp Removes duplicated code in this repo now that mp2p_icp>=2.5.0 is available in all distributions
- Fix build against mp2p_icp <2.6.0
- icp debug log files: save only good edges
- F2F algorithm: save ram in offline runs
- sm2mm pipeline yaml: expose more params via env vars
- Expose more parameters for F2F algorithm
- Debug feature: enable saving 3Dscene files per optimization round
- Use Graduated Non-Convexity (GNC) optimizer for superior outlier rejection
- FIX: Reverted logic in formula for adaptive threshold
- Add formal CLA
- Merge pull request #5 from MOLAorg/feat/smart-ram-lazy-unload Lazy unload keyframe clouds to keep RAM usage bounded
- Contributors: Jose Luis Blanco-Claraco
0.2.0 (2026-03-03)
- Fix build against different gtsam versions
- Add optional generation of .3Dscene files with loop-closure visualizations
- Tolerate missing external files without throwing
- Better logging and expose more env var params
- Add GNSS uncertainty multiplier
- Use debug files prefix
- Add more frame-to-frame LC selection algorithms
- Merge pull request #4 from MOLAorg/feat/f2f-fixes Add more parameters to f2f method
- Add new params for f2f method
- pipeline file: expose more params and fix reversed sigma logic
- Fix: prior should be weak for GNSS to transform to ENU frame
- fix copyright headers
- Merge pull request #3 from MOLAorg/feat/new-f2f-algo Add alternative frame-to-frame LC algorithm
- Provide virtual LoopClosureInterface to select the algorithm from a CLI argument
- Add alternative frame-to-frame LC algorithm
- Merge pull request #2 from MOLAorg/feat/add-ci-and-badges Add CI workflows and clang-format linting infrastructure
- package.xml: add FILE tag
- Merge pull request #1 from MOLAorg/feature/refactor-pkg-mola-gtsam-factors Progress moving code to new package mola_gtsam_factors
- Update dependencies after refactorization into mola_georeferencing
- Progress moving code to new package mola_gtsam_factors
- Protect against invalid GPS cov entries
- Add param gnss_minimum_uncertainty_xyz; dump trajectories as TUM files.
- simplify: remove obsolete parameters not used anymore here
- Remove unused parameter (GPS observations are automatically detected anyway)
- Fix: ensure minimum uncertainty in edges
- Fix deskewing generating sm2mm for local maps
- Implement missing loading of new LocalVelocityBuffer while doing submaps "sm2mm"
- Don't use absolute paths for debug icplog files
- FIX: Detect the error case of no GNSS observations in sm-georeference-cli
- Add gicp pipeline
- bump minimum cmake version to 3.5
- add .clang-tidy rules and better vscode integration
- Expose more env vars in the pipeline
- robust kernels; optional horizontality
- progress with submaps
- implement submaps
- use new mrpt enu covariance field
- done georeferencing cli
- progress
- progress cli app interface
- initial structure
- Initial commit
- Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco