A class for very simple 2D SLAM based on ICP.
This is a non-probabilistic pose tracking algorithm. Map are stored as in files as binary dumps of "mrpt::maps::CSimpleMap" objects. The methods are thread-safe.
Definition at line 28 of file CMetricMapBuilderICP.h.
#include <mrpt/slam/CMetricMapBuilderICP.h>
Classes | |
struct | TConfigParams |
Algorithm configuration params. More... | |
struct | TDist |
Traveled distances from last map update / ICP-based localization. More... | |
Public Member Functions | |
CMetricMapBuilderICP () | |
Default constructor - Upon construction, you can set the parameters in ICP_options, then call "initialize". | |
virtual | ~CMetricMapBuilderICP () |
Destructor: | |
void | initialize (const mrpt::maps::CSimpleMap &initialMap=mrpt::maps::CSimpleMap(), mrpt::poses::CPosePDF *x0=NULL) |
Initialize the method, starting with a known location PDF "x0"(if supplied, set to NULL to left unmodified) and a given fixed, past map. | |
mrpt::poses::CPose3DPDFPtr | getCurrentPoseEstimation () const |
Returns a copy of the current best pose estimation as a pose PDF. | |
void | setCurrentMapFile (const char *mapFile) |
Sets the "current map file", thus that map will be loaded if it exists or a new one will be created if it does not, and the updated map will be save to that file when destroying the object. | |
void | processActionObservation (mrpt::obs::CActionCollection &action, mrpt::obs::CSensoryFrame &in_SF) |
Appends a new action and observations to update this map: See the description of the class at the top of this page to see a more complete description. | |
void | processObservation (const mrpt::obs::CObservationPtr &obs) |
The main method of this class: Process one odometry or sensor observation. | |
void | getCurrentlyBuiltMap (mrpt::maps::CSimpleMap &out_map) const |
Fills "out_map" with the set of "poses"-"sensory-frames", thus the so far built map. | |
void | getCurrentMapPoints (std::vector< float > &x, std::vector< float > &y) |
Returns the 2D points of current local map. | |
mrpt::maps::CMultiMetricMap * | getCurrentlyBuiltMetricMap () |
Returns the map built so far. | |
unsigned int | getCurrentlyBuiltMapSize () |
Returns just how many sensory-frames are stored in the currently build map. | |
void | saveCurrentEstimationToImage (const std::string &file, bool formatEMF_BMP=true) |
A useful method for debugging: the current map (and/or poses) estimation is dumped to an image file. | |
void | clear () |
Clear all elements of the maps, and reset localization to (0,0,0deg). | |
void | enableMapUpdating (bool enable) |
Enables or disables the map updating (default state is enabled) | |
void | loadCurrentMapFromFile (const std::string &fileName) |
Load map (mrpt::maps::CSimpleMap) from a ".simplemap" file. | |
void | saveCurrentMapToFile (const std::string &fileName, bool compressGZ=true) const |
Save map (mrpt::maps::CSimpleMap) to a ".simplemap" file. | |
Static Public Member Functions | |
static void | printf_debug (const char *frmt,...) |
Sends a formated text to "debugOut" if not NULL, or to cout otherwise. | |
Public Attributes | |
TConfigParams | ICP_options |
Options for the ICP-SLAM application. | |
CICP::TConfigParams | ICP_params |
Options for the ICP algorithm itself. | |
TOptions | options |
Protected Member Functions | |
void | enterCriticalSection () |
Enter critical section for map updating: | |
void | leaveCriticalSection () |
Leave critical section for map updating: | |
Protected Attributes | |
synch::CCriticalSection | critZoneChangingMap |
Critical zones. | |
Private Member Functions | |
void | accumulateRobotDisplacementCounters (const mrpt::poses::CPose2D &new_pose) |
void | resetRobotDisplacementCounters (const mrpt::poses::CPose2D &new_pose) |
Private Attributes | |
mrpt::maps::CSimpleMap | SF_Poses_seq |
The set of observations that leads to current map: | |
mrpt::maps::CMultiMetricMap | metricMap |
The metric map representation as a points map: | |
std::string | currentMapFile |
Current map file. | |
mrpt::poses::CRobot2DPoseEstimator | m_lastPoseEst |
The pose estimation by the alignment algorithm (ICP). | |
mrpt::math::CMatrixDouble33 | m_lastPoseEst_cov |
Last pose estimation (covariance) | |
std::deque< mrpt::math::TPose2D > | m_estRobotPath |
The estimated robot path: | |
mrpt::poses::CPose2D | m_auxAccumOdometry |
TDist | m_distSinceLastICP |
mrpt::aligned_containers< std::string, TDist >::map_t | m_distSinceLastInsertion |
Indexed by sensor label. | |
bool | m_there_has_been_an_odometry |
mrpt::slam::CMetricMapBuilderICP::CMetricMapBuilderICP | ( | ) |
Default constructor - Upon construction, you can set the parameters in ICP_options, then call "initialize".
|
virtual |
Destructor:
|
private |
|
inherited |
Clear all elements of the maps, and reset localization to (0,0,0deg).
|
inlineinherited |
Enables or disables the map updating (default state is enabled)
Definition at line 95 of file CMetricMapBuilder.h.
|
inlineprotectedinherited |
Enter critical section for map updating:
Definition at line 44 of file CMetricMapBuilder.h.
References mrpt::synch::CCriticalSection::enter().
|
virtual |
Fills "out_map" with the set of "poses"-"sensory-frames", thus the so far built map.
Implements mrpt::slam::CMetricMapBuilder.
|
virtual |
Returns just how many sensory-frames are stored in the currently build map.
Implements mrpt::slam::CMetricMapBuilder.
|
virtual |
Returns the map built so far.
NOTE that for efficiency a pointer to the internal object is passed, DO NOT delete nor modify the object in any way, if desired, make a copy of ir with "duplicate()".
Implements mrpt::slam::CMetricMapBuilder.
void mrpt::slam::CMetricMapBuilderICP::getCurrentMapPoints | ( | std::vector< float > & | x, |
std::vector< float > & | y | ||
) |
Returns the 2D points of current local map.
|
virtual |
Returns a copy of the current best pose estimation as a pose PDF.
Implements mrpt::slam::CMetricMapBuilder.
|
virtual |
Initialize the method, starting with a known location PDF "x0"(if supplied, set to NULL to left unmodified) and a given fixed, past map.
This method MUST be called if using the default constructor, after loading the configuration into ICP_options. In particular, TConfigParams::mapInitializers
Implements mrpt::slam::CMetricMapBuilder.
|
inlineprotectedinherited |
Leave critical section for map updating:
Definition at line 48 of file CMetricMapBuilder.h.
References mrpt::synch::CCriticalSection::leave().
|
inherited |
Load map (mrpt::maps::CSimpleMap) from a ".simplemap" file.
|
staticinherited |
Sends a formated text to "debugOut" if not NULL, or to cout otherwise.
Referenced by mrpt::math::CLevenbergMarquardtTempl< VECTORTYPE, USERPARAM >::execute().
|
virtual |
Appends a new action and observations to update this map: See the description of the class at the top of this page to see a more complete description.
action | The estimation of the incremental pose change in the robot pose. |
in_SF | The set of observations that robot senses at the new pose. See params in CMetricMapBuilder::options and CMetricMapBuilderICP::ICP_options |
Implements mrpt::slam::CMetricMapBuilder.
void mrpt::slam::CMetricMapBuilderICP::processObservation | ( | const mrpt::obs::CObservationPtr & | obs | ) |
The main method of this class: Process one odometry or sensor observation.
The new entry point of the algorithm (the old one was processActionObservation, which now is a wrapper to this method). See params in CMetricMapBuilder::options and CMetricMapBuilderICP::ICP_options
|
private |
|
virtual |
A useful method for debugging: the current map (and/or poses) estimation is dumped to an image file.
file | The output file name |
formatEMF_BMP | Output format = true:EMF, false:BMP |
Implements mrpt::slam::CMetricMapBuilder.
|
inherited |
Save map (mrpt::maps::CSimpleMap) to a ".simplemap" file.
void mrpt::slam::CMetricMapBuilderICP::setCurrentMapFile | ( | const char * | mapFile | ) |
Sets the "current map file", thus that map will be loaded if it exists or a new one will be created if it does not, and the updated map will be save to that file when destroying the object.
|
protectedinherited |
Critical zones.
Definition at line 40 of file CMetricMapBuilder.h.
|
private |
Current map file.
Definition at line 133 of file CMetricMapBuilderICP.h.
TConfigParams mrpt::slam::CMetricMapBuilderICP::ICP_options |
Options for the ICP-SLAM application.
Definition at line 65 of file CMetricMapBuilderICP.h.
CICP::TConfigParams mrpt::slam::CMetricMapBuilderICP::ICP_params |
Options for the ICP algorithm itself.
Definition at line 66 of file CMetricMapBuilderICP.h.
|
private |
Definition at line 142 of file CMetricMapBuilderICP.h.
|
private |
Definition at line 155 of file CMetricMapBuilderICP.h.
|
private |
Indexed by sensor label.
Definition at line 156 of file CMetricMapBuilderICP.h.
|
private |
The estimated robot path:
Definition at line 141 of file CMetricMapBuilderICP.h.
|
private |
The pose estimation by the alignment algorithm (ICP).
Last pose estimation (Mean)
Definition at line 136 of file CMetricMapBuilderICP.h.
|
private |
Last pose estimation (covariance)
Definition at line 137 of file CMetricMapBuilderICP.h.
|
private |
Definition at line 157 of file CMetricMapBuilderICP.h.
|
private |
The metric map representation as a points map:
Definition at line 130 of file CMetricMapBuilderICP.h.
|
inherited |
Definition at line 131 of file CMetricMapBuilder.h.
|
private |
The set of observations that leads to current map:
Definition at line 127 of file CMetricMapBuilderICP.h.
Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 06:31:24 UTC 2023 |