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. See mrpt::poses for the complete list of classes here. 00025 00026 00027 <h3>mrpt::utils</h3> 00028 00029 <ul> 00030 <li><b>RTTI (RunTime Type Information):</b> A cross-platform, compiler-independent RTTI system is built around the base class 00031 mrpt::utils::CObject.</li> 00032 00033 <li><b>Smart pointers:</b> Based on the STLplus library, any class CFoo inheriting from CObject, automatically has an associated smart 00034 pointer class CFooPtr. MRPT implements advanced smart pointers capable of multi-thread safe usage and smart pointer typecasting with 00035 runtime check for correct castings. </li> 00036 00037 <li><b>Image handling:</b> The class mrpt::utils::CImage represents a wrapper around OpenCV IplImage's, plus extra functionality 00038 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 00039 be still used to operate on MRPT images. </li> 00040 00041 <li><b>Serialization/Persistence:</b> Object serialization in a simple but powerful (including versioning) format 00042 is supported by dozens of MRPT classes, all based on mrpt::utils::CSerializable. </li> 00043 00044 <li><b>Streams:</b> Stream classes (see the base mrpt::utils::CStream) allow serialization of MRPT objects. There are classes 00045 for tranparent GZ-compressed files, sockets, serial ports, etc. </li> 00046 00047 <li><b>XML-based databases:</b> Simple databases can be mantained, loaded and saved to files with mrpt::utils::CSimpleDatabase. </li> 00048 00049 <li><b>Name-based argument passing:</b> See the structure mrpt::utils::TParameters </li> 00050 00051 <li><b>Configuration files:</b> There is one base virtual class (mrpt::utils::CConfigFileBase) which can be used to read/write configuration 00052 files (including basic types, vectors, matrices,...) from any "configuration source" transparently (an actual configuration file, a text block 00053 created on the fly, etc.). </li> 00054 00055 00056 </ul> 00057 00058 <h3>mrpt::math</h3> 00059 00060 MRPT defines a number of generic <i> math containers</i>, which are: 00061 00062 <ul> 00063 <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> 00064 <li><b>Matrix views:</b> Proxy classes that allow operating on the transpose, a part of, or the diagonal of another matrix as if it was a plain matrix 00065 object. See mrpt::math::CMatrixView. </li> 00066 <li><b>Vectors:</b> Dynamic-size vectors. See mrpt::vector_double, which inherits from a standard STL vector<double>. </li> 00067 <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> 00068 </ul> 00069 00070 These contaners have a number of characteristics in common (STL-like iterators and typedefs, etc.) and can be 00071 mixed in operations without problems. For example, matrices of any kind can be operated together, a vector can be 00072 added to an array, or the results of a matrix operation stored in a matrix view. 00073 00074 Notice that fixed-size contaners should be preferred where possible, since they allow more compile-time optimizations. 00075 00076 Apart from the containers, this namespace contains much more functionality: 00077 00078 <ul> 00079 <li>A templatized RANSAC algorithm. </li> 00080 <li>Probability distribution functions. </li> 00081 <li>Statistics: mean, covariance, covariance of weighted samples, etc... from sets of data.</li> 00082 <li>A huge amount of geometry-related functions: Lines (mrpt::math::TLine3D), planes (mrpt::math::TPlane3D), segments, polygons, intersections between them, etc. </li> 00083 </ul> 00084 00085 00086 <h3>mrpt::bayes</h3> 00087 00088 Here there are two main family of algorithms: 00089 <ul> 00090 <li><b>Kalman filters:</b> A generic, templatized Kalman filter implementation (includes EKF,IEKF and in the future, UKF), which 00091 only requires from the programmer to provide the system models and (optinally) the Jacobians. See mrpt::bayes::CKalmanFilterCapable </li> 00092 <li><b>Particle filters:</b> A set of helper classes and functions to perform particle filtering. In this case the 00093 algorithms are not as generic as in Kalman filtering, but the classes serve to organize and unify the interface of different 00094 PF algorithms in MRPT. See mrpt::bayes::CParticleFilter. </li> 00095 </ul> 00096 00097 00098 <h3>mrpt::synch</h3> 00099 00100 This namespace includes threading tools such as critical sections, semaphores or utilities such as the template mrpt::synch::CThreadSafeVariable 00101 that converts any variable into a pair variable-critical section. 00102 00103 00104 <h3>mrpt::scan_matching</h3> 00105 00106 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. 00107 Note that this does not includes the iterative ICP algorithm, included in another library (mrpt-slam). 00108 00109 00110 <h3>mrpt::system</h3> 00111 00112 Here can be found functions for filesystem managing, watching directories, creating and handling threads in an OS-independent way, etc. 00113 00114 00115 <h3>mrpt::compress</h3> 00116 00117 GZip compression methods can be found in this namespace. 00118 00119 00120 */ 00121
| Page generated by Doxygen 1.6.1 for MRPT 0.9.0 SVN: at Mon Jun 7 06:47:58 UTC 2010 |
