MOLA in five minutes

Install MOLA, run 3D LiDAR odometry on a real sequence, and see a map. No configuration, no dataset download, nothing to edit.

If you already know you want to run MOLA on your own data, skip this and go to Run MOLA on your own ROS 2 bag.

1. Install

You need a ROS 2 distribution installed and sourced, so that $ROS_DISTRO is set:

source /opt/ros/$ROS_DISTRO/setup.bash   # or e.g. /opt/ros/jazzy/setup.bash

Then:

sudo apt install \
  ros-$ROS_DISTRO-mola \
  ros-$ROS_DISTRO-mola-lidar-odometry \
  ros-$ROS_DISTRO-mola-test-datasets

The third package is a handful of short dataset extracts, which is what makes this page a five-minute exercise instead of a download.

Other ways to install, including from source and the exact versions on each ROS 2 distribution, are on the installing section of the home page.

2. Run it

mola-lo-gui-rawlog \
  $(ros2 pkg prefix mola_test_datasets)/share/mola_test_datasets/datasets/mulran/mulran_KAIST01_extract.rawlog

That is a fragment of the MulRan KAIST01 sequence: a car with an Ouster OS1-64 driving about 50 m through Daejeon.

A window opens, the point cloud starts scrolling past, and a trajectory is traced behind the vehicle. The run ends by itself after about eight seconds of sensor time.

3. What just happened

MOLA registered each incoming LiDAR scan against a local map built from the previous ones, and the accumulated chain of those registrations is the trajectory you watched being drawn. That is LiDAR odometry: no loop closure, no global optimization, no prior map.

The last line before shutdown is the run summary:

Run totals: registrations=79 no_motion_model=0 (0.00%) icp_rejected=0 (0.00%)

registrations is how many scans were aligned. The other two are the health indicators worth knowing about early: no_motion_model counts scans that had to be registered from a standstill guess because the state estimator had nothing to offer, and icp_rejected counts alignments that were thrown out. Both should be at or near zero on a well-behaved sequence, and a non-zero value tells you something about the run that the trajectory alone will not.

4. Where to go next

Run it on your own ROS 2 bag

Run MOLA on your own ROS 2 bag walks through the five things you have to decide, in the order you hit them.

Run it on a public benchmark dataset

Running MOLA on a dataset has a page per dataset, each with the exact command and the tuning that dataset needs.

Actually build and save a map

Tutorial: build a map covers the full pipeline: simple-map, metric map, and the tools that consume them.

Compare MOLA against another method

Read GUI or offline CLI: which one, and why first. The GUI you just used is not the tool to benchmark with, and the reason is not obvious.

Something went wrong

Troubleshooting.