Main MRPT website > C++ reference
MRPT logo
lib_mrpt_base.h
Go to the documentation of this file.
00001 /** \defgroup mrpt_base_grp [mrpt-base]
00002 
00003 <small> <a href="index.html#libs">Back to list of all libraries</a> | <a href="modules.html" >See all modules</a> </small>
00004 <br>
00005 
00006 <h2>Library <code>mrpt-base</code></h2>
00007 <hr>
00008 
00009 This is the most fundamental library in MRPT, since it provides a vast amount of utilities and OS-abstraction classes upon which
00010 the rest of MRPT is built. Here resides critical functionality such as mathematics, linear algebra, serialization, smart pointers
00011 and multi-threading.
00012 l
00013 This library comprises classes in a number of namespaces, briefly described below (click on the namespaces names to see the
00014 complete list of its classes):
00015 
00016 
00017 <h3>mrpt::poses</h3>
00018 
00019 A comprehensive collection of geometry-related classes to represent all kind of 2D and 3D geomtry transformations in different formats
00020 (Euler angles, rotation matrices, quaternions), as well as networks of pose constrains (as used typically in SLAM problems).
00021 
00022 There are also implemented representations for probability distributions over all of these transformations, in a generic way that
00023 allow mono and multi-modal Gaussians and particle-based representations.
00024 
00025 See mrpt::poses for the complete list of classes here.
00026 
00027 
00028 <h3>mrpt::utils</h3>
00029 
00030 <ul>
00031 <li><b>RTTI (RunTime Type Information):</b> A cross-platform, compiler-independent RTTI system is built around the base class
00032 mrpt::utils::CObject.</li>
00033 
00034 <li><b>Smart pointers:</b> Based on the STLplus library, any class CFoo inheriting from CObject, automatically has an associated smart
00035 pointer class CFooPtr. MRPT implements advanced smart pointers capable of multi-thread safe usage and smart pointer typecasting with
00036 runtime check for correct castings (<a href="http://www.mrpt.org/Smart_pointers" >tutorial</a>).</li>
00037 
00038 <li><b>Image handling:</b> The class mrpt::utils::CImage represents a wrapper around OpenCV IplImage's, plus extra functionality
00039 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
00040 be still used to operate on MRPT images. </li>
00041 
00042 <li><b>Serialization/Persistence:</b> Object serialization in a simple but powerful (including versioning) format
00043 is supported by dozens of MRPT classes, all based on mrpt::utils::CSerializable. </li>
00044 
00045 <li><b>Streams:</b> Stream classes (see the base mrpt::utils::CStream) allow serialization of MRPT objects. There are classes
00046 for tranparent GZ-compressed files, sockets, serial ports, etc.  </li>
00047 
00048 <li><b>XML-based databases:</b> Simple databases can be mantained, loaded and saved to files with mrpt::utils::CSimpleDatabase. </li>
00049 
00050 <li><b>Name-based argument passing:</b> See the structure mrpt::utils::TParameters </li>
00051 
00052 <li><b>Configuration files:</b> There is one base virtual class (mrpt::utils::CConfigFileBase) which can be used to read/write configuration
00053 files (including basic types, vectors, matrices,...) from any "configuration source" transparently (an actual configuration file, a text block
00054 created on the fly, etc.). </li>
00055 
00056 
00057 </ul>
00058 
00059 <h3>mrpt::math</h3>
00060 
00061 MRPT defines a number of generic <i> math containers</i>, which are:
00062 
00063 <ul>
00064 <li><b>Matrices:</b> Dynamic-size matrices (see mrpt::math::CMatrixDouble) and compile-time fixed-size matrices (see mrpt::math::CMatrixFixedNumeric, mrpt::math::CMatrixDouble33, etc.).  </li>
00065 <li><b>Vectors:</b> Dynamic-size vectors. See mrpt::vector_double, which inherits from a standard STL vector<double>.  </li>
00066 <li><b>Arrays:</b> Fixed-size vectors, just like plain C arrays but with support for STL-like iterators and much more. See mrpt::math::CArrayDouble<>. </li>
00067 </ul>
00068 
00069 For a more in-depth description of these types, and their relation to the base Eigen classes,
00070 read <a href="http://www.mrpt.org/Matrices_vectors_arrays_and_Linear_Algebra_MRPT_and_Eigen_classes" >this page</a>.
00071 
00072 Notice that fixed-size containers should be preferred where possible, since they allow more compile-time optimizations.
00073 
00074 Apart from the containers, this namespace contains much more functionality:
00075 
00076 <ul>
00077 <li>A templatized RANSAC algorithm. </li>
00078 <li>Probability distribution functions. </li>
00079 <li>Statistics: mean, covariance, covariance of weighted samples, etc... from sets of data.</li>
00080 <li>A huge amount of geometry-related functions: Lines (mrpt::math::TLine3D), planes (mrpt::math::TPlane3D), segments, polygons, intersections between them, etc. </li>
00081 <li>Graph-related stuff: generic directed graphs (mrpt::math::CDirectedGraph) and trees (mrpt::math::CDirectedTree).</li>
00082 <li>PDF transformations (uncertainty propagation): See mrpt::math::transform_gaussian_linear, mrpt::math::transform_gaussian_montecarlo, mrpt::math::transform_gaussian_unscented.</li>
00083 </ul>
00084 
00085 
00086 
00087 <h3>mrpt::synch</h3>
00088 
00089 This namespace includes threading tools such as critical sections, semaphores or utilities such as the template mrpt::synch::CThreadSafeVariable
00090 that converts any variable into a pair variable-critical section.
00091 
00092 
00093 <h3>mrpt::system</h3>
00094 
00095 Here can be found functions for filesystem managing, watching directories, creating and handling threads in an OS-independent way, etc.
00096 
00097 
00098 <h3>mrpt::compress</h3>
00099 
00100 GZip compression methods can be found in this namespace.
00101 
00102 
00103 */
00104 



Page generated by Doxygen 1.7.5 for MRPT 0.9.5 SVN: at Thu Oct 13 21:25:36 UTC 2011