43#include <pcl/registration/registration.h>
44#include <pcl/registration/transformation_estimation_svd.h>
53template <
typename Po
intSource,
typename Po
intTarget,
typename FeatureT>
86 shared_ptr<SampleConsensusInitialAlignment<PointSource, PointTarget, FeatureT>>;
92 using Ptr = shared_ptr<ErrorFunctor>;
93 using ConstPtr = shared_ptr<const ErrorFunctor>;
110 return (0.5 * e * e);
151 reg_name_ =
"SampleConsensusInitialAlignment";
267 return (
static_cast<pcl::index_t>(n * (rand() / (RAND_MAX + 1.0))));
278 unsigned int nr_samples,
279 float min_sample_distance,
307 const Eigen::Matrix4f& guess)
override;
335#include <pcl/registration/impl/ia_ransac.hpp>
KdTreeFLANN is a generic type of 3D spatial locator using kD-tree structures.
PointCloudConstPtr input_
The input point cloud dataset.
IndicesPtr indices_
A pointer to the vector of point indices to use.
shared_ptr< PointCloud< FeatureT > > Ptr
shared_ptr< const PointCloud< FeatureT > > ConstPtr
Registration represents the base registration class for general purpose, ICP-like methods.
Matrix4 final_transformation_
The final transformation matrix estimated by the registration method after N iterations.
double corr_dist_threshold_
The maximum distance threshold between two correspondent points in source <-> target.
std::string reg_name_
The registration method name.
Matrix4 transformation_
The transformation matrix estimated by the registration method.
KdTreePtr tree_
A pointer to the spatial search object.
bool converged_
Holds internal convergence state, given user parameters.
TransformationEstimationPtr transformation_estimation_
A TransformationEstimation object, used to calculate the 4x4 rigid transformation.
int max_iterations_
The maximum number of iterations the internal optimization should run for.
int min_number_correspondences_
The minimum number of correspondences that the algorithm needs before attempting to estimate the tran...
PointCloudTargetConstPtr target_
The input point cloud dataset target.
const std::string & getClassName() const
Abstract class get name method.
virtual float operator()(float d) const =0
shared_ptr< const ErrorFunctor > ConstPtr
virtual ~ErrorFunctor()=default
shared_ptr< ErrorFunctor > Ptr
float operator()(float e) const override
HuberPenalty(float threshold)
TruncatedError(float threshold)
float operator()(float e) const override
SampleConsensusInitialAlignment is an implementation of the initial alignment algorithm described in ...
FeatureCloudConstPtr const getTargetFeatures()
Get a pointer to the target point cloud's features.
PointIndices::ConstPtr PointIndicesConstPtr
void computeTransformation(PointCloudSource &output, const Eigen::Matrix4f &guess) override
Rigid transformation computation method.
shared_ptr< const SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT > > ConstPtr
int getNumberOfSamples()
Get the number of samples to use during each iteration, as set by the user.
PointIndices::Ptr PointIndicesPtr
float computeErrorMetric(const PointCloudSource &cloud, float threshold)
An error metric for that computes the quality of the alignment between the given cloud and the target...
typename PointCloudSource::ConstPtr PointCloudSourceConstPtr
void setMinSampleDistance(float min_sample_distance)
Set the minimum distances between samples.
typename Registration< PointSource, PointTarget >::PointCloudSource PointCloudSource
FeatureKdTreePtr feature_tree_
The KdTree used to compare feature descriptors.
pcl::index_t getRandomIndex(int n)
Choose a random index between 0 and n-1.
pcl::PointCloud< FeatureT > FeatureCloud
void setTargetFeatures(const FeatureCloudConstPtr &features)
Provide a shared pointer to the target point cloud's feature descriptors.
typename KdTreeFLANN< FeatureT >::Ptr FeatureKdTreePtr
void setNumberOfSamples(int nr_samples)
Set the number of samples to use during each iteration.
FeatureCloudConstPtr target_features_
The target point cloud's feature descriptors.
float getMinSampleDistance()
Get the minimum distances between samples, as set by the user.
shared_ptr< SampleConsensusInitialAlignment< PointSource, PointTarget, FeatureT > > Ptr
float min_sample_distance_
The minimum distances between samples.
typename ErrorFunctor::Ptr ErrorFunctorPtr
typename FeatureCloud::Ptr FeatureCloudPtr
void setErrorFunction(const ErrorFunctorPtr &error_functor)
Specify the error function to minimize.
FeatureCloudConstPtr input_features_
The source point cloud's feature descriptors.
int nr_samples_
The number of samples to use during each iteration.
void selectSamples(const PointCloudSource &cloud, unsigned int nr_samples, float min_sample_distance, pcl::Indices &sample_indices)
Select nr_samples sample points from cloud while making sure that their pairwise distances are greate...
typename PointCloudSource::Ptr PointCloudSourcePtr
int getCorrespondenceRandomness()
Get the number of neighbors used when selecting a random feature correspondence, as set by the user.
void findSimilarFeatures(const FeatureCloud &input_features, const pcl::Indices &sample_indices, pcl::Indices &corresponding_indices)
For each of the sample points, find a list of points in the target cloud whose features are similar t...
void setCorrespondenceRandomness(int k)
Set the number of neighbors to use when selecting a random feature correspondence.
typename FeatureCloud::ConstPtr FeatureCloudConstPtr
SampleConsensusInitialAlignment()
Constructor.
int k_correspondences_
The number of neighbors to use when selecting a random feature correspondence.
ErrorFunctorPtr error_functor_
ErrorFunctorPtr getErrorFunction()
Get a shared pointer to the ErrorFunctor that is to be minimized.
FeatureCloudConstPtr const getSourceFeatures()
Get a pointer to the source point cloud's features.
typename Registration< PointSource, PointTarget >::PointCloudTarget PointCloudTarget
void setSourceFeatures(const FeatureCloudConstPtr &features)
Provide a shared pointer to the source point cloud's feature descriptors.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
Defines functions, macros and traits for allocating and using memory.
detail::int_type_t< detail::index_type_size, detail::index_type_signed > index_t
Type used for an index in PCL.
IndicesAllocator<> Indices
Type used for indices in PCL.
shared_ptr< ::pcl::PointIndices > Ptr
shared_ptr< const ::pcl::PointIndices > ConstPtr