Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)
No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/MOLAorg/mola.git
VCS Type git
VCS Version develop
Last Updated 2026-03-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

README

:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping

Docs CI ROS CI Check clang-format License

A modern, modular C++ and ROS 2 framework for Localization and SLAM. Configurable pipelines for LiDAR Odometry, LIO, and more.


Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Rolling (u24.04) Build Status Version
EOL Distro Last Release
ROS 2 Iron (u22.04) Version

πŸ€– What is MOLA?

MOLA (Modular Optimization framework for Localization and mApping) is a modular, extensible, and high-performance framework for robotics localization and πŸ—ΊοΈ mapping.

This repository contains the base open-sourced packages for the MOLA project. Other packages exist under the MOLAorg organization.

Refer to the official documentation for build instructions, demos, API reference, etc.

πŸ—ΊοΈ Features

  • πŸ“ LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
  • 🧩 Plug-and-play modules to build configurable ICP and SLAM pipelines
  • πŸ€– ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++

πŸš€ Demo videos

Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Peek 2025-10-10 10-29

Lidar-Odometry (LO) demo with KITTI:

kitti_demo_06

ROSCon Talk introducing MOLA

Video (Slides):

MOLA ROSCon talk

Individual package build status

Note: Rows within each cell are for amd64 and arm64 architectures.

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Rolling
BinBuild
kitti_metrics_eval Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_bridge_ros2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_demos Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_euroc_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti360_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_kitti_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_lidar_bin_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_mulran_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_paris_luco_dataset Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rawlog Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_rosbag2 Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_input_video Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_kernel Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_launcher Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_metric_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_msgs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_pose_list Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_relocalization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_traj_tools Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mola_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

File truncated at 100 lines see the full file

CONTRIBUTING

Contributing to MOLA

Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution.

MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below.


Table of Contents

  1. Contributor License Agreement
  2. Code of Conduct
  3. Types of Contributions
  4. Getting Started
  5. Development Workflow
  6. Commit and Pull Request Guidelines
  7. Coding Standards
  8. Testing Requirements
  9. Documentation
  10. Review Process
  11. Reporting Issues

1. Contributor License Agreement

All contributions to MOLA require acceptance of the Contributor License Agreement (CLA) prior to being merged.

MOLA is distributed under a dual licensing model:

  • Open source: GNU General Public License v3 (GPL v3)
  • Commercial: A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3

The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work.

When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered.


2. Code of Conduct

All contributors are expected to adhere to the project’s Code of Conduct. We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project.


3. Types of Contributions

We welcome the following types of contributions:

  • Bug fixes β€” corrections to incorrect or unexpected behavior
  • Performance improvements β€” optimizations with measurable, documented impact
  • New modules or algorithms β€” extensions to MOLA’s modular architecture
  • Documentation improvements β€” corrections, clarifications, and additions to existing documentation
  • Dataset integrations β€” support for additional SLAM benchmark or real-world datasets
  • ROS 2 integrations β€” improvements to the ROS 2 interface, launch files, or message definitions
  • Tests β€” new or improved unit, integration, or regression tests

If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap.


4. Getting Started

Full setup instructions, dependencies, and build guides are available in the official documentation:

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

Ensure your development environment is fully configured and that all existing tests pass before making any changes.


5. Development Workflow

  1. Fork the repository and create a new branch from main (or the relevant base branch).
  2. Name your branch descriptively, e.g. fix/imu-integration-drift or feat/lidar-odometry-module.
  3. Make your changes in focused, logically grouped commits.
  4. Ensure all tests pass locally before opening a Pull Request.
  5. Open a Pull Request against the main branch with a clear description of your changes.

Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern.


6. Commit and Pull Request Guidelines

Commits

  • Write commit messages in the imperative mood: Fix timestamp alignment in IMU handler, not Fixed or Fixes.
  • Keep the subject line under 72 characters.
  • Reference relevant issues in the commit body where applicable, e.g. Closes #123.

Pull Requests

  • Provide a clear summary of the problem being solved and the approach taken.
  • Include references to any related issues, discussions, or prior art.
  • If the PR introduces a user-visible change, update the relevant documentation and changelog.
  • Mark the PR as a draft if it is not yet ready for review.

File truncated at 100 lines see the full file

# Contributing to MOLA Thank you for your interest in contributing to MOLA. This document outlines the process and expectations for contributing to this project. Please read it carefully before submitting any contribution. MOLA is a modular SLAM and localization framework written in C++ with ROS 2 support. We welcome contributions from the community, provided they meet the quality and legal requirements described below. --- ## Table of Contents 1. [Contributor License Agreement](#1-contributor-license-agreement) 2. [Code of Conduct](#2-code-of-conduct) 3. [Types of Contributions](#3-types-of-contributions) 4. [Getting Started](#4-getting-started) 5. [Development Workflow](#5-development-workflow) 6. [Commit and Pull Request Guidelines](#6-commit-and-pull-request-guidelines) 7. [Coding Standards](#7-coding-standards) 8. [Testing Requirements](#8-testing-requirements) 9. [Documentation](#9-documentation) 10. [Review Process](#10-review-process) 11. [Reporting Issues](#11-reporting-issues) --- ## 1. Contributor License Agreement All contributions to MOLA require acceptance of the [Contributor License Agreement (CLA)](./individual-cla.md) prior to being merged. MOLA is distributed under a dual licensing model: - **Open source:** GNU General Public License v3 (GPL v3) - **Commercial:** A separate commercial license is available for industry users who cannot comply with the terms of the GPL v3 The CLA ensures that the project maintainers hold the necessary rights to distribute your contribution under both licensing models. It does not transfer copyright ownership β€” you retain full ownership of your work. When you open a Pull Request, an automated CLA assistant will verify whether you have previously accepted the agreement. If you have not, you will be prompted to do so before the PR can be reviewed or merged. Contributions submitted without CLA acceptance will not be considered. --- ## 2. Code of Conduct All contributors are expected to adhere to the project's [Code of Conduct](./CODE_OF_CONDUCT.md). We are committed to maintaining a welcoming and professional environment for everyone, regardless of background or experience level. Violations may result in removal from the project. --- ## 3. Types of Contributions We welcome the following types of contributions: - **Bug fixes** β€” corrections to incorrect or unexpected behavior - **Performance improvements** β€” optimizations with measurable, documented impact - **New modules or algorithms** β€” extensions to MOLA's modular architecture - **Documentation improvements** β€” corrections, clarifications, and additions to existing documentation - **Dataset integrations** β€” support for additional SLAM benchmark or real-world datasets - **ROS 2 integrations** β€” improvements to the ROS 2 interface, launch files, or message definitions - **Tests** β€” new or improved unit, integration, or regression tests If you are considering a large or architectural contribution, please open an issue for discussion before beginning work. This avoids duplication of effort and ensures alignment with the project roadmap. --- ## 4. Getting Started Full setup instructions, dependencies, and build guides are available in the official documentation: **https://docs.mola-slam.org/** Ensure your development environment is fully configured and that all existing tests pass before making any changes. --- ## 5. Development Workflow 1. **Fork** the repository and create a new branch from `main` (or the relevant base branch). 2. Name your branch descriptively, e.g. `fix/imu-integration-drift` or `feat/lidar-odometry-module`. 3. Make your changes in focused, logically grouped commits. 4. Ensure all tests pass locally before opening a Pull Request. 5. Open a Pull Request against the `main` branch with a clear description of your changes. Do not submit Pull Requests that bundle unrelated changes. Each PR should address a single concern. --- ## 6. Commit and Pull Request Guidelines **Commits** - Write commit messages in the imperative mood: `Fix timestamp alignment in IMU handler`, not `Fixed` or `Fixes`. - Keep the subject line under 72 characters. - Reference relevant issues in the commit body where applicable, e.g. `Closes #123`. **Pull Requests** - Provide a clear summary of the problem being solved and the approach taken. - Include references to any related issues, discussions, or prior art. - If the PR introduces a user-visible change, update the relevant documentation and changelog. - Mark the PR as a draft if it is not yet ready for review. --- File truncated at 100 lines [see the full file](https://github.com/MOLAorg/mola/tree/develop/CONTRIBUTING.md)