Main MRPT website > C++ reference
MRPT logo

lib_mrpt_base.h

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



Page generated by Doxygen 1.7.3 for MRPT 0.9.4 SVN:exported at Tue Jan 25 21:56:31 UTC 2011