Point Cloud Library (PCL)
1.12.1-dev
|
43 #include <pcl/common/transforms.h>
44 #include <pcl/registration/boost_graph.h>
45 #include <pcl/correspondence.h>
47 #include <pcl/pcl_base.h>
56 namespace registration {
107 template <
typename Po
intT>
110 using Ptr = shared_ptr<LUM<PointT>>;
131 boost::bidirectionalS,
137 using Vertex =
typename SLAMGraph::vertex_descriptor;
138 using Edge =
typename SLAMGraph::edge_descriptor;
142 LUM() : slam_graph_(new
SLAMGraph), max_iterations_(5), convergence_threshold_(0.0) {}
165 typename SLAMGraph::vertices_size_type
264 inline Eigen::Affine3f
282 const Vertex& target_vertex,
349 float convergence_threshold_;
354 #ifdef PCL_NO_PRECOMPILE
355 #include <pcl/registration/impl/lum.hpp>
Defines all the PCL and non-PCL macros used.
pcl::CorrespondencesPtr getCorrespondences(const Vertex &source_vertex, const Vertex &target_vertex) const
Return a set of correspondences from one of the SLAM graph's edges.
float getConvergenceThreshold() const
Get the convergence threshold for the compute() method.
typename PointCloud::Ptr PointCloudPtr
Globally Consistent Scan Matching based on an algorithm by Lu and Milios.
void setPose(const Vertex &vertex, const Eigen::Vector6f &pose)
Change a pose estimate on one of the SLAM graph's vertices.
typename SLAMGraph::vertex_descriptor Vertex
void setCorrespondences(const Vertex &source_vertex, const Vertex &target_vertex, const pcl::CorrespondencesPtr &corrs)
Add/change a set of correspondences for one of the SLAM graph's edges.
Eigen::Matrix< float, 6, 6 > Matrix6f
void setLoopGraph(const SLAMGraphPtr &slam_graph)
Set the internal SLAM graph structure.
PointCloud represents the base class in PCL for storing collections of 3D points.
void compute()
Perform LUM's globally consistent scan matching.
Eigen::Matrix6f incidenceCorrection(const Eigen::Vector6f &pose)
Returns a pose corrected 6DoF incidence matrix.
typename SLAMGraph::edge_descriptor Edge
Eigen::Matrix< float, 6, 1 > Vector6f
pcl::CorrespondencesPtr corrs_
PointCloudPtr getPointCloud(const Vertex &vertex) const
Return a point cloud from one of the SLAM graph's vertices.
shared_ptr< const LUM< PointT > > ConstPtr
typename PointCloud::ConstPtr PointCloudConstPtr
shared_ptr< SLAMGraph > SLAMGraphPtr
Vertex addPointCloud(const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())
Add a new point cloud to the SLAM graph.
Eigen::Vector6f getPose(const Vertex &vertex) const
Return a pose estimate from one of the SLAM graph's vertices.
Eigen::Affine3f getTransformation(const Vertex &vertex) const
Return a pose estimate from one of the SLAM graph's vertices as an affine transformation matrix.
void setPointCloud(const Vertex &vertex, const PointCloudPtr &cloud)
Change a point cloud on one of the SLAM graph's vertices.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
SLAMGraphPtr getLoopGraph() const
Get the internal SLAM graph structure.
shared_ptr< LUM< PointT > > Ptr
shared_ptr< PointCloud< PointT > > Ptr
void computeEdge(const Edge &e)
Linearized computation of C^-1 and C^-1*D (results stored in slam_graph_).
PointCloudPtr getTransformedCloud(const Vertex &vertex) const
Return a point cloud from one of the SLAM graph's vertices compounded onto its current pose estimate.
shared_ptr< const PointCloud< PointT > > ConstPtr
int getMaxIterations() const
Get the maximum number of iterations for the compute() method.
void setMaxIterations(int max_iterations)
Set the maximum number of iterations for the compute() method.
void setConvergenceThreshold(float convergence_threshold)
Set the convergence threshold for the compute() method.
SLAMGraph::vertices_size_type getNumVertices() const
Get the number of vertices in the SLAM graph.
shared_ptr< Correspondences > CorrespondencesPtr
Defines functions, macros and traits for allocating and using memory.
PointCloudPtr getConcatenatedCloud() const
Return a concatenated point cloud of all the SLAM graph's point clouds compounded onto their current ...
boost::adjacency_list< boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS > SLAMGraph