Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
jazzy

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
kilted

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
rolling

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
iron

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

mola_lidar_odometry package from mola_lidar_odometry repo

mola_lidar_odometry

ROS Distro
humble

Package Summary

Version 2.2.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-05-16
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

LIDAR odometry system based on MOLA and MRPT components

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

CI Build colcon CI clang-format codecov

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: Peek 2025-08-31 11-36

Lidar Odometry (LO) demo with KITTI: mola-slam-kitti-demo

Documentation and tutorials

See: https://docs.mola-slam.org/

ROS build farm status

Distro Develop branch Releases Stable release
ROS2 Humble (u22.04) Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Jazzy @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Kilted @ u24.04 Build Status amd64 Build Status
arm64 Build Status
Version
ROS 2 Rolling (u24.04) Build Status amd64 Build Status
arm64 Build Status
Version
EOL Distro Last release
ROS2 Iron (u22.04) Version

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

Changelog for package mola_lidar_odometry

2.2.0 (2026-05-11)

  • fix: don't exit upon state estimator lack of convergence
  • Merge pull request #79 from MOLAorg/simplify-ci CI: simplify clang-format helpers and use ros: docker image for jazzy stable
  • CI: simplify clang-format helpers and use ros: docker image for jazzy stable
    • Replace the old formatter.sh with a new version supporting --check mode
    • Simplify check-clang-format.yml to just apt-install clang-format-14 and run the script
    • Use ros:jazzy pre-built image for jazzy stable CI build (faster, no setup-ros needed)
  • Update error threshold in lidar odometry test
  • fix: do not wipe out a loaded map if first scan is bad
  • fix: viz must clear current obs when unchecked live
  • fix: safer thread viz with just one thread
  • chore: set default for adaptive threshold 'alpha' low-pass filter 0.99 to 0.90 for adapting faster to changes
  • feat: show sensor pose corners in MolaViz
  • chore: fix comment formatting (seems to trigger a libfyaml/mola_yaml parser bug)
  • fix: initial pose from yaml files expected yaw/pitch/roll in degrees
  • Expose initial sigma as env var too
  • chore: expose viz module as env var (prepare for testing imgui)
  • CI: sensible job names
  • Merge pull request #78 from MOLAorg/bump-cmake-version bump min req cmake version to 3.22
  • bump min req cmake version to 3.22
  • FIX: regression in last adaptive sigma PR
  • chore: add minimal agents.md
  • Merge pull request #76 from Zeal-Robotics/feat/sustained-failure-recovery feat: optional adaptive-threshold recovery on sustained ICP failure
  • feat: optional adaptive-threshold recovery on sustained ICP failure The KISS-ICP adaptive threshold only updates sigma on a good ICP, which is correct for isolated bad scans but creates a deadlock under sustained failure: once sigma is frozen at a small value, the matcher window (2*sigma) is too tight to find correspondences, ICP stays bad, sigma stays frozen, and the system cannot recover without an external relocalize. Add three opt-in fields to AdaptiveThreshold: recover_on_sustained_failure (default false) recover_after_n_bad (default 5) recover_growth_factor (default 1.5) After N consecutive bad ICPs, sigma is grown multiplicatively (capped at maximum_sigma) so the next attempt has a wider correspondence search radius. The counter resets on any good ICP, at which point the standard KISS-ICP rule resumes and re-tightens sigma. With the flag off, behavior is identical to before. The four bundled pipeline YAMLs (lidar3d-gicp, -gicp-optimize-twist, -icp, -ndt) gain matching ${MOLA_ADAPT_THRESHOLD_RECOVER*|default} hooks so the feature can be toggled via env vars without forking the YAML.
  • Fix CI escaping
  • fix: CI code coverage flags
  • feat: Add new mola-lo-gui-ouster script
  • Update build-ros.yml to disable known regression in current stable Humble Comment out the configuration for non-testing ROS build.
  • Merge pull request #75 from Zeal-Robotics/fix/cli-warn-no-state-estimator-yaml fix(cli): warn when no --state-estimator-param-file is provided
  • fix(cli): warn when no --state-estimator-param-file is provided When [mola-lidar-odometry-cli]{.title-ref} is invoked without [--state-estimator-param-file]{.title-ref}, the state estimator is constructed but [initialize()]{.title-ref} is never called, so it silently runs with the built-in C++ defaults. These differ from the bundled [state-estimator-params/*.yaml]{.title-ref} shipped with this package and used by the corresponding [mola-cli-launchs/*.yaml]{.title-ref} files, which makes the CLI and the GUI launcher behave noticeably differently for the same estimator. Add an [else]{.title-ref} branch that prints a clear warning naming the active estimator class and pointing at the bundled YAMLs, so users know to pass [--state-estimator-param-file]{.title-ref} (or accept the C++ defaults deliberately). No behaviour change otherwise.
  • fix: GUI update staled in some conditions
  • fix: don't reduce adaptive threshold on bad ICPs
  • fix: UI text labels never updated if ICP was bad
  • fix: clearing gravity vector
  • IMU buffer for gravity alignment: increase max circular buffer size
  • Merge pull request #62 from MOLAorg/wip/draw-gravity-align-as-arrow Draw arrow from IMU gravity alignment
  • CI: Fix for new ROS rolling
  • feat: Optional visualization of IMU gravity alignment vector
  • tests: show error levels even if test pass
  • gicp: lower covariance floors
  • fix: decaying clouds were not cleared if unchecked UI box
  • icp pipeline yaml: add new covariance selection method params
  • feat: ros2 launch file new "use-sim-time:=true" argument
  • feat: Localmap is now also rendered using 'intensity' or whatever color channel
  • docs: clear README

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mola_lidar_odometry at Robotics Stack Exchange