|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange
|
mola_lidar_odometry package from mola_lidar_odometry repomola_lidar_odometry |
ROS Distro
|
Package Summary
| Version | 3.1.0 |
| License | GPLv3 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola_lidar_odometry.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-08-16 |
| 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
mola_lidar_odometry
LIDAR odometry component based on the MOLA and MRPT frameworks, compatible with ROS 2.
Contents
This repository provides a C++ library mola_lidar_odometry implementing LIDAR
odometry. Sensor input is provided via MOLA components, and ROS 2 example launch files are
provided in ros2-launchs.
A CLI interface mola-lidar-odometry-cli is also provided for running on
offline datasets.
Build and install
Refer to: https://docs.mola-slam.org/latest/#installing
Lidar Inertial Odometry (LIO) demo with Oxford Spires:
Lidar Odometry (LO) demo with KITTI:
Documentation and tutorials
See: https://docs.mola-slam.org/
ROS build farm status
| EOL Distro | Last release |
|---|---|
| ROS2 Iron (u22.04) |
Citation
The latest publication on MOLA is (ArXiV).
@article{blanco2025mola_lo,
author = {Blanco-Claraco, Jose Luis},
title ={{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {2407.20465},
}
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_lidar_odometry
3.1.0 (2026-08-06)
-
fix: keep the local-map render and the IMU worker off the LiDAR critical path (#126)
Moves the local-map render off the LiDAR thread onto its own worker, and introduces a dedicated
imu_state_mtx_so the IMU handler no longer serializes behind every LiDAR scan viastate_mtx_. The render worker now deep-copies the map layers under the map mutex and does the expensive recolorize/OpenGL build on that private copy, unlocked. On Oxford Spires/GrandTour benchmarks this cutonLidarmax latency roughly in half (up to ~216 ms -> ~107 ms) and the IMU thread's total blocked time by more than half, eliminating the scan-queue backlog. Also exposesmap_update_decimationasMOLA_GUI_MAP_UPDATE_DECIMATION. -
Visualize the robot /tf tree in the LO viewer (opt-in) (#125)
Draws the subtree of coordinate frames below a configurable root frame as the robot moves (e.g. a legged robot's joint tree), via the new
mola::TransformTreeSource. Supports excluding frames/subtrees (tf_tree_exclude_frames), is toggled live from the GUI's View tab, and is enabled by default for the GrandTour dataset with its non-body frames excluded. -
Add mola-lo-gui-grandtour launch script for the GrandTour dataset (#124)
GrandTour publishes one ROS1 bag per topic, so
lidar_odometry_from_rosbag1.yamlnow accepts up to three bags replayed jointly. The wrapper locates sibling bags from a mission directory and uses the dataset's own/tf_staticfor sensor extrinsics. -
Gate
gui_preview_sensorsentries behindMOLA_WITH_GUIconsistently across all launch YAMLs, removing noisy "no running MolaViz module" warnings in headless CI runs. Also adds theMOLA_WITH_GUIheadless toggle to the remainingmola-clilaunch files. -
Launch scripts for the citrus farm dataset; conslam dataset now also accepts ROS2 bags.
-
CLI: reduce/disable the batch progress bar; port CLI argument parsing from mrpt-tclap to CLI11 (#123)
Adds
--progress-bar-periodto control per-scan progress logging (useful for Jenkins batch runs), and replaces the legacy TCLAP parser with CLI11, preserving all existing flags/defaults while fixing several--help/docs discrepancies along the way. -
CI: don't let
rosdepfailures on unresolvable packages abort the job before the build/test steps run;mola-lidar-odometry-cligains--input-rosbag1support (#122) and now accepts a comma-separated bag list for multi-part recordings. -
Add
lidar3d-gicp-single-filter.yaml: one decimation filter feeding both map and ICP layers instead of two chained ones (#121), plus a DLIO-like pipeline, VoxelAverage/forward-alone decimation-axis variants, and map-policy leave-one-out/decimation-method ablation pipelines from the 809 investigation. -
Add
log_onlymode for the map-gravity estimator (validate against ground truth without feeding back into the map frame) and retry the one-shot accelerometer verticality capture on later scans instead of giving up permanently. -
fix: deadlock rendering the local map without owning
state_mtx_, and a related potential deadlock for large maps under the incremental map class (#120). Declaremola_yamlas an explicit dependency (#109). -
Estimate the map-frame gravity direction online, default off (#116)
The verticality reference used by the ICP gravity prior was captured once from a single 50 ms accelerometer average and never updated, biasing the map frame by up to several degrees. Wires in
mola::imu::MapGravityEstimator, which continuously solves for gravity in the map frame from preintegrated IMU and the odometry's own relative attitudes/velocities, and uses it as the prior'sup_mapreference. The one-shot rigid re-levelling half of this feature was found unsafe on some sequences and deferred to a separate experimental branch. -
Add option to hide the current-pose XYZ corner OpenGL object (#117); expose the max-range filter as
MOLA_MAXIMUM_RANGE_FILTERand add a hybrid cov-to-cov/point-to-point reference pipeline.
File truncated at 100 lines see the full file