This is the most fundamental library in MRPT, since it provides a vast amount of utilities and OS-abstraction classes upon which the rest of MRPT is built. Here resides critical functionality such as mathematics, linear algebra, serialization, smart pointers and multi-threading.
This library comprises classes in a number of namespaces, briefly described below (click on the namespaces names to see the complete list of its classes):
A comprehensive collection of geometry-related classes to represent all kind of 2D and 3D geomtry transformations in different formats (Euler angles, rotation matrices, quaternions), as well as networks of pose constrains (as used typically in SLAM problems).
There are also implemented representations for probability distributions over all of these transformations, in a generic way that allow mono and multi-modal Gaussians and particle-based representations. See mrpt::poses for the complete list of classes here.
RTTI (RunTime Type Information): A cross-platform, compiler-independent RTTI system is built around the base class mrpt::utils::CObject.
Smart pointers: Based on the STLplus library, any class CFoo inheriting from CObject, automatically has an associated smart pointer class CFooPtr. MRPT implements advanced smart pointers capable of multi-thread safe usage and smart pointer typecasting with runtime check for correct castings.
Image handling: The class mrpt::utils::CImage represents a wrapper around OpenCV IplImage's, plus extra functionality such as on-the-fly loading of images stored in disk upon first usage. The internal IplImage is always available so OpenCV's functions can be still used to operate on MRPT images.
Serialization/Persistence: Object serialization in a simple but powerful (including versioning) format is supported by dozens of MRPT classes, all based on mrpt::utils::CSerializable.
Streams: Stream classes (see the base mrpt::utils::CStream) allow serialization of MRPT objects. There are classes for tranparent GZ-compressed files, sockets, serial ports, etc.
XML-based databases: Simple databases can be mantained, loaded and saved to files with mrpt::utils::CSimpleDatabase.
Name-based argument passing: See the structure mrpt::utils::TParameters
Configuration files: There is one base virtual class (mrpt::utils::CConfigFileBase) which can be used to read/write configuration files (including basic types, vectors, matrices,...) from any "configuration source" transparently (an actual configuration file, a text block created on the fly, etc.).
MRPT defines a number of generic math containers, which are:
These contaners have a number of characteristics in common (STL-like iterators and typedefs, etc.) and can be mixed in operations without problems. For example, matrices of any kind can be operated together, a vector can be added to an array, or the results of a matrix operation stored in a matrix view.
Notice that fixed-size contaners should be preferred where possible, since they allow more compile-time optimizations.
Apart from the containers, this namespace contains much more functionality:
Here there are two main family of algorithms:
This namespace includes threading tools such as critical sections, semaphores or utilities such as the template mrpt::synch::CThreadSafeVariable that converts any variable into a pair variable-critical section.
Under this name we find functions in charge of solving the optimization problem of aligning a set of correspondences, both in 2D and in 3D. Note that this does not includes the iterative ICP algorithm, included in another library (mrpt-slam).
Here can be found functions for filesystem managing, watching directories, creating and handling threads in an OS-independent way, etc.
GZip compression methods can be found in this namespace.
| Page generated by Doxygen 1.6.1 for MRPT 0.9.0 SVN: at Mon Jun 7 06:47:58 UTC 2010 |