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 |
|---|---|
The fundamental C++ virtual interfaces and data types every other
module derives from ( |
|
Loads modules from a YAML configuration and runs their life cycle. Provides mola-cli, the main entry point. |
|
YAML parsing with MOLA’s extensions: variable expansion, includes, imports and formulas. |
|
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 |
|---|---|
ROS 2 bag files ( |
|
ROS 1 |
|
MRPT |
|
Directories of |
|
Live or offline video sources, via OpenCV. |
|
Ouster LiDARs through the native Ouster SDK: direct sensor connection and PCAP replay, with no ROS middleware in between. |
|
Metapackage, not a module itself; it bundles the readers for public
benchmark datasets, each of which is one:
|
|
Bidirectional ROS 2 ↔ MOLA bridge: subscribes to live topics as a data
source, and publishes MOLA’s outputs back as topics and |
Odometry, SLAM and state estimation
Package |
Purpose |
|---|---|
3D/2D LiDAR and LiDAR-inertial odometry, the main MOLA front end. |
|
Central 3D SLAM map: online fusion of LIO/VIO/IMU/GNSS/wheels with loop closure and geo-referencing. |
|
State estimators ( |
|
IMU preintegration and gravity estimation used by the LIO paths. |
|
Offline loop-closure post-processing of a simple-map, as a library and a CLI tool. |
|
Global localization and pose estimation under large initial uncertainty. |
Maps, tools and visualization
Package |
Purpose |
|---|---|
The map classes: |
|
Spatially-searchable pose lists (keyframe density bookkeeping). |
|
CLI tools to manipulate trajectory files, complementing |
|
Publishes GNSS datums as RViz/FoxGlove ellipsoid markers on a geo-referenced map. |
|
The two interchangeable GUI backends (nanogui and Dear ImGui). See choosing a visualizer. |
|
Example |