#include <ICP.h>
Classes | |
struct | ICP_State |
struct | IterationHook_Input |
struct | IterationHook_Output |
struct | QualityEvaluatorEntry |
Public Types | |
using | iteration_hook_t = std::function< IterationHook_Output(const IterationHook_Input &)> |
Public Member Functions | |
virtual void | align (const metric_map_t &pcLocal, const metric_map_t &pcGlobal, const mrpt::math::TPose3D &initialGuessLocalWrtGlobal, const Parameters &p, Results &result, const std::optional< mrpt::poses::CPose3DPDFGaussianInf > &prior=std::nullopt, const mrpt::optional_ref< LogRecord > &outputDebugInfo=std::nullopt) |
void | attachToParameterSource (ParameterSource &source) |
virtual void | initialize_derived ([[maybe_unused]] const mrpt::containers::yaml &p) |
mrpt::system::CTimeLogger & | profiler () |
const mrpt::system::CTimeLogger & | profiler () const |
void | setIterationHook (const iteration_hook_t &ih) |
Static Protected Member Functions | |
static void | save_log_file (const LogRecord &log, const Parameters &p) |
Protected Attributes | |
iteration_hook_t | iteration_hook_ |
matcher_list_t | matchers_ |
mrpt::system::CTimeLogger | profiler_ {false , "mp2p_icp::ICP"} |
quality_eval_list_t | quality_evaluators_ |
solver_list_t | solvers_ |
Private Attributes | |
ParameterSource | ownParamSource_ |
Module: Solver instances | |
using | solver_list_t = std::vector< mp2p_icp::Solver::Ptr > |
void | initialize_solvers (const mrpt::containers::yaml ¶ms) |
const solver_list_t & | solvers () const |
solver_list_t & | solvers () |
static void | initialize_solvers (const mrpt::containers::yaml ¶ms, ICP::solver_list_t &lst) |
static bool | run_solvers (const solver_list_t &solvers, const Pairings &pairings, OptimalTF_Result &out, const SolverContext &sc={}) |
Module: Matcher instances | |
void | initialize_matchers (const mrpt::containers::yaml ¶ms) |
const matcher_list_t & | matchers () const |
matcher_list_t & | matchers () |
static void | initialize_matchers (const mrpt::containers::yaml ¶ms, matcher_list_t &lst) |
Module: QualityEvaluator instances | |
using | quality_eval_list_t = std::vector< QualityEvaluatorEntry > |
void | initialize_quality_evaluators (const mrpt::containers::yaml ¶ms) |
const quality_eval_list_t & | quality_evaluators () const |
quality_eval_list_t & | quality_evaluators () |
static void | initialize_quality_evaluators (const mrpt::containers::yaml ¶ms, quality_eval_list_t &lst) |
static double | evaluate_quality (const quality_eval_list_t &evaluators, const metric_map_t &pcGlobal, const metric_map_t &pcLocal, const mrpt::poses::CPose3D &localPose, const Pairings &finalPairings) |
Generic ICP algorithm container: builds a custom ICP pipeline by selecting algorithm and parameter for each stage.
The main API entry point is align().
A convenient way to create an ICP pipeline instance is using a YAML configuration file and calling mp2p_icp::icp_pipeline_from_yaml().
Several solvers may exists, but the output from the first one returning true
will be used. This is by design, to enable different solver algorithms depending on the ICP iteration or the type of geometric entities.
using mp2p_icp::ICP::iteration_hook_t = std::function<IterationHook_Output(const IterationHook_Input&)> |
using mp2p_icp::ICP::quality_eval_list_t = std::vector<QualityEvaluatorEntry> |
using mp2p_icp::ICP::solver_list_t = std::vector<mp2p_icp::Solver::Ptr> |
|
virtual |
Register (align) two point clouds (possibly after having been preprocessed to extract features, etc.) and returns the relative pose of pcLocal with respect to pcGlobal.
Reimplemented in mp2p_icp::ICP_LibPointmatcher.
Definition at line 27 of file mp2p_icp/src/ICP.cpp.
|
inline |
|
static |
Definition at line 596 of file mp2p_icp/src/ICP.cpp.
|
inlinevirtual |
For whole-ICP overriden classes (e.g. external ICP library wrappers), initialize those external libraries with these parameters. Invoked from mp2p_icp::icp_pipeline_from_yaml().
void ICP::initialize_matchers | ( | const mrpt::containers::yaml & | params | ) |
Create and configure one or more "Match" modules from YAML-like config block. Config must be a sequence of one or more entries, each with a class
and a params
dictionary entries.
Example:
Alternatively, the objects can be directly created via matchers().
Definition at line 526 of file mp2p_icp/src/ICP.cpp.
|
static |
Definition at line 531 of file mp2p_icp/src/ICP.cpp.
void ICP::initialize_quality_evaluators | ( | const mrpt::containers::yaml & | params | ) |
Create and configure one or more "QualityEvaluator" modules from YAML-like config block. Config must be a sequence of one or more entries, each with a class
and a params
dictionary entries.
Example:
Alternatively, the objects can be directly created via matchers().
Definition at line 591 of file mp2p_icp/src/ICP.cpp.
|
static |
Definition at line 558 of file mp2p_icp/src/ICP.cpp.
void ICP::initialize_solvers | ( | const mrpt::containers::yaml & | params | ) |
Create and configure one or more "Solver" modules from YAML-like config block. Config must be a sequence of one or more entries, each with a class
and a params
dictionary entries.
Read the comments for ICP on the possible existence of more than one solver.
Example:
Alternatively, the objects can be directly created via solvers().
Definition at line 494 of file mp2p_icp/src/ICP.cpp.
|
static |
Definition at line 499 of file mp2p_icp/src/ICP.cpp.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
static |
Runs a set of solvers.
Definition at line 482 of file mp2p_icp/src/ICP.cpp.
|
staticprotected |
Definition at line 391 of file mp2p_icp/src/ICP.cpp.
|
inline |
|
inline |
|
inline |
|
protected |
|
protected |
|
private |
|
protected |
|
protected |
|
protected |