45 #include <pcl/pcl_base.h> 46 #include <pcl/registration/eigen.h> 47 #include <pcl/registration/boost.h> 48 #include <pcl/common/transforms.h> 49 #include <pcl/correspondence.h> 50 #include <pcl/registration/boost_graph.h> 60 namespace registration
110 template<
typename Po
intT>
114 using Ptr = shared_ptr<LUM<PointT> >;
135 using SLAMGraph = boost::adjacency_list<boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS>;
137 using Vertex =
typename SLAMGraph::vertex_descriptor;
138 using Edge =
typename SLAMGraph::edge_descriptor;
144 , max_iterations_ (5)
145 , convergence_threshold_ (0.0)
170 typename SLAMGraph::vertices_size_type
259 inline Eigen::Affine3f
275 const Vertex &target_vertex,
338 float convergence_threshold_;
343 #ifdef PCL_NO_PRECOMPILE 344 #include <pcl/registration/impl/lum.hpp> PointCloudPtr getConcatenatedCloud() const
Return a concatenated point cloud of all the SLAM graph's point clouds compounded onto their current ...
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
Defines functions, macros and traits for allocating and using memory.
typename PointCloud::Ptr PointCloudPtr
PointCloudPtr getPointCloud(const Vertex &vertex) const
Return a point cloud from one of the SLAM graph's vertices.
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.
shared_ptr< const LUM< PointT > > ConstPtr
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
typename SLAMGraph::edge_descriptor Edge
void setLoopGraph(const SLAMGraphPtr &slam_graph)
Set the internal SLAM graph structure.
typename SLAMGraph::vertex_descriptor Vertex
Eigen::Vector6f getPose(const Vertex &vertex) const
Return a pose estimate from one of the SLAM graph's vertices.
Eigen::Matrix6f incidenceCorrection(const Eigen::Vector6f &pose)
Returns a pose corrected 6DoF incidence matrix.
Eigen::Affine3f getTransformation(const Vertex &vertex) const
Return a pose estimate from one of the SLAM graph's vertices as an affine transformation matrix...
Eigen::Matrix< float, 6, 1 > Vector6f
shared_ptr< LUM< PointT > > Ptr
Vertex addPointCloud(const PointCloudPtr &cloud, const Eigen::Vector6f &pose=Eigen::Vector6f::Zero())
Add a new point cloud to the SLAM graph.
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. ...
int getMaxIterations() const
Get the maximum number of iterations for the compute() method.
shared_ptr< SLAMGraph > SLAMGraphPtr
SLAMGraphPtr getLoopGraph() const
Get the internal SLAM graph structure.
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
SLAMGraph::vertices_size_type getNumVertices() const
Get the number of vertices in the 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...
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.
void setPose(const Vertex &vertex, const Eigen::Vector6f &pose)
Change a pose estimate on one of the SLAM graph's vertices.