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