:robot: MOLA :compass:
Modular Optimization framework for Localization and mApping
A modern, modular C++ and ROS 2 framework for Localization and SLAM.
Configurable pipelines for LiDAR Odometry, LIO, and more.
Why MOLA |
Solutions |
Plans & Pricing |
Documentation
---
| Distro | Build dev | Release |
| --- | --- | --- |
| ROS 2 Humble (u22.04) | [](https://build.ros2.org/job/Hdev__mola__ubuntu_jammy_amd64/) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
| ROS 2 Jazzy (u24.04) | [](https://build.ros2.org/job/Jdev__mola__ubuntu_noble_amd64/) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
| ROS 2 Kilted (u24.04) | [](https://build.ros2.org/job/Kdev__mola__ubuntu_noble_amd64/) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
| ROS 2 Lyrical (u26.04) | [](https://build.ros2.org/job/Ldev__mola__ubuntu_resolute_amd64/) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
| ROS 2 Rolling (u26.04) | [](https://build.ros2.org/job/Rdev__mola__ubuntu_resolute_amd64/) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
| EOL Distro | Last Release |
| --- | ---
| ROS 2 Iron (u22.04) | [](https://index.ros.org/?search_packages=true&pkgs=mola) |
## π€ 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](https://github.com/MOLAorg/) organization.
Refer to the [official documentation](https://docs.mola-slam.org/latest/) for build instructions, demos, API reference, etc.
## πΊοΈ Features
- π LiDAR Odometry (LO), LiDAR-Inertial Odometry (LIO), geo-referenced maps, sensor fusion
- π§© Fully configurable YAML pipelines - no recompilation needed to change sensors, filters, or map layers
- π― Flexible accuracy: fast real-time navigation or survey-grade (<1 cm) mapping
- π Map-less RTK-quality outdoor georeferencing with low-cost GNSS + LiDAR + IMU
- π οΈ Rich `.mm` metric map ecosystem: viewer, LAS/PLY/TXT export, filtering, georeferencing tools
- π€ ROS 2 ready (Humble, Jazzy, Kilted, Rolling) but also usable from standalone pure C++
## π Demo videos
Lidar-Inertial-Odometry (LIO) demo with Oxford Spires:

Lidar-Odometry (LO) demo with GrandTour legged dataset:
Lidar-Odometry (LO) demo with KITTI:

## ROSCon Talk introducing MOLA
Video ([Slides](https://docs.google.com/presentation/d/1Zg1saZCxlE49jZ4SxPBLaRh7WUYGmfC0fiKUunJg-dA/edit?usp=drivesdk)):
[](https://www.youtube.com/watch?v=FkDnbfVyN2M)
## Individual package build status
Binary package build status per package and ROS 2 distro:
| Package | ROS 2 Humble
(u22.04) | ROS 2 Jazzy
(u24.04) | ROS 2 Kilted
(u24.04) | ROS 2 Lyrical
(u26.04) | ROS 2 Rolling
(u26.04) |
| --- | --- | --- | --- | --- | --- |
| mola | [](https://build.ros2.org/job/Hbin_uJ64__mola__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola__fedora_44_x86_64__binary/) |
| mola_bridge_ros2 | [](https://build.ros2.org/job/Hbin_uJ64__mola_bridge_ros2__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_bridge_ros2__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_bridge_ros2__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_bridge_ros2__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_bridge_ros2__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_bridge_ros2__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_bridge_ros2__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_bridge_ros2__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_bridge_ros2__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_bridge_ros2__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_bridge_ros2__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_bridge_ros2__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_bridge_ros2__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_bridge_ros2__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_bridge_ros2__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_bridge_ros2__fedora_44_x86_64__binary/) |
| mola_demos | [](https://build.ros2.org/job/Hbin_uJ64__mola_demos__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_demos__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_demos__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_demos__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_demos__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_demos__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_demos__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_demos__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_demos__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_demos__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_demos__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_demos__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_demos__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_demos__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_demos__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_demos__fedora_44_x86_64__binary/) |
| mola_input_lidar_bin_dataset | [](https://build.ros2.org/job/Hbin_uJ64__mola_input_lidar_bin_dataset__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_input_lidar_bin_dataset__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_input_lidar_bin_dataset__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_input_lidar_bin_dataset__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_input_lidar_bin_dataset__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_input_lidar_bin_dataset__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_input_lidar_bin_dataset__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_input_lidar_bin_dataset__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_input_lidar_bin_dataset__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_input_lidar_bin_dataset__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_input_lidar_bin_dataset__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_input_lidar_bin_dataset__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_input_lidar_bin_dataset__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_input_lidar_bin_dataset__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_input_lidar_bin_dataset__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_input_lidar_bin_dataset__fedora_44_x86_64__binary/) |
| mola_input_rawlog | [](https://build.ros2.org/job/Hbin_uJ64__mola_input_rawlog__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_input_rawlog__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_input_rawlog__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_input_rawlog__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_input_rawlog__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_input_rawlog__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_input_rawlog__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_input_rawlog__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_input_rawlog__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_input_rawlog__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_input_rawlog__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_input_rawlog__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_input_rawlog__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_input_rawlog__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_input_rawlog__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_input_rawlog__fedora_44_x86_64__binary/) |
| mola_input_rosbag2 | [](https://build.ros2.org/job/Hbin_uJ64__mola_input_rosbag2__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_input_rosbag2__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_input_rosbag2__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_input_rosbag2__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_input_rosbag2__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_input_rosbag2__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_input_rosbag2__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_input_rosbag2__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_input_rosbag2__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_input_rosbag2__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_input_rosbag2__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_input_rosbag2__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_input_rosbag2__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_input_rosbag2__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_input_rosbag2__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_input_rosbag2__fedora_44_x86_64__binary/) |
| mola_input_video | [](https://build.ros2.org/job/Hbin_uJ64__mola_input_video__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_input_video__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_input_video__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_input_video__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_input_video__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_input_video__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_input_video__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_input_video__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_input_video__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_input_video__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_input_video__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_input_video__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_input_video__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_input_video__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_input_video__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_input_video__fedora_44_x86_64__binary/) |
| mola_kernel | [](https://build.ros2.org/job/Hbin_uJ64__mola_kernel__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_kernel__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_kernel__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_kernel__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_kernel__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_kernel__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_kernel__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_kernel__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_kernel__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_kernel__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_kernel__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_kernel__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_kernel__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_kernel__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_kernel__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_kernel__fedora_44_x86_64__binary/) |
| mola_launcher | [](https://build.ros2.org/job/Hbin_uJ64__mola_launcher__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_launcher__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_launcher__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_launcher__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_launcher__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_launcher__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_launcher__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_launcher__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_launcher__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_launcher__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_launcher__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_launcher__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_launcher__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_launcher__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_launcher__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_launcher__fedora_44_x86_64__binary/) |
| mola_metric_maps | [](https://build.ros2.org/job/Hbin_uJ64__mola_metric_maps__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_metric_maps__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_metric_maps__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_metric_maps__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_metric_maps__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_metric_maps__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_metric_maps__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_metric_maps__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_metric_maps__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_metric_maps__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_metric_maps__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_metric_maps__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_metric_maps__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_metric_maps__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_metric_maps__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_metric_maps__fedora_44_x86_64__binary/) |
| mola_msgs | [](https://build.ros2.org/job/Hbin_uJ64__mola_msgs__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_msgs__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_msgs__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_msgs__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_msgs__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_msgs__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_msgs__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_msgs__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_msgs__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_msgs__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_msgs__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_msgs__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_msgs__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_msgs__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_msgs__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_msgs__fedora_44_x86_64__binary/) |
| mola_pose_list | [](https://build.ros2.org/job/Hbin_uJ64__mola_pose_list__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_pose_list__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_pose_list__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_pose_list__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_pose_list__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_pose_list__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_pose_list__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_pose_list__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_pose_list__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_pose_list__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_pose_list__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_pose_list__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_pose_list__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_pose_list__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_pose_list__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_pose_list__fedora_44_x86_64__binary/) |
| mola_relocalization | [](https://build.ros2.org/job/Hbin_uJ64__mola_relocalization__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_relocalization__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_relocalization__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_relocalization__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_relocalization__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_relocalization__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_relocalization__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_relocalization__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_relocalization__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_relocalization__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_relocalization__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_relocalization__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_relocalization__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_relocalization__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_relocalization__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_relocalization__fedora_44_x86_64__binary/) |
| mola_traj_tools | [](https://build.ros2.org/job/Hbin_uJ64__mola_traj_tools__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_traj_tools__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_traj_tools__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_traj_tools__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_traj_tools__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_traj_tools__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_traj_tools__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_traj_tools__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_traj_tools__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_traj_tools__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_traj_tools__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_traj_tools__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_traj_tools__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_traj_tools__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_traj_tools__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_traj_tools__fedora_44_x86_64__binary/) |
| mola_viz | [](https://build.ros2.org/job/Hbin_uJ64__mola_viz__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_viz__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_viz__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_viz__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_viz__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_viz__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_viz__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_viz__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_viz__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_viz__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_viz__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_viz__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_viz__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_viz__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_viz__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_viz__fedora_44_x86_64__binary/) |
| mola_yaml | [](https://build.ros2.org/job/Hbin_uJ64__mola_yaml__ubuntu_jammy_amd64__binary/)
[](https://build.ros2.org/job/Hbin_ujv8_uJv8__mola_yaml__ubuntu_jammy_arm64__binary/) | [](https://build.ros2.org/job/Jbin_uN64__mola_yaml__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Jbin_unv8_uNv8__mola_yaml__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Jbin_rhel_el964__mola_yaml__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Kbin_uN64__mola_yaml__ubuntu_noble_amd64__binary/)
[](https://build.ros2.org/job/Kbin_unv8_uNv8__mola_yaml__ubuntu_noble_arm64__binary/)
[](https://build.ros2.org/job/Kbin_rhel_el964__mola_yaml__rhel_9_x86_64__binary/) | [](https://build.ros2.org/job/Lbin_uR64__mola_yaml__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Lbin_armv8_uRv8__mola_yaml__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Lbin_rhel_el1064__mola_yaml__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Lbin_fedora_fc4364__mola_yaml__fedora_43_x86_64__binary/) | [](https://build.ros2.org/job/Rbin_uR64__mola_yaml__ubuntu_resolute_amd64__binary/)
[](https://build.ros2.org/job/Rbin_unv8_uRv8__mola_yaml__ubuntu_resolute_arm64__binary/)
[](https://build.ros2.org/job/Rbin_rhel_el1064__mola_yaml__rhel_10_x86_64__binary/)
[](https://build.ros2.org/job/Rbin_fedora_fc4464__mola_yaml__fedora_44_x86_64__binary/) |
Each cell stacks the badges for that ROS 2 distro, in this order (when available):
- Ubuntu (`amd64`)
- Ubuntu (`arm64`)
- RHEL (`x86_64`) -- not available for Humble, since `mrpt3` cannot be built there.
- Fedora (`x86_64`) -- only available since ROS 2 Lyrical.
## Citations
The latest publications on MOLA are ([ArXiV](https://arxiv.org/abs/2407.20465)).
```bibtex
@article{blanco2025mola_lo,
author = {Jose Luis Blanco-Claraco},
title = {{A flexible framework for accurate LiDAR odometry, map manipulation, and localization}},
journal = {The International Journal of Robotics Research},
volume = {44},
number = {9},
pages = {1553--1599},
year = {2025},
doi = {10.1177/02783649251316881},
URL = { https://doi.org/10.1177/02783649251316881},
eprint = {https://doi.org/10.1177/02783649251316881},
}
```
MOLA was initially presented in 2019 in ([PDF](http://www.roboticsproceedings.org/rss15/p43.pdf)):
```bibtex
@INPROCEEDINGS{Blanco-Claraco-RSS-19,
AUTHOR = {Jose Luis Blanco-Claraco},
TITLE = {{A Modular Optimization Framework for Localization and Mapping}},
BOOKTITLE = {Proceedings of Robotics: Science and Systems},
YEAR = {2019},
ADDRESS = {FreiburgimBreisgau, Germany},
MONTH = {June},
DOI = {10.15607/RSS.2019.XV.043}
}
```
## License
MOLA follows an **Open Core** model. Core modules are released under the GNU GPL v3 license, while foundational libraries (MRPT, mp2p_icp) are BSD-3.
**Commercial use:** Companies needing to deploy MOLA in closed-source products can obtain a commercial license ([MOLA Pro](https://docs.mola-slam.org/latest/pricing.html)).
See the [Plans & Pricing](https://docs.mola-slam.org/latest/pricing.html) page for details on Community vs Pro editions.
Contributions require acceptance of the Contributor License Agreement (CLA).
## Star History