# MRPT > The Mobile Robot Programming Toolkit (MRPT) provides portable C++17 libraries, > with Python bindings, for mobile robotics: SE(2)/SE(3) geometry and > uncertainty, metric maps (point clouds, occupancy grids, voxels), SLAM and > localization, Bayesian filtering, motion planning and reactive navigation, > sensor drivers and datasets, and 3D visualization. BSD-3-Clause license. > These docs are for MRPT 3.4.0. Key facts for writing code with MRPT 3.x: - Each library is an independent CMake (colcon) package `mrpt_`: `find_package(mrpt_poses REQUIRED)` and link the target `mrpt::mrpt_poses`. Its dependencies are found and linked transitively. - Headers are `#include /.h>`, declaring `mrpt::::`. Classes deriving from `mrpt::rtti::CObject` have `::Ptr` / `::ConstPtr` (`std::shared_ptr`) aliases and a static `Create(...)` factory. - Python: one package per module, e.g. `from mrpt.poses import CPose3D` (Debian/Ubuntu packages `python3-mrpt-`), with type stubs. - MRPT 3.x renamed packages, targets and namespaces of 2.x (e.g. 3D scene classes moved from `mrpt::opengl` to `mrpt::viz`); code written for 2.x needs porting: see the porting guide below. - Example data files (datasets, config files) are in the `mrpt_data` package. ## Getting started - [Installing MRPT](https://docs.mrpt.org/reference/latest/download-mrpt.md): binary packages for Ubuntu/Debian, ROS and Windows. - [Building from sources](https://docs.mrpt.org/reference/latest/compiling.md) - [Using MRPT from CMake](https://docs.mrpt.org/reference/latest/mrpt_from_cmake.md) - [Porting code from MRPT 2.x to 3.x](https://docs.mrpt.org/reference/latest/page_porting_mrpt3.md) - [Tutorials](https://docs.mrpt.org/reference/latest/tutorials.md) - [Applications](https://docs.mrpt.org/reference/latest/applications.md): ready-to-use programs (SLAM, rawlog tools, viewers...). ## C++ modules - [mrpt_bayes](https://docs.mrpt.org/reference/latest/group_mrpt_bayes_grp.md): Bayesian filtering algorithms. Python: `mrpt.bayes`. Key classes: `mrpt::bayes::CParticleFilterCapable`, `mrpt::bayes::CKalmanFilterCapable`, `mrpt::bayes::CParticleFilterData`. - [mrpt_comms](https://docs.mrpt.org/reference/latest/group_mrpt_comms_grp.md): Communication utilities: serial ports, networking (TCP, DNS,...), pub/sub nodelets. Python: `mrpt.comms`. Key classes: `mrpt::comms::CSerialPort`, `mrpt::comms::CInterfaceFTDI`, `mrpt::comms::CClientTCPSocket`, `mrpt::comms::CServerTCPSocket`. - [mrpt_config](https://docs.mrpt.org/reference/latest/group_mrpt_config_grp.md): C++ library for configuration files in the "INI" file format. Python: `mrpt.config`. Key classes: `mrpt::config::CConfigFile`, `mrpt::config::CConfigFileMemory`. - [mrpt_containers](https://docs.mrpt.org/reference/latest/group_mrpt_containers_grp.md): Container and STL-helper classes. Python: `mrpt.containers`. - [mrpt_core](https://docs.mrpt.org/reference/latest/group_mrpt_core_grp.md): Core components for MRPT. Python: `mrpt.core`. - [mrpt_expr](https://docs.mrpt.org/reference/latest/group_mrpt_expr_grp.md): Dynamic expression analyzers for interpreting small scripts. Python: `mrpt.expr`. - [mrpt_graphs](https://docs.mrpt.org/reference/latest/group_mrpt_graphs_grp.md): Graphs data structures (directed graphs, trees, graphs of pose constraints), graphs algorithms. Python: `mrpt.graphs`. Key classes: `mrpt::graphs::CAStarAlgorithm`, `mrpt::graphs::CNetworkOfPoses`. - [mrpt_graphslam](https://docs.mrpt.org/reference/latest/group_mrpt_graphslam_grp.md): GraphSLAM algorithms. - [mrpt_gui](https://docs.mrpt.org/reference/latest/group_mrpt_gui_grp.md): GUI support: 2D plots (Matlab-like), 3D rendering viewports, etc. Python: `mrpt.gui`. Key classes: `mrpt::gui::CDisplayWindow3D`, `mrpt::gui::CDisplayWindowPlots`, `mrpt::gui::CDisplayWindow`, `mrpt::gui::CDisplayWindowGUI`. - [mrpt_hwdrivers](https://docs.mrpt.org/reference/latest/group_mrpt_hwdrivers_grp.md): Sensor and hardware-related drivers. Python: `mrpt.hwdrivers`. Key classes: `mrpt::hwdrivers::CCameraSensor`, `mrpt::hwdrivers::CImageGrabber_dc1394`, `mrpt::hwdrivers::CImageGrabber_FlyCapture2`, `mrpt::hwdrivers::CKinect`, `mrpt::hwdrivers::COpenNI2Sensor`, `mrpt::hwdrivers::CFFMPEG_InputStream`, `mrpt::hwdrivers::CImageGrabber_OpenCV`, `mrpt::hwdrivers::CGPSInterface`. - [mrpt_img](https://docs.mrpt.org/reference/latest/group_mrpt_img_grp.md): Basic computer vision data structures and tools: bitmap images, canvas, color maps, pinhole camera models, and image undistortion. Python: `mrpt.img`. Key classes: `mrpt::img::TColor`, `mrpt::img::CImage`, `mrpt::img::TCamera`. - [mrpt_imgui](https://github.com/MRPT/mrpt/tree/develop/modules/mrpt_imgui): The MRPT C++ library mrpt_imgui, wrapping rendering objects as a Dear ImGUI component. Key classes: `mrpt::imgui::CImGuiSceneView`. - [mrpt_io](https://docs.mrpt.org/reference/latest/group_mrpt_io_grp.md): C++ library for Input-Output (IO) to raw and compressed files. Python: `mrpt.io`. Key classes: `mrpt::io::CCompressedOutputStream`, `mrpt::io::CCompressedInputStream`, `mrpt::io::CPipe`, `mrpt::io::CTextFileLinesParser`, `mrpt::io::CFileOutputStream`, `mrpt::io::CFileInputStream`. - [mrpt_kinematics](https://docs.mrpt.org/reference/latest/group_mrpt_kinematics_grp.md): Kinematics of robot arms and mobile robots. Python: `mrpt.kinematics`. - [mrpt_maps](https://docs.mrpt.org/reference/latest/group_mrpt_maps_grp.md): Map representations for localization and SLAM. Python: `mrpt.maps`. Key classes: `mrpt::maps::CSimplePointsMap`, `mrpt::maps::COccupancyGridMap2D`, `mrpt::maps::CGenericPointsMap`, `mrpt::maps::CMultiMetricMap`, `mrpt::maps::CSimpleMap`, `mrpt::maps::COctoMap`, `mrpt::maps::CGasConcentrationGridMap2D`, `mrpt::maps::COccupancyGridMap3D`. - [mrpt_math](https://docs.mrpt.org/reference/latest/group_mrpt_math_grp.md): Math C++ library: vectors and matrices, probability distributions, statistics, geometry, etc. Python: `mrpt.math`. Key classes: `mrpt::math::TPose3D`, `mrpt::math::CMatrixF`, `mrpt::math::TObject3D`, `mrpt::math::TLine3D`, `mrpt::math::CMatrixDynamic`, `mrpt::math::CMatrixFixed`, `mrpt::math::CLevenbergMarquardt`, `mrpt::math::TObject2D`. - [mrpt_nav](https://docs.mrpt.org/reference/latest/group_mrpt_nav_grp.md): Autonomous navigation, path planning. Python: `mrpt.nav`. - [mrpt_obs](https://docs.mrpt.org/reference/latest/group_mrpt_obs_grp.md): Observation classes for all kinds of robot sensors. Python: `mrpt.obs`. Key classes: `mrpt::obs::CObservation2DRangeScan`, `mrpt::obs::CRawlog`, `mrpt::obs::CObservation3DRangeScan`, `mrpt::obs::CSensoryFrame`, `mrpt::obs::CObservationImage`, `mrpt::obs::CObservationStereoImages`, `mrpt::obs::CObservationBearingRange`, `mrpt::obs::CObservationRange`. - [mrpt_opengl](https://docs.mrpt.org/reference/latest/group_mrpt_opengl_grp.md): Low-level GPU rendering: shaders, textures, framebuffers, and the rendering pipeline that draws mrpt::viz scenes. Python: `mrpt.opengl`. Key classes: `mrpt::opengl::CFBORender`, `mrpt::opengl::DefaultShaders`, `mrpt::opengl::Shader`, `mrpt::opengl::ShaderProgramManager`. - [mrpt_poses](https://docs.mrpt.org/reference/latest/group_mrpt_poses_grp.md): SE(2)/SE(3) poses and probability distributions. Python: `mrpt.poses`. Key classes: `mrpt::poses::CPose3D`, `mrpt::poses::CPose2D`, `mrpt::poses::CPosePDFGaussian`, `mrpt::poses::CPosePDFSOG`, `mrpt::poses::CPose3DInterpolator`, `mrpt::poses::CPoint3D`, `mrpt::poses::CPose3DQuat`, `mrpt::poses::CPosePDF`. - [mrpt_random](https://docs.mrpt.org/reference/latest/group_mrpt_random_grp.md): Random number generator C++ library support uniform, Gaussian, multivariable distributions. Python: `mrpt.random`. - [mrpt_rtti](https://docs.mrpt.org/reference/latest/group_mrpt_rtti_grp.md): Runtime Type Information (RTTI) library, providing compiler-independent class registry, class factory, and inheritance information. Python: `mrpt.rtti`. Key classes: `mrpt::rtti::CObject`. - [mrpt_serialization](https://docs.mrpt.org/reference/latest/group_mrpt_serialization_grp.md): Serialization (marshalling) portable library for C++ objects persistence. Python: `mrpt.serialization`. Key classes: `mrpt::serialization::CArchive`, `mrpt::serialization::CMessage`, `mrpt::serialization::CSchemeArchive`. - [mrpt_slam](https://docs.mrpt.org/reference/latest/group_mrpt_slam_grp.md): SLAM and PF-localization algorithms. Python: `mrpt.slam`. Key classes: `mrpt::slam::CICP`, `mrpt::slam::CRejectionSamplingRangeOnlyLocalization`. - [mrpt_system](https://docs.mrpt.org/reference/latest/group_mrpt_system_grp.md): An OS abstraction layer and other miscellaneous functionality: filesystem, date and time, memory handling and much more. Python: `mrpt.system`. Key classes: `mrpt::system::CTicTac`, `mrpt::system::CTimeLogger`, `mrpt::system::CObserver`, `mrpt::system::CControlledRateTimer`, `mrpt::system::CDirectoryExplorer`, `mrpt::system::CFileSystemWatcher`. - [mrpt_tfest](https://docs.mrpt.org/reference/latest/group_mrpt_tfest_grp.md): Algorithms to find optimal transformations from sets of correspondences. Python: `mrpt.tfest`. - [mrpt_topography](https://docs.mrpt.org/reference/latest/group_mrpt_topography_grp.md): Topographic functions, geoid transformations. Python: `mrpt.topography`. - [mrpt_typemeta](https://docs.mrpt.org/reference/latest/group_mrpt_typemeta_grp.md): Metaprogramming header-only library to obtain `constexpr` textual string representations of enum types and type names, including smart pointers and complex STL compound types. Key classes: `mrpt::typemeta::TEnumType`, `mrpt::typemeta::TTypeName`, `mrpt::typemeta::TTypeName_stl`. - [mrpt_viz](https://docs.mrpt.org/reference/latest/group_mrpt_viz_grp.md): 3-D scene graph: visual objects, scenes, viewports, cameras, and stock objects. Python: `mrpt.viz`. Key classes: `mrpt::viz::CGridPlaneXY`, `mrpt::viz::Scene`, `mrpt::viz::CSphere`, `mrpt::viz::CAxis`, `mrpt::viz::CPointCloud`, `mrpt::viz::CBox`, `mrpt::viz::CPointCloudColoured`, `mrpt::viz::CTexturedPlane`. ## Python API - [Python API reference](https://docs.mrpt.org/reference/latest/python_api.md): one page per package, generated from the type stubs. - [Python examples](https://docs.mrpt.org/reference/latest/python_examples.md) ## Examples - [examples.json](https://docs.mrpt.org/reference/latest/examples.json): machine-readable index of all C++ and Python examples: summary, modules, classes used, and whether they need a GUI, hardware or an external dataset. - [C++ examples](https://docs.mrpt.org/reference/latest/examples.md): 118 examples, by category. - [Python examples](https://docs.mrpt.org/reference/latest/python_examples.md): 36 examples, by category. ## Optional - [llms-full.txt](https://docs.mrpt.org/reference/latest/llms-full.txt): this file plus all C++ and Python classes and all examples. - [C++ API index](https://docs.mrpt.org/reference/latest/doxygen-index.md) - [Changelog](https://docs.mrpt.org/reference/latest/page_changelog.md) - [Source code](https://github.com/MRPT/mrpt)