Production-grade LiDAR SLAM for robotics and surveying

Open Core - free for research, commercially licensable for products

MOLA is a Modular system for Localization and Mapping, providing LiDAR Odometry (LO), LiDAR-inertial Odometry (LIO), SLAM, localization-only modes, and geo-referencing.

MOLA LIO Oxford Spires stairs demo


Installing

How to install all MOLA modules:

From ROS 2 repositories

Recommended: This is the easiest way to install MOLA.

In Debian/Ubuntu systems, activate your ROS environment (setup.bash) if not done automatically in your ~./bashrc file, then just run:

# Install core MOLA modules and 3D LiDAR odometry:
sudo apt install \
 ros-$ROS_DISTRO-mola \
 ros-$ROS_DISTRO-mola-state-estimation \
 ros-$ROS_DISTRO-mola-lidar-odometry
# (OPTIONAL) Install example small datasets to run demos/unit tests:
sudo apt install ros-$ROS_DISTRO-mola-test-datasets

Check if all new nodes and apps are visible:

# For example, let's launch the mm map viewer.
# If a GUI app is opened, it means installation was successful.
mm-viewer
# You can also test the mola LO cli interface:
mola-lidar-odometry-cli --help

These are the versions available from ROS build farms for each main MOLA component:

Repository

ROS 2 Humble

(u22.04)

ROS 2 Jazzy

(u24.04)

ROS 2 Rolling

(u24.04)

MOLA

badgeHrel

badgeJrel

badgeRrel

mola_lidar_odometry

badgeHrel_LO

badgeJrel_LO

badgeRrel_LO

mola_state_estimation

badgeHrel_SE

badgeJrel_SE

badgeRrel_SE

mp2p_icp

badgeHrel_MP

badgeJrel_MP

badgeRrel_MP

EOL ROS distribution:

  • ROS 2 Iron (u22.04): MOLA badgeIrel, mola_lidar_odometry badgeIrel_LO, mp2p_icp badgeIrel_MP

Build from sources

MOLA uses colcon so you need to install it first.

Note that despite ROS 2 integration, a full ROS 2 installation is actually not required for MOLA, only colcon and ament.

Clone the git repositories, including the submodules:

mkdir -p ~/ros2_mola_ws/src/
cd ~/ros2_mola_ws/src/

# Main MOLA modules:
git clone https://github.com/MOLAorg/mola_common.git
git clone https://github.com/MOLAorg/mp2p_icp.git --recursive
git clone https://github.com/MOLAorg/mola.git --recursive
git clone https://github.com/MOLAorg/mola_state_estimation.git
git clone https://github.com/MOLAorg/mola_test_datasets.git
git clone https://github.com/MOLAorg/mola_imu_preintegration.git
git clone https://github.com/MOLAorg/mola_sm_loop_closure.git

# MOLA lidar odometry package:
git clone https://github.com/MOLAorg/mola_lidar_odometry.git --recursive

Make sure you have all dependencies installed (make sure of having rosdep already installed):

cd ~/ros2_mola_ws/
rosdep install --from-paths src --ignore-src -r -y

Now, compile as usual with colcon:

cd ~/ros2_mola_ws/
colcon  build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo

Next, activate the new environment and check if all new modules are visible:

cd ~/ros2_mola_ws/
. install/setup.bash

# For example, let's launch the mm map viewer:
mm-viewer

How to cite MOLA

The mola_lidar_odometry system was presented in [BC25] (ArXiV):

Blanco-Claraco JL. A flexible framework for accurate LiDAR odometry, map manipulation, and localization. The International Journal of Robotics Research. 2025;0(0). doi:10.1177/02783649251316881

The basics of the MOLA framework were introduced in [BC19a].

J.L. Blanco, A Modular Optimization Framework for Localization and Mapping, in Robotics: Science and Systems (RSS), 2019.