Main MRPT website > C++ reference for MRPT 1.5.6
lib_mrpt_base.h
Go to the documentation of this file.
1 /* +---------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2017, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +---------------------------------------------------------------------------+ */
9 
10 /** \defgroup mrpt_base_grp [mrpt-base]
11 
12 <small> <a href="index.html#libs">Back to list of all libraries</a> | <a href="modules.html" >See all modules</a> </small>
13 <br>
14 
15 <h2>Library <code>mrpt-base</code></h2>
16 <hr>
17 
18 This is the most fundamental library in MRPT, since it provides a vast amount of utilities and OS-abstraction classes upon which
19 the rest of MRPT is built. Here resides critical functionality such as mathematics, linear algebra, serialization, smart pointers
20 and multi-threading.
21 l
22 This library comprises classes in a number of namespaces, briefly described below (click on the namespaces names to see the
23 complete list of its classes):
24 
25 
26 <h3>mrpt::poses</h3>
27 
28 A comprehensive collection of geometry-related classes to represent all kind of 2D and 3D geomtry transformations in different formats
29 (Euler angles, rotation matrices, quaternions), as well as networks of pose constrains (as used typically in SLAM problems).
30 
31 There are also implemented representations for probability distributions over all of these transformations, in a generic way that
32 allow mono and multi-modal Gaussians and particle-based representations.
33 
34 See mrpt::poses for the complete list of classes here.
35 
36 
37 <h3>mrpt::utils</h3>
38 
39 <ul>
40 <li><b>RTTI (RunTime Type Information):</b> A cross-platform, compiler-independent RTTI system is built around the base class
41 mrpt::utils::CObject.</li>
42 
43 <li><b>Smart pointers:</b> Based on the STLplus library, any class CFoo inheriting from CObject, automatically has an associated smart
44 pointer class CFooPtr. MRPT implements advanced smart pointers capable of multi-thread safe usage and smart pointer typecasting with
45 runtime check for correct castings (<a href="http://www.mrpt.org/Smart_pointers" >tutorial</a>).</li>
46 
47 <li><b>Image handling:</b> The class mrpt::utils::CImage represents a wrapper around OpenCV IplImage's, plus extra functionality
48 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
49 be still used to operate on MRPT images. </li>
50 
51 <li><b>Serialization/Persistence:</b> Object serialization in a simple but powerful (including versioning) format
52 is supported by dozens of MRPT classes, all based on mrpt::utils::CSerializable. </li>
53 
54 <li><b>Streams:</b> Stream classes (see the base mrpt::utils::CStream) allow serialization of MRPT objects. There are classes
55 for tranparent GZ-compressed files, sockets, serial ports, etc. </li>
56 
57 <li><b>XML-based databases:</b> Simple databases can be mantained, loaded and saved to files with mrpt::utils::CSimpleDatabase. </li>
58 
59 <li><b>Name-based argument passing:</b> See the structure mrpt::utils::TParameters </li>
60 
61 <li><b>Configuration files:</b> There is one base virtual class (mrpt::utils::CConfigFileBase) which can be used to read/write configuration
62 files (including basic types, vectors, matrices,...) from any "configuration source" transparently (an actual configuration file, a text block
63 created on the fly, etc.). </li>
64 
65 
66 </ul>
67 
68 <h3>mrpt::math</h3>
69 
70 MRPT defines a number of generic <i> math containers</i>, which are:
71 
72 <ul>
73 <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>
74 <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>
75 </ul>
76 
77 For a more in-depth description of these types, and their relation to the base Eigen classes,
78 read <a href="http://www.mrpt.org/Matrices_vectors_arrays_and_Linear_Algebra_MRPT_and_Eigen_classes" >this page</a>.
79 
80 Notice that fixed-size containers should be preferred where possible, since they allow more compile-time optimizations.
81 
82 Apart from the containers, this namespace contains much more functionality:
83 
84 <ul>
85 <li>A templatized RANSAC algorithm. </li>
86 <li>Probability distribution functions. </li>
87 <li>Statistics: mean, covariance, covariance of weighted samples, etc... from sets of data.</li>
88 <li>A huge amount of geometry-related functions: Lines (mrpt::math::TLine3D), planes (mrpt::math::TPlane3D), segments, polygons, intersections between them, etc. </li>
89 <li>Graph-related stuff: generic directed graphs (mrpt::math::CDirectedGraph) and trees (mrpt::math::CDirectedTree).</li>
90 <li>PDF transformations (uncertainty propagation): See mrpt::math::transform_gaussian_linear, mrpt::math::transform_gaussian_montecarlo, mrpt::math::transform_gaussian_unscented.</li>
91 <li>A templatized implementation of quaternions, mrpt::math::CQuaternion, with support for rotation matrix convertions, Jacobians, etc.</li>
92 </ul>
93 
94 
95 
96 <h3>mrpt::synch</h3>
97 
98 This namespace includes threading tools such as critical sections, semaphores or utilities such as the template mrpt::synch::CThreadSafeVariable
99 that converts any variable into a pair variable-critical section.
100 
101 
102 <h3>mrpt::system</h3>
103 
104 Here can be found functions for filesystem managing, watching directories, creating and handling threads in an OS-independent way, etc.
105 
106 
107 <h3>mrpt::compress</h3>
108 
109 GZip compression methods can be found in this namespace.
110 
111 
112 */
113 



Page generated by Doxygen 1.8.14 for MRPT 1.5.6 Git: 4c65e8431 Tue Apr 24 08:18:17 2018 +0200 at lun oct 28 01:35:26 CET 2019