Mobile Robot Programming Toolkit (MRPT) provides C++ developers an extensive, portable and well-tested set of libraries and applications which cover the most common data structures and algorithms employed in a number of mobile robotics research areas: localization, Simultaneous Localization and Mapping (SLAM), computer vision and motion planning (obstacle avoidance).
Key points in the design of MRPT are efficiency and reusability of code. The libraries include classes for easily managing 3D(6D) geometry, probability density functions (pdfs) over many predefined variables (points and poses, landmarks, maps), Bayesian inference (Kalman filters, particle filters), image processing, path planning and obstacle avoidance, 3D visualization of all kind of maps (points, occupancy grids, landmarks,...), etc.
Gathering, manipulating and inspecting very large robotic datasets (Rawlogs) efficiently is another goal of MRPT, supported by several classes and applications.
A proper and up-to-date documentation is another of the major goals of MRPT developers. Currently there are dozens of examples and several single-topic tutorials. A currently on-going project is devoted to write a "MRPT book" tutorial.
The MRPT is free software and it is released under the GPL.
An up-to-date list of hardware and robotic sensors currently supported by MRPT is maintained here.
More about the authors and contributors here.
Some statistics: Currently (April 2010), the MRPT project comprises >1400 source files, and >500 KLOC.
Some videos on MRPT-based projects:
Up to now, the Subversion repository used to develop MRPT was sited and maintained at the Málaga University, but to assure a greater reliability in the future, we just finished moving it to the servers of Google Code.
Q: I downloaded MRPT as zip or tar.gz files, I try to be away of weird stuff such as that SVN thing...
A: That's your case, then can stop reading this! You're not affected at all.
I downloaded and installed MRPT on my WIndows 7 x64 pc. I want to use CRovio class for controlling my Rovio. When comipiling my code, compiler says "mrpt/slam/CObservationImage.h" doesn't exist, and in fact it doesn't exist into include\mrpt\slam directory ... can I have somehow that missing header?
Luigi Criveller
A new algorithm, "champion detector" (see attached picture! ;-) ) will be available in the forthcoming MRPT 0.9.1.
Joking aside, Raúl Raul Ruiz Sarmiento, a developer here at MAPIR has been working in a hierarchy of C++ classes for very generic detectors/detectable objects for computer vision, which may be extended in the future for more sensors (e.g. 3D cameras).
For more information, see the (under development!!) class hierarchies:
Just FYI: The program "rbpf-slam" suffers of a critical regression in mrpt 0.9.0 leading to crashing at start-up.
If you need that program, you can either go back to the older version of use the SVN HEAD, where the error was fixed a few days ago.
The release of 0.9.1 will be done ASAP mainly due to this bug, but will still take 1-2 weeks.
Hi,
since I have noticed that changing the 'likelihoodMethod' parameter value in the .ini file provided in the 'gridMapLikelihoodCharacterization' example seemed to have no effect, I have browsed the code of COccupancyGridMap2D::TLikelihoodOptions::loadFromConfigFile(...) and changed
the line:
>> MRPT_LOAD_CONFIG_VAR_CAST(likelihoodMethod, int, TLikelihoodMethod, iniFile, "likelihoodMethod");
with:
>> MRPT_LOAD_CONFIG_VAR_CAST(likelihoodMethod, int, TLikelihoodMethod, iniFile, section.c_str());
It seems to work now, but I haven't tested it thoroughtly.
Hope it helps
Hi,
could you please add support for Maxon EPOS ?
EPOS is a high precise motor driver.
see this page for example:
http://www.maxonmotor.com/media_releases_EPOS2-24-5.html
The MAPIR team is proud to announce the release of MRPT 0.9.0, which represents a big restructuration of MRPT and comes with new features and many bugfixes. It can be downloaded here, and here is the complete changelog. The main page of the documentation now includes a graph with all the MRPT libraries.
This is the summarized list of important changes:
- New minor version number started (0.9.0) due to incompatible changes in the ABI and in some parts of the API (read below for "Important changes in the API"). - The previous "mrpt-core" library has been split into several smaller libs for better modularity, less dependencies of user programs and faster recompiling. - Compile/build: Support for MSVC 2010. - Support for the 3D cameras SR3000/SR4000. See mrpt::hwdrivers::CSwissRanger3DCamera and this example. - The library mrpt-htmslam is now part of public MRPT releases (I tried to also release hmt-slam-gui but it would delay for too long... still in SVN only for now). - The program 'icp-slam', and mrpt::slam::CMetricMapBuilderICP, are now capable of handling two kinds of rawlogs: based on CSensoryFrame's (as usual), and the newest only containing CObservation's. Note however that ICP-SLAM now requires all odometry actions/observations to have a valid timestamp (very old datasets <=2007 would need to be fixed in RawlogViewer). - An important conceptual milestone: New base class mrpt::utils::CObject created to unify the MRPT RTTI system, instead of loading everything on CSerializable (which is now a derived class of CObject). This allows taking advantage of MRPT's smart pointers without forcing to implement serialization. Existing user code should be not affected at all. - Fixed critical bugs in rawlog-grabber and in 6D KF-SLAM (read below). - MRPT now uses Google's unit test framework (gtest). Dozens of automated tests already exist to provide a robust, continuous checking of the health of MRPT core functionality.
As usual, feedback is welcome in the forums (http://www.mrpt.org/forum).
This new version will be shortly available in the official Debian/Ubuntu and Fedora repositories, for those that don't want to compile it manually.
Hi all,
After reconsidering the proposed changes in http://www.mrpt.org/node/73 , the "optimal" structure of libraries is the one that can be seen in this page: http://reference.mrpt.org/svn/ or here:

I'm glad to say that mrpt-core has been split into EIGHT small libraries!! And that, keeping backward compatibility in 99.9% of the API, even for user applications calling mrpt from CMake scripts with FIND_PACKAGE(MRPT REQUIRED ...).
There is a color handling bug in CDisplayWindow3D class
getLastWindowImage() function.
If there is an COpenGLScene in the window, and the
getLastWindowImage(outImg) is called (where outImg is a CImage instance), than in
the generated image, the red and blue components will be flipped. (so
for example when visualize the ICP results, the normally blue points
will be red, and the normally red small-robot-car will be blue).
May be this can be connected with the IPLImages color order in OpenCV.