43 #include <boost/graph/adjacency_list.hpp>
44 #include <boost/graph/graph_traits.hpp>
45 #include <boost/shared_ptr.hpp>
47 #include <Eigen/Geometry>
57 namespace registration
63 template <
typename Po
intT>
67 typedef boost::shared_ptr< ELCH<PointT> >
Ptr;
68 typedef boost::shared_ptr< const ELCH<PointT> >
ConstPtr;
81 typedef boost::adjacency_list<
82 boost::listS, boost::vecS, boost::undirectedS,
100 compute_loop_ (true),
110 typename boost::graph_traits<LoopGraph>::vertex_descriptor vd = add_vertex (*loop_graph_);
111 (*loop_graph_)[vd].cloud = cloud;
112 if (num_vertices (*loop_graph_) > 1)
113 add_edge (vd_, vd, *loop_graph_);
121 return (loop_graph_);
130 loop_graph_ = loop_graph;
134 inline typename boost::graph_traits<LoopGraph>::vertex_descriptor
137 return (loop_start_);
144 setLoopStart (
const typename boost::graph_traits<LoopGraph>::vertex_descriptor &loop_start)
146 loop_start_ = loop_start;
150 inline typename boost::graph_traits<LoopGraph>::vertex_descriptor
160 setLoopEnd (
const typename boost::graph_traits<LoopGraph>::vertex_descriptor &loop_end)
162 loop_end_ = loop_end;
182 inline Eigen::Matrix4f
185 return (loop_transform_);
194 loop_transform_ = loop_transform;
195 compute_loop_ =
false;
214 typedef boost::adjacency_list<
215 boost::listS, boost::vecS, boost::undirectedS,
217 boost::property< boost::edge_weight_t, double > >
228 loopOptimizerAlgorithm (LOAGraph &g,
double *weights);
234 typename boost::graph_traits<LoopGraph>::vertex_descriptor loop_start_;
237 typename boost::graph_traits<LoopGraph>::vertex_descriptor loop_end_;
243 Eigen::Matrix4f loop_transform_;
247 typename boost::graph_traits<LoopGraph>::vertex_descriptor vd_;
250 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
257 #endif // PCL_ELCH_H_