Skip to content

Repository files navigation

Mobile Robot Programming Toolkit

Two decades of open-source robotics — since 2005

Linux build macOS build Windows build codecov clang-format

Latest release Windows installer DOI License

Documentation · Tutorials · API Reference · Examples · Applications


What is MRPT?

MRPT is a well-established C++ framework for mobile robotics, originally developed in 2005 at the University of Málaga and actively maintained to this day. Over the years, contributions from the community have evolved it into a robust, modular toolkit widely used in both academic research and industry.

MRPT 3.0 is a major refactoring that modernises the build system (colcon-based modular packages), cleans up the public API, and aligns with modern C++17 standards while preserving the data structures and algorithms at the core of MRPT.

MRPT demo

Key capabilities

Area What's included
SLAM MonteCarlo Localization, RBPF, pose-graph optimization
Geometry SE(2)/SE(3) Lie groups, rigid body transforms, point clouds
Probabilistic Kalman filters, particle filters, PDFs over poses & maps
Maps Occupancy grids, point maps, landmark maps, voxel maps
Sensors LiDAR, stereo/RGB-D cameras, IMU, GPS, Velodyne, …
Visualization 3-D scene graph (mrpt::viz), GUI windows, plot widgets
Navigation Reactive nav, path planning, PTG-based obstacle avoidance
Python pybind11 bindings for all major modules

Getting started

Install from ROS repositories

# ROS 1 (deprecated)
sudo apt install ros-$ROS_DISTRO-mrpt2

# ROS 2
sudo apt install ros-$ROS_DISTRO-mrpt-*

ROS2 build status for mrpt3

Distro Build dev Release
ROS 2 Humble (u22.04) Build Status Version
ROS 2 Jazzy (u24.04) Build Status Version
ROS 2 Kilted (u24.04) Build Status Version
ROS 2 Lyrical (u26.04) Build Status Version
ROS 2 Rolling (u26.04) Build Status Version

Binary package build status per package, distro, OS and architecture:

Package ROS 2 Humble
BinBuild
ROS 2 Jazzy
BinBuild
ROS 2 Kilted
BinBuild
ROS 2 Lyrical
BinBuild
ROS 2 Rolling
BinBuild
mrpt_core Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_io Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_serialization Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_system Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_rtti Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_containers Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_typemeta Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_random Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_config Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_data Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_expr Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_math Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_poses Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_tfest Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_bayes Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_obs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_topography Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_maps Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_graphs Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_opengl Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_img Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_viz Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_imgui Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_imgui_vendor Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_gui Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_nav Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_kinematics Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_slam Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_graphslam Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_hwdrivers Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_common Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_comms Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_libapps_cli Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_libapps_gui Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_apps_cli Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_apps_gui Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
mrpt_examples_cpp Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status
Build Status

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: pybind11-dev has no RHEL 8 mapping in rosdep, so mrpt3 cannot be built there.
  • Fedora (x86_64) -- only available since ROS 2 Lyrical (Fedora was not a supported buildfarm target for earlier distros).

A red/failing badge means the package attempted to build for that platform but currently fails (e.g. an unresolved transitive dependency); a missing badge means that platform is not offered at all for that distro.

mrpt_imgui_vendor is pending its first rosdistro release, so its badges will show as unbuilt until that merge lands.

Install (Ubuntu/Debian)

sudo apt install libmrpt-dev mrpt-apps

Check your distro version at Ubuntu / Debian. For a more recent build, use the nightly PPA:

sudo add-apt-repository ppa:joseluisblancoc/mrpt
sudo apt install libmrpt-dev mrpt-apps

Build from source

git clone https://github.com/MRPT/mrpt.git --recursive

Install build dependencies with rosdep (recommended, works even without ROS installed):

sudo apt install python3-rosdep
sudo rosdep init   # only once per machine
rosdep update
rosdep install --from-paths . --ignore-src -r -y

Then build with colcon:

colcon build

See the full build guide for colcon, CMake options, and dependency setup.

Windows

Nightly Windows installer — includes .exe, .dll, .h, and .lib files.


Using MRPT 3.0 in your project

cmake_minimum_required(VERSION 3.16)
project(my_robot_app)

find_package(mrpt_poses REQUIRED)
find_package(mrpt_maps  REQUIRED)

add_executable(my_app main.cpp)
target_link_libraries(my_app mrpt::mrpt_poses mrpt::mrpt_maps)

Migrating from MRPT 2.x? See the porting guide — package names changed from mrpt-<name> to mrpt_<name> and targets from mrpt::<name> to mrpt::mrpt_<name>.


Documentation highlights

Resource Link
Full API reference docs.mrpt.org/reference/latest/modules.html
Tutorials docs.mrpt.org/reference/latest/tutorials.html
Code examples docs.mrpt.org/reference/latest/examples.html
Python examples docs.mrpt.org/reference/latest/python_examples.html
Python API reference docs.mrpt.org/reference/latest/python_api.html
Docs for AI agents llms.txt, examples.json, and a .md version of every page
GUI applications docs.mrpt.org/reference/latest/applications.html
Supported sensors docs.mrpt.org/reference/latest/supported-sensors.html
ROS wrappers docs.mrpt.org/reference/latest/wrappers.html
Porting from 2.x docs.mrpt.org/reference/latest/page_porting_mrpt3.html
Changelog docs.mrpt.org/reference/latest/page_changelog.html
Robotics datasets mrpt.org/robotics_datasets

Modules

MRPT 3.0 is organized as independent colcon packages. Each can be built and used standalone:

mrpt_core · mrpt_math · mrpt_poses · mrpt_obs · mrpt_maps · mrpt_slam · mrpt_viz · mrpt_gui · mrpt_nav · mrpt_bayes · mrpt_graphs · mrpt_io · mrpt_img · mrpt_config · mrpt_serialization · mrpt_random · mrpt_system · mrpt_tfest · mrpt_kinematics · mrpt_comms · mrpt_hwdrivers · …


Community & support


License

Released under the BSD 3-Clause License.


Contributors

Contributors

Packaging status

Repology