从源码构建需加 --recursive 克隆子模块,并用 rosdep 安装依赖后再 colcon build;MRPT 3.0 包名由 mrpt- 改为 mrpt_,从 2.x 迁移需按移植指南修改;ROS 1 的 mrpt2 包已标记为弃用
mrpt
MRPTBSD-3-Clause活跃维护一套面向移动机器人和自动驾驶的 C++ 工具库,提供 SLAM、计算机视觉、地图构建、粒子滤波和运动估计等模块,省去从零搭建底层算法。
:zap: The Mobile Robot Programming Toolkit (MRPT)
pip install mrpt3README 未说明具体硬件要求;Python wheel 支持 Linux x86_64 与 aarch64,另提供 Windows 安装包
移动机器人 C++ 开发框架,提供 SLAM、几何、概率、地图与可视化等模块化组件
一套面向移动机器人和自动驾驶的 C++ 工具库,提供 SLAM、计算机视觉、地图构建、粒子滤波和运动估计等模块,省去从零搭建底层算法。
核心能力
- 提供 MonteCarlo 定位、RBPF 与位姿图优化等 SLAM 算法
- 封装 SE(2)/SE(3) 李群与刚体变换、点云几何运算
- 内置卡尔曼滤波、粒子滤波及位姿与地图上的概率分布
- 支持占据栅格、点云、路标与体素等多类地图表示
- 通过 pybind11 提供覆盖主要模块的 Python 绑定
容易踩的坑
- 3.6.2Release of v3.6.2最新正式版2026-11-06 · 2026-11-06 23:37 UTC
Release 3.6.2
mrpt_bayes
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_common
- Python wheel (pip install mrpt3), with a C++ SDK (
#1489 <https://github.com/MRPT/mrpt/issues/1489>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_containers
- yaml::printAsYAML(): emit empty sequences and maps as [] and {} (
#1499 <https://github.com/MRPT/mrpt/issues/1499>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_core
- ASSERT_*_ macros: keep operands that refer into a temporary alive during the check (
#1497 <https://github.com/MRPT/mrpt/issues/1497>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_graphs
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_graphslam
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_gui
- Python wheel: nanogui 3D windows from Python, complete C++ SDK, NumPy arrays as MRPT matrices (
#1496 <https://github.com/MRPT/mrpt/issues/1496>_) - Fix builds using the embedded assimp, octomap and GLFW (
#1488 <https://github.com/MRPT/mrpt/issues/1488>_) - mrpt_gui: remove unused GLU includes
- Contributors: Jose Luis Blanco-Claraco
mrpt_kinematics
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_maps
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Fix builds using the embedded assimp, octomap and GLFW (
#1488 <https://github.com/MRPT/mrpt/issues/1488>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_math
- Python wheel: nanogui 3D windows from Python, complete C++ SDK, NumPy arrays as MRPT matrices (
#1496 <https://github.com/MRPT/mrpt/issues/1496>_) - inverse_LLt() throws for matrices that are not positive-definite; pseudo-inverse for quaternion information PDFs (
#1494 <https://github.com/MRPT/mrpt/issues/1494>_) - Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Fix to_gtsam_se3_cov6() covariance conversion; add its exact inverse to_mrpt_se3_pdf() (
#1490 <https://github.com/MRPT/mrpt/issues/1490>_) - Text matrix and TUM loaders: indented comments, blank lines, non-finite rows (
#1486 <https://github.com/MRPT/mrpt/issues/1486>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_nav
- Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_obs
- CObservationImage: read 4-parameter distortion from legacy files (
#1501 <https://github.com/MRPT/mrpt/issues/1501>_) - Math review: fixes and tests for transformations, probability distributions and their users (
#1492 <https://github.com/MRPT/mrpt/issues/1492>_) - Fix builds using the embedded assimp, octomap and GLFW (
#1488 <https://github.com/MRPT/mrpt/issues/1488>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_poses
- CPose3DQuatPDFGaussianInf::evaluatePDF(): density of degenerate Gaussians (
#1500 <https://github.com/MRPT/mrpt/issues/1500>_) - Python wheel: nanogui 3D windows from Python, complete C++ SDK, NumPy arrays as MRPT matrices (
#1496 <https://github.com/MRPT/mrpt/issues/1496>_) - inverse_LLt() throws for matrices that are not positive-definite; pseudo-inverse for quaternion information PDFs (
#1494 <https://github.com/MRPT/mrpt/issues/1494>_) - Math review: fixes and tes
- Math review: fixes and tests for transformations, probability distributions and their users (
- 3.6.1Release of v3.6.12026-11-01 · 2026-11-01 15:54 UTC
查看更新说明
Release 3.6.1
mrpt_common
- mrpt_add_test(): build the test target from the top of the build tree (fixes Ninja subdirectory tests)
- Contributors: Jose Luis Blanco-Claraco
mrpt_hwdrivers
- Re-enable libdc1394 (FireWire) cameras, ported to the 3.x CImage API (
#1480 <https://github.com/MRPT/mrpt/issues/1480>_) - dc1394 stereo: optional raw Bayer capture (bayer_decoding), Bayer pattern read from the camera, per-image demosaicing
- dc1394: frames stamped at capture time, no buffer leaks on errors, Format7 frame rates, no red/blue swap for monocular frames
- CCameraSensor::initialize() throws if a Bumblebee can not be opened, so callers can retry
- Contributors: Jose Luis Blanco-Claraco
mrpt_imgui
- Grow into a Dear ImGui application framework: CImGuiAppShell, CImGuiBackgroundScene, CImGuiTimeline, CImGuiPlotPanel, CImGuiImageView, CImGuiLogConsole, CImGuiFileDialog, AsyncTask
- New CImGuiAboutDialog, CImGuiMessageQueue, status bar and frame grab helpers
- CImGuiSceneView: optional 6DOF camera pose override (
#1482 <https://github.com/MRPT/mrpt/issues/1482>_) - CImGuiTimeline: step through keys sharing the same time
- AsyncTask::cancelAndWait(); visible edges for plot bands
- Message boxes ignore the key press that opened them
- Contributors: Jose Luis Blanco-Claraco
mrpt_imgui_vendor
- Icon font subset: add the icons used by the app framework; generator checks every icon has a glyph
- Contributors: Jose Luis Blanco-Claraco
mrpt_libapps_cli
- rawlog-edit: new --decimate, --lossless-decimate, --compact, --to-observations-only, --to-sensory-frames, --sort-by-timestamp, --regenerate-sf-timestamps
- New GUI-free rawlog operations API (mrpt/apps_cli/rawlog_ops.h), shared with RawLogViewer
- rawlog-edit: invalid timestamps are not shifted; malformed numbers are rejected
- Contributors: Jose Luis Blanco-Claraco
mrpt_maps
- obs_to_viz(): clouds without RGB fields are no longer drawn black; rotating scans colored by height
- Contributors: Jose Luis Blanco-Claraco
mrpt_obs
- Python: stereo images, rotating and Velodyne scans as NumPy arrays, all NMEA GPS messages (
#1481 <https://github.com/MRPT/mrpt/issues/1481>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_opengl
- Render lines wider than 1 pixel again, with a new WIREFRAME_THICK shader
- Pinhole cameras work with any viewport size; orthogonal views no longer clip objects above the eye (
#1485 <https://github.com/MRPT/mrpt/issues/1485>_) - Orbit camera roll is now applied; exponential zoom (
#1484 <https://github.com/MRPT/mrpt/issues/1484>_) - Lighting of orthogonal cameras uses the constant view direction
- Contributors: Jose Luis Blanco-Claraco
mrpt_system
- COutputLogger: callback identifiers for logDeregisterCallback(), atomic callback verbosity level, copy-on-write callback list (
#1477 <https://github.com/MRPT/mrpt/issues/1477>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_viz
- New CCamera::PinholeForViewport() and clearPinholeModel(); Viewport::get3DRayForPixelCoord() uses the pinhole model (
#1485 <https://github.com/MRPT/mrpt/issues/1485>_) - Orbit camera model shared by rendering and picking (CCamera::ComputeOrbitEyeAndUp()), roll is applied (
#1484 <https://github.com/MRPT/mrpt/issues/1484>_) - COrbitCameraController: exponential zoom, validated zoom limits
- Fix exception computing the bounding box of scenes with empty line sets or polyhedrons (
#1483 <https://github.com/MRPT/mrpt/issues/1483>_) - CornerXYZSimple()/CornerXYSimple() made of lines again
- Contributors: Jose Luis Blanco-Claraco
mrpt_apps_gui
- RawLogViewer: redesigned on Dear ImGui: dockable panels, timeline, per-sensor panels, background cancellable operations (
#1479 <https://github.com/MRPT/mrpt/issues/1479>_) - RawLogViewer: 3D view shows all sensors near the current time; robot drawn as an XYZ corner
- SceneViewer3D, navlog-viewer, 2d-slam-demo, holonomic-navigator-demo, GridmapNavSimul: ported to Dear ImGui (no wxWidgets/nano
- 3.6.0Release of v3.6.02026-10-28 · 2026-10-28 09:10 UTC
查看更新说明
Release 3.6.0
mrpt_common
- fix cmake warning
- Contributors: Jose Luis Blanco-Claraco
mrpt_comms
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - CGPSInterface: report each serial port open error once (
#1471 <https://github.com/MRPT/mrpt/issues/1471>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_config
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_gui
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Update nanogui submodule
- Contributors: Jose Luis Blanco-Claraco
mrpt_hwdrivers
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - CGPSInterface: report each serial port open error once (
#1471 <https://github.com/MRPT/mrpt/issues/1471>_) - Fix decoding of Novatel logs without a dedicated parser; serialize generic frame headers as little-endian (
#1470 <https://github.com/MRPT/mrpt/issues/1470>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_img
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_io
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_libapps_gui
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_maps
- Point clouds: optionally hide back-facing points (
#1476 <https://github.com/MRPT/mrpt/issues/1476>_) - KDTreeCapable: do not lock to mark an already outdated index (
#1475 <https://github.com/MRPT/mrpt/issues/1475>_) - Faster and smaller point map serialization with optional Cloudini (
#1474 <https://github.com/MRPT/mrpt/issues/1474>_) - Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - CVoxelMap: fix the strength of misses (prob_miss convention) and saturate at clamp_min/clamp_max (
#1472 <https://github.com/MRPT/mrpt/issues/1472>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_math
- KDTreeCapable: do not lock to mark an already outdated index (
#1475 <https://github.com/MRPT/mrpt/issues/1475>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_obs
- Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Fix decoding of Novatel logs without a dedicated parser; serialize generic frame headers as little-endian (
#1470 <https://github.com/MRPT/mrpt/issues/1470>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_opengl
- Point clouds: optionally hide back-facing points (
#1476 <https://github.com/MRPT/mrpt/issues/1476>_) - OpenGL: trilinear and anisotropic filtering for mipmapped textures (
#1469 <https://github.com/MRPT/mrpt/issues/1469>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_viz
- Point clouds: optionally hide back-facing points (
#1476 <https://github.com/MRPT/mrpt/issues/1476>_) - Declare linked system libraries as package.xml to fix RHEL downstream link failures (
#1473 <https://github.com/MRPT/mrpt/issues/1473>_) - Contributors: Jose Luis Blanco-Claraco
- 3.5.3Release of v3.5.32026-10-16 · 2026-10-16 08:10 UTC
查看更新说明
Release 3.5.3
mrpt_gui
- Support Eigen 5.0 version and include dir detection (
#1467 <https://github.com/MRPT/mrpt/issues/1467>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_maps
- Add CMetricMap::asPointsMapView() hook used by asPointsMap() (
#1468 <https://github.com/MRPT/mrpt/issues/1468>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_math
- Support Eigen 5.0 version and include dir detection (
#1467 <https://github.com/MRPT/mrpt/issues/1467>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_obs
- Add CMetricMap::asPointsMapView() hook used by asPointsMap() (
#1468 <https://github.com/MRPT/mrpt/issues/1468>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_apps_gui
- Support Eigen 5.0 version and include dir detection (
#1467 <https://github.com/MRPT/mrpt/issues/1467>_) - Contributors: Jose Luis Blanco-Claraco
- Support Eigen 5.0 version and include dir detection (
- 3.5.2Release of v3.5.22026-10-11 · 2026-10-11 07:15 UTC
查看更新说明
Release 3.5.2
mrpt_containers
- yaml: emit a key's right comment after the value, not before its ':'
(
#1462 <https://github.com/MRPT/mrpt/issues/1462>_) - Contributors: Jose Luis Blanco-Claraco
mrpt_opengl
- opengl: share GPU buffers of repeated objects and draw them instanced
(
#1466 <https://github.com/MRPT/mrpt/issues/1466>_) - CFBORender: GPU lens distortion and pixel noise for RGB images
(
#1465 <https://github.com/MRPT/mrpt/issues/1465>_) - CFBORender: read back RGB images with 1-byte row alignment
(
#1463 <https://github.com/MRPT/mrpt/issues/1463>_) - Contributors: Jose Luis Blanco Claraco, Jose Luis Blanco-Claraco
- yaml: emit a key's right comment after the value, not before its ':'
(
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Mobile Robot Programming Toolkit
Two decades of open-source robotics — since 2005
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.
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 for Python (pip)
pip install mrpt3
from mrpt.poses import CPose3D
print(CPose3D(1.0, 2.0, 0.0, 0.5, 0.0, 0.0) + CPose3D(0.5, 0.0, 0.0, 0.0, 0.0, 0.0))
Linux (x86_64, aarch64), Python 3.11 to 3.14. The wheel also contains the C++ headers, libraries and CMake files. See the Python examples.
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) | ||
| ROS 2 Jazzy (u24.04) | ||
| ROS 2 Kilted (u24.04) | ||
| ROS 2 Lyrical (u26.04) | ||
| ROS 2 Rolling (u26.04) |
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 | |||||
| mrpt_io | |||||
| mrpt_serialization | |||||
| mrpt_system | |||||
| mrpt_rtti | |||||
| mrpt_containers | |||||
| mrpt_typemeta | |||||
| mrpt_random | |||||
| mrpt_config | |||||
| mrpt_data | |||||
| mrpt_expr | |||||
| mrpt_math | |||||
| mrpt_poses | |||||
| mrpt_tfest | |||||
| mrpt_bayes | |||||
| mrpt_obs | |||||
| mrpt_topography | |||||
| mrpt_maps | [![Build Status](https://build.ros2.org/job/Hbin_uJ64__mrpt_map |