#include <mrpt/slam/CBeacon.h>
Public Types | |
enum | TTypePDF { pdfMonteCarlo = 0, pdfGauss, pdfSOG } |
See m_typePDF. More... | |
typedef int64_t | TBeaconID |
The type for the IDs of landmarks. | |
Public Member Functions | |
CBeacon () | |
Default constructor. | |
virtual | ~CBeacon () |
Virtual destructor. | |
CPoint3D | getEstimatedPoint () const |
Returns an estimate of the point, (the mean, or mathematical expectation of the PDF). | |
CMatrixD | getEstimatedCovariance () const |
Returns an estimate of the point covariance matrix (3x3 cov.matrix for x,y,z variables). | |
void | copyFrom (const CPointPDF &o) |
Copy operator, translating if necesary (for example, between particles and gaussian representations). | |
void | saveToTextFile (const std::string &file) const |
Save PDF's particles to a text file. | |
void | changeCoordinatesReference (const CPose3D &newReferenceBase) |
This can be used to convert a PDF from local coordinates to global, providing the point (newReferenceBase) from which "to project" the current pdf. | |
void | getAs3DObject (mrpt::opengl::CSetOfObjectsPtr &outObj) const |
Saves a 3D representation of the beacon into a given OpenGL scene. | |
void | getAsMatlabDrawCommands (utils::CStringList &out_Str) const |
Gets a set of MATLAB commands which draw the current state of the beacon:. | |
void | drawSingleSample (CPoint3D &outSample) const |
Draw a sample from the pdf. | |
void | bayesianFusion (CPointPDF &p1, CPointPDF &p2, const double &minMahalanobisDistToDrop=0) |
Bayesian fusion of two point distributions (product of two distributions->new distribution), then save the result in this object (WARNING: See implementing classes to see classes that can and cannot be mixtured!). | |
void | generateObservationModelDistribution (const float &sensedRange, CPointPDFSOG &outPDF, const CBeaconMap *myBeaconMap, const CPoint3D &sensorPntOnRobot, const CPoint3D ¢erPoint=CPoint3D(0, 0, 0), const float &maxDistanceFromCenter=0) const |
Compute the observation model p(z_t|x_t) for a given observation (range value), and return it as an approximate SOG. | |
Static Public Member Functions | |
static void | generateRingSOG (const float &sensedRange, CPointPDFSOG &outPDF, const CBeaconMap *myBeaconMap, const CPoint3D &sensorPnt, const CMatrixD *covarianceCompositionToAdd=NULL, bool clearPreviousContentsOutPDF=true, const CPoint3D ¢erPoint=CPoint3D(0, 0, 0), const float &maxDistanceFromCenter=0) |
This static method returns a SOG with ring-shape (or as a 3D sphere) that can be used to initialize a beacon if observed the first time. | |
Public Attributes | |
TTypePDF | m_typePDF |
Which one of the different 3D point PDF is currently used in this object: montecarlo, gaussian, or a sum of gaussians. | |
CPointPDFParticles | m_locationMC |
The individual PDF, if m_typePDF=pdfMonteCarlo (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon). | |
CPointPDFGaussian | m_locationGauss |
The individual PDF, if m_typePDF=pdfGauss (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon). | |
CPointPDFSOG | m_locationSOG |
The individual PDF, if m_typePDF=pdfSOG (publicly accesible for ease of use, but the CPointPDF interface is also implemented in CBeacon). | |
TBeaconID | m_ID |
An ID for the landmark (see details next. |
This class is used for storage within the class CBeaconMap. The class implements the same methods than the interface "CPointPDF", and invoking them actually becomes a mapping into the methods of the current PDF representation of the beacon, selectable by means of "m_typePDF"
Definition at line 56 of file CBeacon.h.
typedef int64_t mrpt::slam::CBeacon::TBeaconID |
mrpt::slam::CBeacon::CBeacon | ( | ) |
Default constructor.
virtual mrpt::slam::CBeacon::~CBeacon | ( | ) | [virtual] |
Virtual destructor.
void mrpt::slam::CBeacon::bayesianFusion | ( | CPointPDF & | p1, | |
CPointPDF & | p2, | |||
const double & | minMahalanobisDistToDrop = 0 | |||
) | [virtual] |
Bayesian fusion of two point distributions (product of two distributions->new distribution), then save the result in this object (WARNING: See implementing classes to see classes that can and cannot be mixtured!).
p1 | The first distribution to fuse | |
p2 | The second distribution to fuse | |
minMahalanobisDistToDrop | If set to different of 0, the result of very separate Gaussian modes (that will result in negligible components) in SOGs will be dropped to reduce the number of modes in the output. |
Implements mrpt::poses::CPointPDF.
void mrpt::slam::CBeacon::changeCoordinatesReference | ( | const CPose3D & | newReferenceBase | ) | [virtual] |
This can be used to convert a PDF from local coordinates to global, providing the point (newReferenceBase) from which "to project" the current pdf.
Result PDF substituted the currently stored one in the object.
Implements mrpt::poses::CPointPDF.
void mrpt::slam::CBeacon::copyFrom | ( | const CPointPDF & | o | ) | [virtual] |
Copy operator, translating if necesary (for example, between particles and gaussian representations).
Implements mrpt::poses::CPointPDF.
void mrpt::slam::CBeacon::drawSingleSample | ( | CPoint3D & | outSample | ) | const [virtual] |
void mrpt::slam::CBeacon::generateObservationModelDistribution | ( | const float & | sensedRange, | |
CPointPDFSOG & | outPDF, | |||
const CBeaconMap * | myBeaconMap, | |||
const CPoint3D & | sensorPntOnRobot, | |||
const CPoint3D & | centerPoint = CPoint3D(0, 0, 0) , |
|||
const float & | maxDistanceFromCenter = 0 | |||
) | const |
Compute the observation model p(z_t|x_t) for a given observation (range value), and return it as an approximate SOG.
Note that if the beacon is a SOG itself, the number of gaussian modes will be square. As a speed-up, if a "center point"+"maxDistanceFromCenter" is supplied (maxDistanceFromCenter!=0), those modes farther than this sphere will be discarded. Parameters such as the stdSigma of the sensor are gathered from "myBeaconMap" The result is one "ring" for each Gaussian mode that represent the beacon position in this object. The position of the sensor on the robot is used to shift the resulting densities such as they represent the position of the robot, not the sensor.
static void mrpt::slam::CBeacon::generateRingSOG | ( | const float & | sensedRange, | |
CPointPDFSOG & | outPDF, | |||
const CBeaconMap * | myBeaconMap, | |||
const CPoint3D & | sensorPnt, | |||
const CMatrixD * | covarianceCompositionToAdd = NULL , |
|||
bool | clearPreviousContentsOutPDF = true , |
|||
const CPoint3D & | centerPoint = CPoint3D(0, 0, 0) , |
|||
const float & | maxDistanceFromCenter = 0 | |||
) | [static] |
This static method returns a SOG with ring-shape (or as a 3D sphere) that can be used to initialize a beacon if observed the first time.
sensorPnt is the center of the ring/sphere, i.e. the absolute position of the range sensor. If clearPreviousContentsOutPDF=false, the SOG modes will be added to the current contents of outPDF If the 3x3 matrix covarianceCompositionToAdd is provided, it will be add to every Gaussian (to model the composition of uncertainty).
void mrpt::slam::CBeacon::getAs3DObject | ( | mrpt::opengl::CSetOfObjectsPtr & | outObj | ) | const |
Saves a 3D representation of the beacon into a given OpenGL scene.
void mrpt::slam::CBeacon::getAsMatlabDrawCommands | ( | utils::CStringList & | out_Str | ) | const |
Gets a set of MATLAB commands which draw the current state of the beacon:.
CMatrixD mrpt::slam::CBeacon::getEstimatedCovariance | ( | ) | const [virtual] |
Returns an estimate of the point covariance matrix (3x3 cov.matrix for x,y,z variables).
Implements mrpt::poses::CPointPDF.
CPoint3D mrpt::slam::CBeacon::getEstimatedPoint | ( | ) | const [virtual] |
Returns an estimate of the point, (the mean, or mathematical expectation of the PDF).
Implements mrpt::poses::CPointPDF.
void mrpt::slam::CBeacon::saveToTextFile | ( | const std::string & | file | ) | const [virtual] |
Save PDF's particles to a text file.
See derived classes for more information about the format of generated files.
Implements mrpt::poses::CPointPDF.
An ID for the landmark (see details next.
..) This ID was introduced in the version 3 of this class (21/NOV/2006), and its aim is to provide a way for easily establishing correspondences between landmarks detected in sequential image frames. Thus, the management of this field should be:
Note that this field is never fill out automatically, it must be set by the programmer if used.
Page generated by Doxygen 1.5.9 for MRPT 0.6.5 SVN:exported at Thu May 21 04:14:55 UTC 2009 |