44 #include <pcl/pcl_base.h>
45 #include <pcl/point_types.h>
46 #include <pcl/point_cloud.h>
47 #include <pcl/registration/registration.h>
48 #include <pcl/registration/boost.h>
49 #include <pcl/registration/eigen.h>
50 #include <pcl/registration/icp.h>
51 #include <pcl/registration/boost_graph.h>
55 namespace registration
61 template <
typename Po
intT>
65 typedef boost::shared_ptr< ELCH<PointT> >
Ptr;
66 typedef boost::shared_ptr< const ELCH<PointT> >
ConstPtr;
79 typedef boost::adjacency_list<
111 typename boost::graph_traits<LoopGraph>::vertex_descriptor vd = add_vertex (*loop_graph_);
112 (*loop_graph_)[vd].cloud = cloud;
113 if (num_vertices (*loop_graph_) > 1)
114 add_edge (vd_, vd, *loop_graph_);
122 return (loop_graph_);
131 loop_graph_ = loop_graph;
135 inline typename boost::graph_traits<LoopGraph>::vertex_descriptor
138 return (loop_start_);
145 setLoopStart (
const typename boost::graph_traits<LoopGraph>::vertex_descriptor &loop_start)
147 loop_start_ = loop_start;
151 inline typename boost::graph_traits<LoopGraph>::vertex_descriptor
161 setLoopEnd (
const typename boost::graph_traits<LoopGraph>::vertex_descriptor &loop_end)
163 loop_end_ = loop_end;
183 inline Eigen::Matrix4f
186 return (loop_transform_);
195 loop_transform_ = loop_transform;
196 compute_loop_ =
false;
215 typedef boost::adjacency_list<
216 boost::listS, boost::vecS, boost::undirectedS,
218 boost::property< boost::edge_weight_t, double > >
229 loopOptimizerAlgorithm (LOAGraph &g,
double *weights);
235 typename boost::graph_traits<LoopGraph>::vertex_descriptor loop_start_;
238 typename boost::graph_traits<LoopGraph>::vertex_descriptor loop_end_;
244 Eigen::Matrix4f loop_transform_;
248 typename boost::graph_traits<LoopGraph>::vertex_descriptor vd_;
251 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
256 #include <pcl/registration/impl/elch.hpp>
258 #endif // PCL_ELCH_H_