MRPT logo

mrpt::poses Namespace Reference

Classes for 2D/3D geometry representation, both of single values and probability density distributions (PDFs) in many forms. More...


Classes

class  CNetworkOfPoses
 A network of links constraining the relative pose of pairs of nodes, indentified by their numeric IDs (of type size_t). More...
class  CPoint
 A virtual base class to represent a point in 2D or 3D. More...
class  CPoint2D
 A class used to store a 2D point. More...
class  CPoint2DPDF
 Declares a class that represents a Probability Distribution function (PDF) of a 2D point (x,y). More...
class  CPoint2DPDFGaussian
 A gaussian distribution for 2D points. More...
class  CPoint3D
 A class used to store a 3D point. More...
class  CPointPDF
 Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x,y,z). More...
class  CPointPDFGaussian
 A gaussian distribution for 3D points. More...
class  TSimple3DPoint
 Data within each particle. More...
class  CPointPDFParticles
 A probability distribution of a 2D/3D point, represented as a set of random samples (particles). More...
class  CPointPDFSOG
 Declares a class that represents a Probability Density function (PDF) of a 3D point $ p(\mathbf{x}) = [x ~ y ~ z ]^t $. More...
class  CPose
 A virtual base class to represent a pose in 2D or 3D. More...
class  CPose2D
 A class used to store a 2D pose. More...
class  CPose2DGridTemplate
 This is a template class for storing a 3D (2D+heading) grid containing any kind of data. More...
class  CPose3D
 A class used to store a 3D pose. More...
class  CPose3DInterpolator
 A trajectory in time and in 6D (CPose3D) that interpolates using splines the intervals between a set of given time-referenced poses. More...
class  CPose3DPDF
 Declares a class that represents a Probability Density Function (PDF) of a 3D pose (6D actually). More...
class  CPose3DPDFGaussian
 Declares a class that represents a Probability Density function (PDF) of a 3D pose $ p(\mathbf{x}) = [x ~ y ~ z ~ yaw ~ pitch ~ roll]^t $. More...
class  CPose3DPDFParticles
 Declares a class that represents a Probability Density function (PDF) of a 3D pose This class implements that PDF using a set of m_particles (for using particle filter methods), where M weighted m_particles represent the PDF. More...
class  CPose3DPDFSOG
 Declares a class that represents a Probability Density function (PDF) of a 3D(6D) pose $ p(\mathbf{x}) = [x ~ y ~ z ~ yaw ~ pitch ~ roll]^t $. More...
class  CPoseOrPoint
 The base class for 2D points, 3D points, 2D poses and 3D poses. More...
class  CPosePDF
 Declares a class that represents a probability density function (pdf) of a 2D pose (x,y,phi). More...
class  CPosePDFGaussian
 Declares a class that represents a Probability Density function (PDF) of a 2D pose $ p(\mathbf{x}) = [x ~ y ~ \phi ]^t $. More...
class  CPosePDFGrid
 Declares a class that represents a Probability Distribution function (PDF) of a 2D pose (x,y,phi). More...
class  CPosePDFParticles
 Declares a class that represents a Probability Density Function (PDF) over a 2D pose (x,y,phi), using a set of weighted samples. More...
class  CPosePDFSOG
 Declares a class that represents a Probability Density function (PDF) of a 2D pose $ p(\mathbf{x}) = [x ~ y ~ \phi ]^t $. More...
class  CPoseRandomSampler
 An efficient generator of random samples drawn from a given 2D (CPosePDF) or 3D (CPose3DPDF) pose probability density function (pdf). More...
class  CPoses2DSequence
 This class stores a sequence of relative, incremental 2D poses. More...
class  CPoses3DSequence
 This class stores a sequence of relative, incremental 3D poses. More...

Typedefs

typedef CNetworkOfPoses
< CPosePDFGaussian
CNetworkOfPoses2D
 The specialization of CNetworkOfPoses for poses of type CPosePDFGaussian.
typedef CNetworkOfPoses
< CPose3DPDFGaussian
CNetworkOfPoses3D
 The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussian.
typedef std::pair
< mrpt::system::TTimeStamp,
mrpt::poses::CPose3D
TTimePosePair
typedef CProbabilityParticle
< CPose3D
CPose3DParticle
 A type definition for m_particles containing a 3D pose.

Functions

template<class CPOSE >
double MRPTDLLIMPEXP optimizePoseGraph_levmarq (const CNetworkOfPoses< CPOSE > &pose_graph, std::map< size_t, CPOSE > &optimal_poses, const size_t max_iterations=100, const size_t origin_pose=static_cast< size_t >(-1))
 An algorithm for optimizing a network of 2D or 3D pose links based on Levenberg-Marquardt error minimization.
template<class CPOSE >
double MRPTDLLIMPEXP optimizePoseGraph_stogradesc (const CNetworkOfPoses< CPOSE > &pose_graph, std::map< size_t, CPOSE > &optimal_poses, const size_t max_iterations=100, const size_t origin_pose=static_cast< size_t >(-1))
 An algorithm for optimizing a network of 2D or 3D pose links based on stochastic gradient descent.
std::ostream MRPTDLLIMPEXP & operator<< (std::ostream &o, const CPoint2D &p)
 Textual output stream function.
bool MRPTDLLIMPEXP operator< (const CPoint2D &a, const CPoint2D &b)
 Used by STL algorithms.
bool MRPTDLLIMPEXP operator== (const CPoint2D &p1, const CPoint2D &p2)
bool MRPTDLLIMPEXP operator!= (const CPoint2D &p1, const CPoint2D &p2)
std::ostream MRPTDLLIMPEXP & operator<< (std::ostream &o, const CPoint3D &p)
bool MRPTDLLIMPEXP operator== (const CPoint3D &p1, const CPoint3D &p2)
bool MRPTDLLIMPEXP operator!= (const CPoint3D &p1, const CPoint3D &p2)
std::ostream MRPTDLLIMPEXP & operator<< (std::ostream &o, const CPose2D &p)
CPose2D MRPTDLLIMPEXP operator- (const CPose2D &p)
 Unary - operator: return the inverse pose "-p" (Note that is NOT the same than a pose with negative x y phi).
bool MRPTDLLIMPEXP operator== (const CPose2D &p1, const CPose2D &p2)
bool MRPTDLLIMPEXP operator!= (const CPose2D &p1, const CPose2D &p2)
std::ostream MRPTDLLIMPEXP & operator<< (std::ostream &o, const CPose3D &p)
CPose3D MRPTDLLIMPEXP operator- (const CPose3D &p)
 Unary - operator: return the inverse pose "-p" (Note that is NOT the same than a pose with negative x y z yaw pitch roll).
bool MRPTDLLIMPEXP operator== (const CPose3D &p1, const CPose3D &p2)
bool MRPTDLLIMPEXP operator!= (const CPose3D &p1, const CPose3D &p2)
CPose3DPDFGaussian MRPTDLLIMPEXP operator+ (const CPose3DPDFGaussian &x, const CPose3DPDFGaussian &u)
 Pose composition for two 3D pose Gaussians (see formulas on the top of this page).
std::ostream MRPTDLLIMPEXP & operator<< (std::ostream &out, const CPose3DPDFGaussian &obj)
 Dumps the mean and covariance matrix to a text stream.
bool MRPTDLLIMPEXP operator== (const CPose3DPDFGaussian &p1, const CPose3DPDFGaussian &p2)
std::ostream & operator<< (std::ostream &out, const CPosePDFGaussian &obj)
 Dumps the mean and covariance matrix to a text stream.
poses::CPosePDFGaussian operator+ (const mrpt::poses::CPose2D &A, const mrpt::poses::CPosePDFGaussian &B)
 Returns the Gaussian distribution of $ \mathbf{C} $, for $ \mathbf{C} = \mathbf{A} \oplus \mathbf{B} $.
bool MRPTDLLIMPEXP operator== (const CPosePDFGaussian &p1, const CPosePDFGaussian &p2)

Variables

class MRPTDLLIMPEXP CPose2D
class MRPTDLLIMPEXP CPose3D
class MRPTDLLIMPEXP CPoint2D
class MRPTDLLIMPEXP CPoint3D


Detailed Description

Classes for 2D/3D geometry representation, both of single values and probability density distributions (PDFs) in many forms.


Typedef Documentation

The specialization of CNetworkOfPoses for poses of type CPosePDFGaussian.

Definition at line 58 of file constrained_pose_network.h.

The specialization of CNetworkOfPoses for poses of type CPose3DPDFGaussian.

Definition at line 59 of file constrained_pose_network.h.

A type definition for m_particles containing a 3D pose.

Definition at line 54 of file CPose3DPDFParticles.h.

Definition at line 42 of file CPose3DInterpolator.h.


Function Documentation

bool MRPTDLLIMPEXP mrpt::poses::operator!= ( const CPose3D &  p1,
const CPose3D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator!= ( const CPose2D &  p1,
const CPose2D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator!= ( const CPoint3D &  p1,
const CPoint3D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator!= ( const CPoint2D &  p1,
const CPoint2D &  p2 
)

poses::CPosePDFGaussian mrpt::poses::operator+ ( const mrpt::poses::CPose2D A,
const mrpt::poses::CPosePDFGaussian B 
)

Returns the Gaussian distribution of $ \mathbf{C} $, for $ \mathbf{C} = \mathbf{A} \oplus \mathbf{B} $.

CPose3DPDFGaussian MRPTDLLIMPEXP mrpt::poses::operator+ ( const CPose3DPDFGaussian &  x,
const CPose3DPDFGaussian &  u 
)

Pose composition for two 3D pose Gaussians (see formulas on the top of this page).

See also:
CPose3DPDFGaussian::operator +=

CPose3D MRPTDLLIMPEXP mrpt::poses::operator- ( const CPose3D &  p  ) 

Unary - operator: return the inverse pose "-p" (Note that is NOT the same than a pose with negative x y z yaw pitch roll).

CPose2D MRPTDLLIMPEXP mrpt::poses::operator- ( const CPose2D &  p  ) 

Unary - operator: return the inverse pose "-p" (Note that is NOT the same than a pose with negative x y phi).

bool MRPTDLLIMPEXP mrpt::poses::operator< ( const CPoint2D &  a,
const CPoint2D &  b 
)

Used by STL algorithms.

std::ostream& mrpt::poses::operator<< ( std::ostream &  out,
const CPosePDFGaussian &  obj 
)

Dumps the mean and covariance matrix to a text stream.

std::ostream MRPTDLLIMPEXP& mrpt::poses::operator<< ( std::ostream &  out,
const CPose3DPDFGaussian &  obj 
)

Dumps the mean and covariance matrix to a text stream.

std::ostream MRPTDLLIMPEXP& mrpt::poses::operator<< ( std::ostream &  o,
const CPose3D &  p 
)

std::ostream MRPTDLLIMPEXP& mrpt::poses::operator<< ( std::ostream &  o,
const CPose2D &  p 
)

std::ostream MRPTDLLIMPEXP& mrpt::poses::operator<< ( std::ostream &  o,
const CPoint3D &  p 
)

std::ostream MRPTDLLIMPEXP& mrpt::poses::operator<< ( std::ostream &  o,
const CPoint2D &  p 
)

Textual output stream function.

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPosePDFGaussian &  p1,
const CPosePDFGaussian &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPose3DPDFGaussian &  p1,
const CPose3DPDFGaussian &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPose3D &  p1,
const CPose3D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPose2D &  p1,
const CPose2D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPoint3D &  p1,
const CPoint3D &  p2 
)

bool MRPTDLLIMPEXP mrpt::poses::operator== ( const CPoint2D &  p1,
const CPoint2D &  p2 
)

template<class CPOSE >
double MRPTDLLIMPEXP mrpt::poses::optimizePoseGraph_levmarq ( const CNetworkOfPoses< CPOSE > &  pose_graph,
std::map< size_t, CPOSE > &  optimal_poses,
const size_t  max_iterations = 100,
const size_t  origin_pose = static_cast< size_t >(-1) 
) [inline]

An algorithm for optimizing a network of 2D or 3D pose links based on Levenberg-Marquardt error minimization.

It is computed the list of optimal, consistent global coordinates for each node in the graph. Relative poses are represented by Gaussians with a mean and a covariance, which is also taken into account in the optimization.

The algorithm can be seen as an extension to the work of Lu & Milios

  • Globally Consistent Range Scan Alignment for Environment Mapping, 1997.

Parameters:
pose_graph [IN] The graph of pose constraints. It can be of either type CNetworkOfPoses2D or CNetworkOfPoses3D.
optimal_poses [OUT] The consistent, global coordinates of all the pose nodes in the graph.
origin_pose [IN] Due to the degrees of freedom, one arbitrary pose is set to the origin (0,0,0). This parameter defines the pose ID of the pose to be taken as the origin, and the default value (ID:-1) will select the reference pose in the first link in pose_graph.
max_iterations [IN] The maximum number of iterations. If it is set to 0, the global poses computed as initial values from Dijkstra will be returned.
Note:
Output covariances should be not considered, they are not computed yet.
Returns:
The average square root error in the optimized pose network.
See also:
optimizePoseGraph_stogradesc

template<class CPOSE >
double MRPTDLLIMPEXP mrpt::poses::optimizePoseGraph_stogradesc ( const CNetworkOfPoses< CPOSE > &  pose_graph,
std::map< size_t, CPOSE > &  optimal_poses,
const size_t  max_iterations = 100,
const size_t  origin_pose = static_cast< size_t >(-1) 
) [inline]

An algorithm for optimizing a network of 2D or 3D pose links based on stochastic gradient descent.

It is computed the list of optimal, consistent global coordinates for each node in the graph. Relative poses are represented by Gaussians with a mean and a covariance, which is also taken into account in the optimization.

This class is a C++ implementation of the work proposed in the paper:

  • Edwin Olson, John Leonard, Seth Teller, "Fast Iterative Optimization of Pose Graphs with Poor Initial Estimates", ICRA 2006.

Parameters:
pose_graph [IN] The graph of pose constraints. It can be of either type CNetworkOfPoses2D or CNetworkOfPoses3D.
optimal_poses [OUT] The consistent, global coordinates of all the pose nodes in the graph.
origin_pose [IN] Due to the degrees of freedom, one arbitrary pose is set to the origin (0,0,0). This parameter defines the pose ID of the pose to be taken as the origin, and the default value (ID:-1) will select the reference pose in the first link in pose_graph.
max_iterations [IN] The maximum number of iterations. If it is set to 0, the global poses computed as initial values from Dijkstra will be returned.
Returns:
The average square root error in the optimized pose network.
See also:
optimizePoseGraph_levmarq


Variable Documentation

class MRPTDLLIMPEXP mrpt::poses::CPoint2D

Definition at line 41 of file CMatrix.h.

class MRPTDLLIMPEXP mrpt::poses::CPoint3D

Definition at line 42 of file CMatrix.h.

class MRPTDLLIMPEXP mrpt::poses::CPose2D

Definition at line 39 of file CMatrix.h.

Referenced by mrpt::math::project2D().

class MRPTDLLIMPEXP mrpt::poses::CPose3D




Page generated by Doxygen 1.5.9 for MRPT 0.7.1 SVN: at Mon Aug 17 22:20:53 EDT 2009