43 #include <pcl/common/transforms.h>
44 #include <pcl/registration/boost_graph.h>
45 #include <pcl/correspondence.h>
46 #include <pcl/memory.h>
47 #include <pcl/pcl_base.h>
48 #include <pcl/pcl_macros.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>
shared_ptr< LUM< PointT >> Ptr
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.
pcl::CorrespondencesPtr corrs_
boost::adjacency_list< boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS > SLAMGraph
shared_ptr< PointCloud< PointT > > Ptr
typename PointCloud::Ptr PointCloudPtr
int getMaxIterations() const
Get 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...
Eigen::Matrix< float, 6, 6 > Matrix6f
void compute()
Perform LUM's globally consistent scan matching.
Globally Consistent Scan Matching based on an algorithm by Lu and Milios.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
PointCloudPtr getPointCloud(const Vertex &vertex) const
Return a point cloud from one of the SLAM graph's vertices.
typename SLAMGraph::edge_descriptor Edge
void setLoopGraph(const SLAMGraphPtr &slam_graph)
Set the internal SLAM graph structure.
typename SLAMGraph::vertex_descriptor Vertex
Eigen::Matrix6f incidenceCorrection(const Eigen::Vector6f &pose)
Returns a pose corrected 6DoF incidence matrix.
PointCloudPtr getConcatenatedCloud() const
Return a concatenated point cloud of all the SLAM graph's point clouds compounded onto their current ...
Eigen::Matrix< float, 6, 1 > Vector6f
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.
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...
SLAMGraph::vertices_size_type getNumVertices() const
Get the number of vertices in the SLAM graph.
Vertex addPointCloud(const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())
Add a new point cloud to the SLAM graph.
SLAMGraphPtr getLoopGraph() const
Get the internal SLAM graph structure.
typename PointCloud::ConstPtr PointCloudConstPtr
void setPointCloud(const Vertex &vertex, const PointCloudPtr &cloud)
Change a point cloud on one of the SLAM graph's vertices.
PointCloud represents the base class in PCL for storing collections of 3D points. ...
shared_ptr< SLAMGraph > SLAMGraphPtr
void setMaxIterations(int max_iterations)
Set the maximum number of iterations for the compute() method.
void computeEdge(const Edge &e)
Linearized computation of C^-1 and C^-1*D (results stored in slam_graph_).
void setConvergenceThreshold(float convergence_threshold)
Set the convergence threshold for the compute() method.
shared_ptr< const PointCloud< PointT > > ConstPtr
float getConvergenceThreshold() const
Get the convergence threshold for the compute() method.
shared_ptr< Correspondences > CorrespondencesPtr
shared_ptr< const LUM< PointT >> ConstPtr
void setPose(const Vertex &vertex, const Eigen::Vector6f &pose)
Change a pose estimate on one of the SLAM graph's vertices.