Skip to content

beam_matching

Avery Jung edited this page Aug 23, 2019 · 2 revisions

beam_matching

This module contains objects for registering 2 pointclouds.

Classes and Structures

IcpMatcher

This class has functionality similar to the PCL IterativeClosestPoint that can be found here: http://docs.pointclouds.org/trunk/classpcl_1_1_iterative_closest_point.html

This class registers two pointclouds using ICP registration method.

IcpMatcher was implemented as a wrapper of PCL's IterativeClosestPoint to simplify the usage as well as supporting down sampling of reference and target pointclouds before matching and estimating information matrix.

Example usage:

#include "beam_filtering/IcpMatcher.h"
PointCloud::Ptr ref_cloud = boost::make_shared<PointCloud>();
PointCloud::Ptr target_cloud = boost::make_shared<PointCloud>();

std::string config_path = "icp_config.json";
IcpMatcherParams params(config_path);
IcpMatcher matcher(params);

matcher.SetRef(ref_cloud);
matcher.SetTarget(target_cloud);
matcher.Match();
matcher.EstimateInfo();

Eigen::Matrix<double, 6, 6> information_matrix = matcher.GetInfo();

IcpMatcherParams

This structure contains parameters used for IcpMatcher. These parameters can be configured in a config JSON file.

max_corr: Maximum distance to correspond points for ICP. [default: 3]

max_iter: Maximum iterations of ICP. [default: 100]

t_eps: Transformation epsilon (maximum allowable translation squared difference between
       two consecutive transformations) [default:1e-8]

fit_eps: Euclidean fitness epsilon (maximum allowed Euclidean error between
         two consecutive steps in the ICP loop) [default:1e-2]

lidar_ang_covar: Angular variance for lidar sensor model. 
                 Used if Censi covariance estimation is set. [default: 7.78e-9]

lidar_lin_covar: Linear variance for lidar sensor model. 
                 Used if Censi covariance estimation is set. [default: 2.5e-4]

int multiscale_steps: When set to more than 0, each match is performed multiple times 
                      from a coarse to fine scale (in terms of voxel downsampling). 
                      Each step doubles the resolution. [default: 3]

float res: Voxel side length for downsampling. If set to 0, downsampling is not performed. 
           If multiscale matching is set, this is the resolution of the final, fine-scale match. [default: 0.1]

covar_estimator: Enumerator of covariance method. [default: LUM] [options: LUM, CENSI, LUMold]

NdtMatcher

This class has functionality similar to the PCL NormalDistributionsTransform that can be found here: http://docs.pointclouds.org/trunk/classpcl_1_1_normal_distributions_transform.html

This class registers two pointclouds using NDT registration method.

NdtMatcher was implemented as a wrapper of PCL's NormalDistributionsTransform to simplify the usage.

Example usage:

#include "beam_filtering/NdtMatcher.h"
PointCloud::Ptr ref_cloud = boost::make_shared<PointCloud>();
PointCloud::Ptr target_cloud = boost::make_shared<PointCloud>();

std::string config_path = "ndt_config.json";
NdtMatcherParams params(config_path);
NdtMatcher matcher(params);

matcher.SetRef(ref_cloud);
matcher.SetTarget(target_cloud);
matcher.Match();

NdtMatcherParams

This structure contains parameters used for NdtMatcher. These parameters can be configured in a config JSON file.

step_size: The newton line search maximum step length. [default: 3]

max_iter: The maximum number of iterations the internal optimization should run for. [default: 100]

t_eps: The maximum difference between two consecutive transformations in order to consider convergence. [default: 1e-8]

res: The side length of voxels. [default: 5]

GicpMatcher

This class has functionality similar to the PCL GeneralizedIterativeClosestPoint that can be found here: http://docs.pointclouds.org/trunk/classpcl_1_1_generalized_iterative_closest_point.html

This class registers two pointclouds using GICP registration method.

NdtMatcher was implemented as a wrapper of PCL's GeneralizedIterativeClosestPoint to simplify the usage.

Example usage:

#include "beam_filtering/GicpMatcher.h"
PointCloud::Ptr ref_cloud = boost::make_shared<PointCloud>();
PointCloud::Ptr target_cloud = boost::make_shared<PointCloud>();

std::string config_path = "gicp_config.json";
GicpMatcherParams params(config_path);
GicpMatcher matcher(params);

matcher.SetRef(ref_cloud);
matcher.SetTarget(target_cloud);
matcher.Match();

GicpMatcherParams

This structure contains parameters used for GicpMatcher. These parameters can be configured in a config JSON file.

corr_rand: The number of neighbors used for covariances computation. [default: 10]

max_iter: The maximum number of iterations the internal optimization should run for. [default: 100]

r_eps: The rotation epsilon (maximum allowable difference between two consecutive rotations) in order for an 
       optimization to be considered as having converged to the final solution.  [default: 1e-8]

fit_eps: Euclidean fitness epsilon (maximum allowed Euclidean error between
         two consecutive steps in the ICP loop) [default:1e-2]

res: The side length of voxels. [default: 5]
Clone this wiki locally