Point Cloud Library (PCL)  1.11.1-dev
transformation_estimation_point_to_plane_weighted.h
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2009-2012, Willow Garage, Inc.
6  * Copyright (c) 2012-, Open Perception, Inc.
7  * Copyright (c) Alexandru-Eugen Ichim
8  *
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * * Redistributions of source code must retain the above copyright
16  * notice, this list of conditions and the following disclaimer.
17  * * Redistributions in binary form must reproduce the above
18  * copyright notice, this list of conditions and the following
19  * disclaimer in the documentation and/or other materials provided
20  * with the distribution.
21  * * Neither the name of the copyright holder(s) nor the names of its
22  * contributors may be used to endorse or promote products derived
23  * from this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
28  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
29  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
30  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
31  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
35  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36  * POSSIBILITY OF SUCH DAMAGE.
37  */
38 
39 #pragma once
40 
41 #include <pcl/registration/distances.h>
42 #include <pcl/registration/transformation_estimation_point_to_plane.h>
43 #include <pcl/registration/warp_point_rigid.h>
44 #include <pcl/memory.h>
45 #include <pcl/pcl_macros.h>
46 
47 namespace pcl {
48 namespace registration {
49 /** @b TransformationEstimationPointToPlaneWeighted uses Levenberg Marquardt
50  * optimization to find the transformation that minimizes the point-to-plane distance
51  * between the given correspondences. In addition to the
52  * TransformationEstimationPointToPlane class, this version takes per-correspondence
53  * weights and optimizes accordingly.
54  *
55  * \author Alexandru-Eugen Ichim
56  * \ingroup registration
57  */
58 template <typename PointSource, typename PointTarget, typename MatScalar = float>
60 : public TransformationEstimationPointToPlane<PointSource, PointTarget, MatScalar> {
62  using PointCloudSourcePtr = typename PointCloudSource::Ptr;
63  using PointCloudSourceConstPtr = typename PointCloudSource::ConstPtr;
64 
66 
67  using PointIndicesPtr = PointIndices::Ptr;
68  using PointIndicesConstPtr = PointIndices::ConstPtr;
69 
70 public:
71  using Ptr = shared_ptr<TransformationEstimationPointToPlaneWeighted<PointSource,
72  PointTarget,
73  MatScalar>>;
74  using ConstPtr =
75  shared_ptr<const TransformationEstimationPointToPlaneWeighted<PointSource,
76  PointTarget,
77  MatScalar>>;
78 
79  using VectorX = Eigen::Matrix<MatScalar, Eigen::Dynamic, 1>;
80  using Vector4 = Eigen::Matrix<MatScalar, 4, 1>;
81  using Matrix4 =
83 
84  /** \brief Constructor. */
86 
87  /** \brief Copy constructor.
88  * \param[in] src the TransformationEstimationPointToPlaneWeighted object to copy into
89  * this
90  */
93  : tmp_src_(src.tmp_src_)
94  , tmp_tgt_(src.tmp_tgt_)
100 
101  /** \brief Copy operator.
102  * \param[in] src the TransformationEstimationPointToPlaneWeighted object to copy into
103  * this
104  */
107  {
108  tmp_src_ = src.tmp_src_;
109  tmp_tgt_ = src.tmp_tgt_;
112  warp_point_ = src.warp_point_;
115  }
116 
117  /** \brief Destructor. */
119 
120  /** \brief Estimate a rigid rotation transformation between a source and a target
121  * point cloud using LM. \param[in] cloud_src the source point cloud dataset
122  * \param[in] cloud_tgt the target point cloud dataset
123  * \param[out] transformation_matrix the resultant transformation matrix
124  * \note Uses the weights given by setWeights.
125  */
126  inline void
128  const pcl::PointCloud<PointTarget>& cloud_tgt,
129  Matrix4& transformation_matrix) const;
130 
131  /** \brief Estimate a rigid rotation transformation between a source and a target
132  * point cloud using LM. \param[in] cloud_src the source point cloud dataset
133  * \param[in] indices_src the vector of indices describing the points of interest in
134  * \a cloud_src \param[in] cloud_tgt the target point cloud dataset \param[out]
135  * transformation_matrix the resultant transformation matrix \note Uses the weights
136  * given by setWeights.
137  */
138  inline void
140  const std::vector<int>& indices_src,
141  const pcl::PointCloud<PointTarget>& cloud_tgt,
142  Matrix4& transformation_matrix) const;
143 
144  /** \brief Estimate a rigid rotation transformation between a source and a target
145  * point cloud using LM. \param[in] cloud_src the source point cloud dataset
146  * \param[in] indices_src the vector of indices describing the points of interest in
147  * \a cloud_src \param[in] cloud_tgt the target point cloud dataset \param[in]
148  * indices_tgt the vector of indices describing the correspondences of the interest
149  * points from \a indices_src \param[out] transformation_matrix the resultant
150  * transformation matrix \note Uses the weights given by setWeights.
151  */
152  void
154  const std::vector<int>& indices_src,
155  const pcl::PointCloud<PointTarget>& cloud_tgt,
156  const std::vector<int>& indices_tgt,
157  Matrix4& transformation_matrix) const;
158 
159  /** \brief Estimate a rigid rotation transformation between a source and a target
160  * point cloud using LM. \param[in] cloud_src the source point cloud dataset
161  * \param[in] cloud_tgt the target point cloud dataset
162  * \param[in] correspondences the vector of correspondences between source and target
163  * point cloud \param[out] transformation_matrix the resultant transformation matrix
164  * \note Uses the weights given by setWeights.
165  */
166  void
168  const pcl::PointCloud<PointTarget>& cloud_tgt,
169  const pcl::Correspondences& correspondences,
170  Matrix4& transformation_matrix) const;
171 
172  inline void
173  setWeights(const std::vector<double>& weights)
174  {
175  correspondence_weights_ = weights;
176  }
177 
178  /// use the weights given in the pcl::CorrespondencesPtr for one of the
179  /// estimateTransformation (...) methods
180  inline void
181  setUseCorrespondenceWeights(bool use_correspondence_weights)
182  {
183  use_correspondence_weights_ = use_correspondence_weights;
184  }
185 
186  /** \brief Set the function we use to warp points. Defaults to rigid 6D warp.
187  * \param[in] warp_fcn a shared pointer to an object that warps points
188  */
189  void
192  {
193  warp_point_ = warp_fcn;
194  }
195 
196 protected:
198  mutable std::vector<double> correspondence_weights_;
199 
200  /** \brief Temporary pointer to the source dataset. */
201  mutable const PointCloudSource* tmp_src_;
202 
203  /** \brief Temporary pointer to the target dataset. */
204  mutable const PointCloudTarget* tmp_tgt_;
205 
206  /** \brief Temporary pointer to the source dataset indices. */
207  mutable const std::vector<int>* tmp_idx_src_;
208 
209  /** \brief Temporary pointer to the target dataset indices. */
210  mutable const std::vector<int>* tmp_idx_tgt_;
211 
212  /** \brief The parameterized function used to warp the source to the target. */
215 
216  /** Base functor all the models that need non linear optimization must
217  * define their own one and implement operator() (const Eigen::VectorXd& x,
218  * Eigen::VectorXd& fvec) or operator() (const Eigen::VectorXf& x, Eigen::VectorXf&
219  * fvec) depending on the chosen _Scalar
220  */
221  template <typename _Scalar, int NX = Eigen::Dynamic, int NY = Eigen::Dynamic>
222  struct Functor {
223  using Scalar = _Scalar;
225  using InputType = Eigen::Matrix<_Scalar, InputsAtCompileTime, 1>;
226  using ValueType = Eigen::Matrix<_Scalar, ValuesAtCompileTime, 1>;
227  using JacobianType =
228  Eigen::Matrix<_Scalar, ValuesAtCompileTime, InputsAtCompileTime>;
229 
230  /** \brief Empty Constructor. */
232 
233  /** \brief Constructor
234  * \param[in] m_data_points number of data points to evaluate.
235  */
236  Functor(int m_data_points) : m_data_points_(m_data_points) {}
237 
238  /** \brief Destructor. */
239  virtual ~Functor() {}
240 
241  /** \brief Get the number of values. */
242  int
243  values() const
244  {
245  return (m_data_points_);
246  }
247 
248  protected:
250  };
251 
252  struct OptimizationFunctor : public Functor<MatScalar> {
254 
255  /** Functor constructor
256  * \param[in] m_data_points the number of data points to evaluate
257  * \param[in,out] estimator pointer to the estimator object
258  */
259  OptimizationFunctor(int m_data_points,
261  : Functor<MatScalar>(m_data_points), estimator_(estimator)
262  {}
263 
264  /** Copy constructor
265  * \param[in] src the optimization functor to copy into this
266  */
268  : Functor<MatScalar>(src.m_data_points_), estimator_()
269  {
270  *this = src;
271  }
272 
273  /** Copy operator
274  * \param[in] src the optimization functor to copy into this
275  */
276  inline OptimizationFunctor&
278  {
280  estimator_ = src.estimator_;
281  return (*this);
282  }
283 
284  /** \brief Destructor. */
285  virtual ~OptimizationFunctor() {}
286 
287  /** Fill fvec from x. For the current state vector x fill the f values
288  * \param[in] x state vector
289  * \param[out] fvec f values vector
290  */
291  int
292  operator()(const VectorX& x, VectorX& fvec) const;
293 
295  PointTarget,
296  MatScalar>* estimator_;
297  };
298 
299  struct OptimizationFunctorWithIndices : public Functor<MatScalar> {
301 
302  /** Functor constructor
303  * \param[in] m_data_points the number of data points to evaluate
304  * \param[in,out] estimator pointer to the estimator object
305  */
307  int m_data_points,
309  : Functor<MatScalar>(m_data_points), estimator_(estimator)
310  {}
311 
312  /** Copy constructor
313  * \param[in] src the optimization functor to copy into this
314  */
316  : Functor<MatScalar>(src.m_data_points_), estimator_()
317  {
318  *this = src;
319  }
320 
321  /** Copy operator
322  * \param[in] src the optimization functor to copy into this
323  */
326  {
328  estimator_ = src.estimator_;
329  return (*this);
330  }
331 
332  /** \brief Destructor. */
334 
335  /** Fill fvec from x. For the current state vector x fill the f values
336  * \param[in] x state vector
337  * \param[out] fvec f values vector
338  */
339  int
340  operator()(const VectorX& x, VectorX& fvec) const;
341 
343  PointTarget,
344  MatScalar>* estimator_;
345  };
346 
347 public:
349 };
350 } // namespace registration
351 } // namespace pcl
352 
353 #include <pcl/registration/impl/transformation_estimation_point_to_plane_weighted.hpp>
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::m_data_points_
int m_data_points_
Definition: transformation_estimation_point_to_plane_weighted.h:249
pcl_macros.h
Defines all the PCL and non-PCL macros used.
pcl
Definition: convolution.h:46
pcl::registration::TransformationEstimationPointToPlaneWeighted::operator=
TransformationEstimationPointToPlaneWeighted & operator=(const TransformationEstimationPointToPlaneWeighted &src)
Copy operator.
Definition: transformation_estimation_point_to_plane_weighted.h:106
pcl::registration::TransformationEstimationPointToPlaneWeighted::tmp_idx_src_
const std::vector< int > * tmp_idx_src_
Temporary pointer to the source dataset indices.
Definition: transformation_estimation_point_to_plane_weighted.h:207
pcl::registration::TransformationEstimationPointToPlaneWeighted::Ptr
shared_ptr< TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > > Ptr
Definition: transformation_estimation_point_to_plane_weighted.h:73
pcl::registration::TransformationEstimationPointToPlane
TransformationEstimationPointToPlane uses Levenberg Marquardt optimization to find the transformation...
Definition: transformation_estimation_point_to_plane.h:57
pcl::registration::TransformationEstimationPointToPlaneWeighted::TransformationEstimationPointToPlaneWeighted
TransformationEstimationPointToPlaneWeighted()
Constructor.
Definition: transformation_estimation_point_to_plane_weighted.hpp:53
pcl::registration::TransformationEstimationPointToPlaneWeighted::~TransformationEstimationPointToPlaneWeighted
virtual ~TransformationEstimationPointToPlaneWeighted()
Destructor.
Definition: transformation_estimation_point_to_plane_weighted.h:118
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::ValuesAtCompileTime
@ ValuesAtCompileTime
Definition: transformation_estimation_point_to_plane_weighted.h:224
pcl::registration::TransformationEstimationLM::Functor< MatScalar >::Scalar
MatScalar Scalar
Definition: transformation_estimation_lm.h:224
pcl::registration::TransformationEstimation::Matrix4
Eigen::Matrix< Scalar, 4, 4 > Matrix4
Definition: transformation_estimation.h:64
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices
Definition: transformation_estimation_point_to_plane_weighted.h:299
pcl::registration::TransformationEstimationPointToPlaneWeighted::Matrix4
typename TransformationEstimation< PointSource, PointTarget, MatScalar >::Matrix4 Matrix4
Definition: transformation_estimation_point_to_plane_weighted.h:82
pcl::registration::TransformationEstimationPointToPlaneWeighted
TransformationEstimationPointToPlaneWeighted uses Levenberg Marquardt optimization to find the transf...
Definition: transformation_estimation_point_to_plane_weighted.h:59
pcl::PointCloud< PointSource >
pcl::registration::TransformationEstimationLM::Functor< MatScalar >::JacobianType
Eigen::Matrix< MatScalar, ValuesAtCompileTime, InputsAtCompileTime > JacobianType
Definition: transformation_estimation_lm.h:229
pcl::registration::TransformationEstimationLM::Functor< MatScalar >::ValueType
Eigen::Matrix< MatScalar, ValuesAtCompileTime, 1 > ValueType
Definition: transformation_estimation_lm.h:227
pcl::registration::TransformationEstimationPointToPlaneWeighted::warp_point_
pcl::registration::WarpPointRigid< PointSource, PointTarget, MatScalar >::Ptr warp_point_
The parameterized function used to warp the source to the target.
Definition: transformation_estimation_point_to_plane_weighted.h:214
pcl::registration::TransformationEstimationPointToPlaneWeighted::tmp_idx_tgt_
const std::vector< int > * tmp_idx_tgt_
Temporary pointer to the target dataset indices.
Definition: transformation_estimation_point_to_plane_weighted.h:210
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::operator()
int operator()(const VectorX &x, VectorX &fvec) const
Fill fvec from x.
Definition: transformation_estimation_point_to_plane_weighted.hpp:313
pcl::registration::TransformationEstimationPointToPlaneWeighted::correspondence_weights_
std::vector< double > correspondence_weights_
Definition: transformation_estimation_point_to_plane_weighted.h:198
pcl::PointIndices::ConstPtr
shared_ptr< const ::pcl::PointIndices > ConstPtr
Definition: PointIndices.h:14
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::values
int values() const
Get the number of values.
Definition: transformation_estimation_point_to_plane_weighted.h:243
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::OptimizationFunctor
OptimizationFunctor(int m_data_points, const TransformationEstimationPointToPlaneWeighted *estimator)
Functor constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:259
pcl::registration::TransformationEstimationPointToPlaneWeighted::Vector4
Eigen::Matrix< MatScalar, 4, 1 > Vector4
Definition: transformation_estimation_point_to_plane_weighted.h:80
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::operator()
int operator()(const VectorX &x, VectorX &fvec) const
Fill fvec from x.
Definition: transformation_estimation_point_to_plane_weighted.hpp:282
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::estimator_
const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > * estimator_
Definition: transformation_estimation_point_to_plane_weighted.h:296
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor
Base functor all the models that need non linear optimization must define their own one and implement...
Definition: transformation_estimation_point_to_plane_weighted.h:222
pcl::registration::TransformationEstimationPointToPlaneWeighted::VectorX
Eigen::Matrix< MatScalar, Eigen::Dynamic, 1 > VectorX
Definition: transformation_estimation_point_to_plane_weighted.h:79
pcl::registration::TransformationEstimationLM::Functor< MatScalar >::InputType
Eigen::Matrix< MatScalar, InputsAtCompileTime, 1 > InputType
Definition: transformation_estimation_lm.h:226
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor
Definition: transformation_estimation_point_to_plane_weighted.h:252
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::~OptimizationFunctor
virtual ~OptimizationFunctor()
Destructor.
Definition: transformation_estimation_point_to_plane_weighted.h:285
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::operator=
OptimizationFunctorWithIndices & operator=(const OptimizationFunctorWithIndices &src)
Copy operator.
Definition: transformation_estimation_point_to_plane_weighted.h:325
PCL_MAKE_ALIGNED_OPERATOR_NEW
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
Definition: memory.h:63
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::estimator_
const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > * estimator_
Definition: transformation_estimation_point_to_plane_weighted.h:344
pcl::registration::TransformationEstimationPointToPlaneWeighted::setWarpFunction
void setWarpFunction(const typename WarpPointRigid< PointSource, PointTarget, MatScalar >::Ptr &warp_fcn)
Set the function we use to warp points.
Definition: transformation_estimation_point_to_plane_weighted.h:190
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::OptimizationFunctorWithIndices
OptimizationFunctorWithIndices(const OptimizationFunctorWithIndices &src)
Copy constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:315
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::Functor
Functor(int m_data_points)
Constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:236
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::OptimizationFunctorWithIndices
OptimizationFunctorWithIndices(int m_data_points, const TransformationEstimationPointToPlaneWeighted *estimator)
Functor constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:306
pcl::PointIndices::Ptr
shared_ptr< ::pcl::PointIndices > Ptr
Definition: PointIndices.h:13
pcl::registration::TransformationEstimationPointToPlaneWeighted::TransformationEstimationPointToPlaneWeighted
TransformationEstimationPointToPlaneWeighted(const TransformationEstimationPointToPlaneWeighted &src)
Copy constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:91
pcl::registration::TransformationEstimationPointToPlaneWeighted::estimateRigidTransformation
void estimateRigidTransformation(const pcl::PointCloud< PointSource > &cloud_src, const pcl::PointCloud< PointTarget > &cloud_tgt, Matrix4 &transformation_matrix) const
Estimate a rigid rotation transformation between a source and a target point cloud using LM.
Definition: transformation_estimation_point_to_plane_weighted.hpp:66
pcl::registration::TransformationEstimationPointToPlaneWeighted::use_correspondence_weights_
bool use_correspondence_weights_
Definition: transformation_estimation_point_to_plane_weighted.h:197
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::InputsAtCompileTime
@ InputsAtCompileTime
Definition: transformation_estimation_point_to_plane_weighted.h:224
pcl::PointCloud< PointSource >::Ptr
shared_ptr< PointCloud< PointSource > > Ptr
Definition: point_cloud.h:406
pcl::registration::TransformationEstimationPointToPlaneWeighted::ConstPtr
shared_ptr< const TransformationEstimationPointToPlaneWeighted< PointSource, PointTarget, MatScalar > > ConstPtr
Definition: transformation_estimation_point_to_plane_weighted.h:77
pcl::registration::TransformationEstimationPointToPlaneWeighted::setUseCorrespondenceWeights
void setUseCorrespondenceWeights(bool use_correspondence_weights)
use the weights given in the pcl::CorrespondencesPtr for one of the estimateTransformation (....
Definition: transformation_estimation_point_to_plane_weighted.h:181
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::~Functor
virtual ~Functor()
Destructor.
Definition: transformation_estimation_point_to_plane_weighted.h:239
pcl::registration::TransformationEstimationPointToPlaneWeighted::tmp_tgt_
const PointCloudTarget * tmp_tgt_
Temporary pointer to the target dataset.
Definition: transformation_estimation_point_to_plane_weighted.h:204
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::operator=
OptimizationFunctor & operator=(const OptimizationFunctor &src)
Copy operator.
Definition: transformation_estimation_point_to_plane_weighted.h:277
pcl::registration::TransformationEstimationPointToPlaneWeighted::Functor::Functor
Functor()
Empty Constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:231
pcl::PointCloud< PointSource >::ConstPtr
shared_ptr< const PointCloud< PointSource > > ConstPtr
Definition: point_cloud.h:407
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctorWithIndices::~OptimizationFunctorWithIndices
virtual ~OptimizationFunctorWithIndices()
Destructor.
Definition: transformation_estimation_point_to_plane_weighted.h:333
pcl::Correspondences
std::vector< pcl::Correspondence, Eigen::aligned_allocator< pcl::Correspondence > > Correspondences
Definition: correspondence.h:89
pcl::registration::TransformationEstimationPointToPlaneWeighted::setWeights
void setWeights(const std::vector< double > &weights)
Definition: transformation_estimation_point_to_plane_weighted.h:173
pcl::registration::TransformationEstimationPointToPlaneWeighted::OptimizationFunctor::OptimizationFunctor
OptimizationFunctor(const OptimizationFunctor &src)
Copy constructor.
Definition: transformation_estimation_point_to_plane_weighted.h:267
pcl::registration::TransformationEstimationPointToPlaneWeighted::tmp_src_
const PointCloudSource * tmp_src_
Temporary pointer to the source dataset.
Definition: transformation_estimation_point_to_plane_weighted.h:201
memory.h
Defines functions, macros and traits for allocating and using memory.
pcl::registration::WarpPointRigid::Ptr
shared_ptr< WarpPointRigid< PointSourceT, PointTargetT, Scalar > > Ptr
Definition: warp_point_rigid.h:62