41 #ifndef PCL_REGISTRATION_LUM_H_ 42 #define PCL_REGISTRATION_LUM_H_ 44 #include <pcl/pcl_base.h> 45 #include <pcl/registration/eigen.h> 46 #include <pcl/registration/boost.h> 47 #include <pcl/common/transforms.h> 48 #include <pcl/correspondence.h> 49 #include <pcl/registration/boost_graph.h> 59 namespace registration
109 template<
typename Po
intT>
113 typedef boost::shared_ptr<LUM<PointT> >
Ptr;
114 typedef boost::shared_ptr<const LUM<PointT> >
ConstPtr;
124 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
131 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
134 typedef boost::adjacency_list<boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS>
SLAMGraph;
136 typedef typename SLAMGraph::vertex_descriptor
Vertex;
137 typedef typename SLAMGraph::edge_descriptor
Edge;
142 : slam_graph_ (new SLAMGraph)
143 , max_iterations_ (5)
144 , convergence_threshold_ (0.0)
155 setLoopGraph (
const SLAMGraphPtr &slam_graph);
164 getLoopGraph ()
const;
169 typename SLAMGraph::vertices_size_type
170 getNumVertices ()
const;
177 setMaxIterations (
int max_iterations);
184 getMaxIterations ()
const;
192 setConvergenceThreshold (
float convergence_threshold);
200 getConvergenceThreshold ()
const;
214 addPointCloud (
const PointCloudPtr &cloud,
const Eigen::Vector6f &pose = Eigen::Vector6f::Zero ());
224 setPointCloud (
const Vertex &vertex,
const PointCloudPtr &cloud);
232 getPointCloud (
const Vertex &vertex)
const;
251 getPose (
const Vertex &vertex)
const;
258 inline Eigen::Affine3f
273 setCorrespondences (
const Vertex &source_vertex,
274 const Vertex &target_vertex,
284 getCorrespondences (
const Vertex &source_vertex,
const Vertex &target_vertex)
const;
312 getTransformedCloud (
const Vertex &vertex)
const;
318 getConcatenatedCloud ()
const;
323 computeEdge (
const Edge &e);
331 SLAMGraphPtr slam_graph_;
337 float convergence_threshold_;
342 #ifdef PCL_NO_PRECOMPILE 343 #include <pcl/registration/impl/lum.hpp> 346 #endif // PCL_REGISTRATION_LUM_H_
pcl::CorrespondencesPtr corrs_
boost::shared_ptr< const LUM< PointT > > ConstPtr
Eigen::Matrix< float, 6, 6 > Matrix6f
PointCloud::Ptr PointCloudPtr
Eigen::Matrix< float, 6, 1 > Vector6f
Globally Consistent Scan Matching based on an algorithm by Lu and Milios.
boost::shared_ptr< PointCloud< PointT > > Ptr
PointCloud::ConstPtr PointCloudConstPtr
SLAMGraph::edge_descriptor Edge
boost::adjacency_list< boost::eigen_vecS, boost::eigen_vecS, boost::bidirectionalS, VertexProperties, EdgeProperties, boost::no_property, boost::eigen_listS > SLAMGraph
boost::shared_ptr< LUM< PointT > > Ptr
boost::shared_ptr< const PointCloud< PointT > > ConstPtr
boost::shared_ptr< Correspondences > CorrespondencesPtr
PointCloud represents the base class in PCL for storing collections of 3D points. ...
SLAMGraph::vertex_descriptor Vertex
pcl::PointCloud< PointT > PointCloud
void getTransformation(Scalar x, Scalar y, Scalar z, Scalar roll, Scalar pitch, Scalar yaw, Eigen::Transform< Scalar, 3, Eigen::Affine > &t)
Create a transformation from the given translation and Euler angles (XYZ-convention) ...
boost::shared_ptr< SLAMGraph > SLAMGraphPtr