MOLA packages

MOLA’s modular design means a SLAM or localization problem is split into the smallest possible reusable pieces, each shipped as one colcon package. The ones that implement a mola_kernel interface (data sources, front ends, state estimators, map servers, visualizers) are modules: they are named in a YAML configuration file and loaded at runtime, without recompiling anything. The rest are the supporting cast, linked as ordinary libraries or used as build-time dependencies: message definitions, CLI tools and metapackages.

This page is the inventory: what each package is for, and where its sources live. For the tasks these packages are combined to solve, see solutions; for the C++ classes inside them, see the API reference.

Note

Each package carries its own license (GPL-3.0 for core algorithms, BSD-3-Clause for utilities, bridges and demos). Check the <license> tag of its package.xml.

Core framework

Everything else builds on these. They live in the MOLAorg/mola repository.

Package

Purpose

mola_kernel

The fundamental C++ virtual interfaces and data types every other module derives from (RawDataSourceBase, FrontEndBase, NavStateFilter, MapServer, VizInterface, …).

mola_launcher

Loads modules from a YAML configuration and runs their life cycle. Provides mola-cli, the main entry point.

mola_yaml

YAML parsing with MOLA’s extensions: variable expansion, includes, imports and formulas.

mola_msgs

ROS 2 messages, services and actions used by the other packages.

Input: datasets and sensors

Except where noted, each of these implements RawDataSourceBase, so any of them can feed any front end. See sensors and datasets for how to choose one.

Package

Purpose

mola_input_rosbag2

ROS 2 bag files (.mcap, sqlite3), including /tf resolution.

mola_input_rosbag1

ROS 1 .bag files, with no ROS 1 installation required.

mola_input_rawlog

MRPT .rawlog datasets.

mola_input_lidar_bin_dataset

Directories of .bin LiDAR scans in the KITTI binary layout.

mola_input_video

Live or offline video sources, via OpenCV.

mola_input_ouster

Ouster LiDARs through the native Ouster SDK: direct sensor connection and PCAP replay, with no ROS middleware in between.

mola_academic_datasets

Metapackage, not a module itself; it bundles the readers for public benchmark datasets, each of which is one: mola_input_kitti_dataset, mola_input_kitti360_dataset, mola_input_mulran_dataset, mola_input_euroc_dataset, mola_input_paris_luco_dataset, plus kitti_metrics_eval.

mola_bridge_ros2

Bidirectional ROS 2 ↔ MOLA bridge: subscribes to live topics as a data source, and publishes MOLA’s outputs back as topics and /tf.

Odometry, SLAM and state estimation

Package

Purpose

mola_lidar_odometry

3D/2D LiDAR and LiDAR-inertial odometry, the main MOLA front end.

mola_mapper

Central 3D SLAM map: online fusion of LIO/VIO/IMU/GNSS/wheels with loop closure and geo-referencing.

mola_state_estimation

State estimators (Simple and Smoother), plus mola_georeferencing and mola_gtsam_factors.

mola_imu_preintegration

IMU preintegration and gravity estimation used by the LIO paths.

mola_sm_loop_closure

Offline loop-closure post-processing of a simple-map, as a library and a CLI tool.

mola_relocalization

Global localization and pose estimation under large initial uncertainty.

Maps, tools and visualization

Package

Purpose

mola_metric_maps

The map classes: KeyframePointCloudMap, IncrementalPointCloud, NDTMap, SparseVoxelPointCloud, super-resolution occupancy grids, and the .mm CLI tools around them.

mp2p_icp

ICP pipelines, point-cloud filters and map tools.

mola_pose_list

Spatially-searchable pose lists (keyframe density bookkeeping).

mola_traj_tools

CLI tools to manipulate trajectory files, complementing evo.

mola_gnss_to_markers

Publishes GNSS datums as RViz/FoxGlove ellipsoid markers on a geo-referenced map.

mola_viz / mola_viz_imgui

The two interchangeable GUI backends (nanogui and Dear ImGui). See choosing a visualizer.

mola_demos

Example mola-cli launch files and ROS 2 launch files.

Reference pages