|
| PPFRegistration () |
| Empty constructor that initializes all the parameters of the algorithm with default values.
|
|
void | setPositionClusteringThreshold (float clustering_position_diff_threshold) |
| Method for setting the position difference clustering parameter.
|
|
float | getPositionClusteringThreshold () |
| Returns the parameter defining the position difference clustering parameter.
|
|
void | setRotationClusteringThreshold (float clustering_rotation_diff_threshold) |
| Method for setting the rotation clustering parameter.
|
|
float | getRotationClusteringThreshold () |
| Returns the parameter defining the rotation clustering threshold.
|
|
void | setSceneReferencePointSamplingRate (unsigned int scene_reference_point_sampling_rate) |
| Method for setting the scene reference point sampling rate.
|
|
unsigned int | getSceneReferencePointSamplingRate () |
| Returns the parameter for the scene reference point sampling rate of the algorithm.
|
|
void | setSearchMethod (PPFHashMapSearch::Ptr search_method) |
| Function that sets the search method for the algorithm.
|
|
PPFHashMapSearch::Ptr | getSearchMethod () |
| Getter function for the search method of the class.
|
|
void | setInputTarget (const PointCloudTargetConstPtr &cloud) override |
| Provide a pointer to the input target (e.g., the point cloud that we want to align the input source to)
|
|
PoseWithVotesList | getBestPoseCandidates () |
| Returns the most promising pose candidates, after clustering.
|
|
| Registration () |
| Empty constructor.
|
|
| ~Registration () override=default |
| destructor.
|
|
void | setTransformationEstimation (const TransformationEstimationPtr &te) |
| Provide a pointer to the transformation estimation object.
|
|
void | setCorrespondenceEstimation (const CorrespondenceEstimationPtr &ce) |
| Provide a pointer to the correspondence estimation object.
|
|
virtual void | setInputSource (const PointCloudSourceConstPtr &cloud) |
| Provide a pointer to the input source (e.g., the point cloud that we want to align to the target)
|
|
PointCloudSourceConstPtr const | getInputSource () |
| Get a pointer to the input point cloud dataset target.
|
|
PointCloudTargetConstPtr const | getInputTarget () |
| Get a pointer to the input point cloud dataset target.
|
|
void | setSearchMethodTarget (const KdTreePtr &tree, bool force_no_recompute=false) |
| Provide a pointer to the search object used to find correspondences in the target cloud.
|
|
KdTreePtr | getSearchMethodTarget () const |
| Get a pointer to the search method used to find correspondences in the target cloud.
|
|
void | setSearchMethodSource (const KdTreeReciprocalPtr &tree, bool force_no_recompute=false) |
| Provide a pointer to the search object used to find correspondences in the source cloud (usually used by reciprocal correspondence finding).
|
|
KdTreeReciprocalPtr | getSearchMethodSource () const |
| Get a pointer to the search method used to find correspondences in the source cloud.
|
|
Matrix4 | getFinalTransformation () |
| Get the final transformation matrix estimated by the registration method.
|
|
Matrix4 | getLastIncrementalTransformation () |
| Get the last incremental transformation matrix estimated by the registration method.
|
|
void | setMaximumIterations (int nr_iterations) |
| Set the maximum number of iterations the internal optimization should run for.
|
|
int | getMaximumIterations () |
| Get the maximum number of iterations the internal optimization should run for, as set by the user.
|
|
void | setRANSACIterations (int ransac_iterations) |
| Set the number of iterations RANSAC should run for.
|
|
double | getRANSACIterations () |
| Get the number of iterations RANSAC should run for, as set by the user.
|
|
void | setRANSACOutlierRejectionThreshold (double inlier_threshold) |
| Set the inlier distance threshold for the internal RANSAC outlier rejection loop.
|
|
double | getRANSACOutlierRejectionThreshold () |
| Get the inlier distance threshold for the internal outlier rejection loop as set by the user.
|
|
void | setMaxCorrespondenceDistance (double distance_threshold) |
| Set the maximum distance threshold between two correspondent points in source <-> target.
|
|
double | getMaxCorrespondenceDistance () |
| Get the maximum distance threshold between two correspondent points in source <-> target.
|
|
void | setTransformationEpsilon (double epsilon) |
| Set the transformation epsilon (maximum allowable translation squared difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.
|
|
double | getTransformationEpsilon () |
| Get the transformation epsilon (maximum allowable translation squared difference between two consecutive transformations) as set by the user.
|
|
void | setTransformationRotationEpsilon (double epsilon) |
| Set the transformation rotation epsilon (maximum allowable rotation difference between two consecutive transformations) in order for an optimization to be considered as having converged to the final solution.
|
|
double | getTransformationRotationEpsilon () |
| Get the transformation rotation epsilon (maximum allowable difference between two consecutive transformations) as set by the user (epsilon is the cos(angle) in a axis-angle representation).
|
|
void | setEuclideanFitnessEpsilon (double epsilon) |
| Set the maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged.
|
|
double | getEuclideanFitnessEpsilon () |
| Get the maximum allowed distance error before the algorithm will be considered to have converged, as set by the user.
|
|
void | setPointRepresentation (const PointRepresentationConstPtr &point_representation) |
| Provide a boost shared pointer to the PointRepresentation to be used when comparing points.
|
|
bool | registerVisualizationCallback (std::function< UpdateVisualizerCallbackSignature > &visualizerCallback) |
| Register the user callback function which will be called from registration thread in order to update point cloud obtained after each iteration.
|
|
double | getFitnessScore (double max_range=std::numeric_limits< double >::max()) |
| Obtain the Euclidean fitness score (e.g., mean of squared distances from the source to the target)
|
|
double | getFitnessScore (const std::vector< float > &distances_a, const std::vector< float > &distances_b) |
| Obtain the Euclidean fitness score (e.g., mean of squared distances from the source to the target) from two sets of correspondence distances (distances between source and target points)
|
|
bool | hasConverged () const |
| Return the state of convergence after the last align run.
|
|
void | align (PointCloudSource &output) |
| Call the registration algorithm which estimates the transformation and returns the transformed source (input) as output.
|
|
void | align (PointCloudSource &output, const Matrix4 &guess) |
| Call the registration algorithm which estimates the transformation and returns the transformed source (input) as output.
|
|
const std::string & | getClassName () const |
| Abstract class get name method.
|
|
bool | initCompute () |
| Internal computation initialization.
|
|
bool | initComputeReciprocal () |
| Internal computation when reciprocal lookup is needed.
|
|
void | addCorrespondenceRejector (const CorrespondenceRejectorPtr &rejector) |
| Add a new correspondence rejector to the list.
|
|
std::vector< CorrespondenceRejectorPtr > | getCorrespondenceRejectors () |
| Get the list of correspondence rejectors.
|
|
bool | removeCorrespondenceRejector (unsigned int i) |
| Remove the i-th correspondence rejector in the list.
|
|
void | clearCorrespondenceRejectors () |
| Clear the list of correspondence rejectors.
|
|
| PCLBase () |
| Empty constructor.
|
|
| PCLBase (const PCLBase &base) |
| Copy constructor.
|
|
virtual | ~PCLBase ()=default |
| Destructor.
|
|
virtual void | setInputCloud (const PointCloudConstPtr &cloud) |
| Provide a pointer to the input dataset.
|
|
PointCloudConstPtr const | getInputCloud () const |
| Get a pointer to the input point cloud dataset.
|
|
virtual void | setIndices (const IndicesPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data.
|
|
virtual void | setIndices (const IndicesConstPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data.
|
|
virtual void | setIndices (const PointIndicesConstPtr &indices) |
| Provide a pointer to the vector of indices that represents the input data.
|
|
virtual void | setIndices (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols) |
| Set the indices for the points laying within an interest region of the point cloud.
|
|
IndicesPtr | getIndices () |
| Get a pointer to the vector of indices used.
|
|
IndicesConstPtr const | getIndices () const |
| Get a pointer to the vector of indices used.
|
|
const PointSource & | operator[] (std::size_t pos) const |
| Override PointCloud operator[] to shorten code.
|
|
|
bool | searchForNeighbors (const PointCloudSource &cloud, int index, pcl::Indices &indices, std::vector< float > &distances) |
| Search for the closest nearest neighbor of a given point.
|
|
virtual void | computeTransformation (PointCloudSource &output, const Matrix4 &guess)=0 |
| Abstract transformation computation method with initial guess.
|
|
bool | initCompute () |
| This method should get called before starting the actual computation.
|
|
bool | deinitCompute () |
| This method should get called after finishing the actual computation.
|
|
std::string | reg_name_ |
| The registration method name.
|
|
KdTreePtr | tree_ |
| A pointer to the spatial search object.
|
|
KdTreeReciprocalPtr | tree_reciprocal_ |
| A pointer to the spatial search object of the source.
|
|
int | nr_iterations_ {0} |
| The number of iterations the internal optimization ran for (used internally).
|
|
int | max_iterations_ {10} |
| The maximum number of iterations the internal optimization should run for.
|
|
int | ransac_iterations_ {0} |
| The number of iterations RANSAC should run for.
|
|
PointCloudTargetConstPtr | target_ |
| The input point cloud dataset target.
|
|
Matrix4 | final_transformation_ |
| The final transformation matrix estimated by the registration method after N iterations.
|
|
Matrix4 | transformation_ |
| The transformation matrix estimated by the registration method.
|
|
Matrix4 | previous_transformation_ |
| The previous transformation matrix estimated by the registration method (used internally).
|
|
double | transformation_epsilon_ {0.0} |
| The maximum difference between two consecutive transformations in order to consider convergence (user defined).
|
|
double | transformation_rotation_epsilon_ {0.0} |
| The maximum rotation difference between two consecutive transformations in order to consider convergence (user defined).
|
|
double | euclidean_fitness_epsilon_ |
| The maximum allowed Euclidean error between two consecutive steps in the ICP loop, before the algorithm is considered to have converged.
|
|
double | corr_dist_threshold_ |
| The maximum distance threshold between two correspondent points in source <-> target.
|
|
double | inlier_threshold_ {0.05} |
| The inlier distance threshold for the internal RANSAC outlier rejection loop.
|
|
bool | converged_ {false} |
| Holds internal convergence state, given user parameters.
|
|
unsigned int | min_number_correspondences_ {3} |
| The minimum number of correspondences that the algorithm needs before attempting to estimate the transformation.
|
|
CorrespondencesPtr | correspondences_ |
| The set of correspondences determined at this ICP step.
|
|
TransformationEstimationPtr | transformation_estimation_ |
| A TransformationEstimation object, used to calculate the 4x4 rigid transformation.
|
|
CorrespondenceEstimationPtr | correspondence_estimation_ |
| A CorrespondenceEstimation object, used to estimate correspondences between the source and the target cloud.
|
|
std::vector< CorrespondenceRejectorPtr > | correspondence_rejectors_ |
| The list of correspondence rejectors to use.
|
|
bool | target_cloud_updated_ {true} |
| Variable that stores whether we have a new target cloud, meaning we need to pre-process it again.
|
|
bool | source_cloud_updated_ {true} |
| Variable that stores whether we have a new source cloud, meaning we need to pre-process it again.
|
|
bool | force_no_recompute_ {false} |
| A flag which, if set, means the tree operating on the target cloud will never be recomputed.
|
|
bool | force_no_recompute_reciprocal_ {false} |
| A flag which, if set, means the tree operating on the source cloud will never be recomputed.
|
|
std::function< UpdateVisualizerCallbackSignature > | update_visualizer_ |
| Callback function to update intermediate source point cloud position during it's registration to the target point cloud.
|
|
PointCloudConstPtr | input_ |
| The input point cloud dataset.
|
|
IndicesPtr | indices_ |
| A pointer to the vector of point indices to use.
|
|
bool | use_indices_ |
| Set to true if point indices are used.
|
|
bool | fake_indices_ |
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud.
|
|
template<typename PointSource, typename PointTarget>
class pcl::PPFRegistration< PointSource, PointTarget >
Class that registers two point clouds based on their sets of PPFSignatures.
Please refer to the following publication for more details: B. Drost, M. Ulrich, N. Navab, S. Ilic Model Globally, Match Locally: Efficient and Robust 3D Object Recognition 2010 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 13-18 June 2010, San Francisco, CA
- Note
- This class works in tandem with the PPFEstimation class
- Author
- Alexandru-Eugen Ichim
Definition at line 175 of file ppf_registration.h.