class mp2p_icp::Solver

Overview

Virtual base class for optimal alignment solvers (one step in ICP).

Each “solver” implementation takes a list of correspondences, and returns the optimal (in some sense) relative SE(3) pose minimizing some particular error function.

#include <Solver.h>

class Solver:
    public mrpt::system::COutputLogger,
    public mrpt::rtti::CObject,
    public mp2p_icp::Parameterizable
{
public:
    // fields

    uint32_t runUpToIteration = 0;
    bool enabled = true;

    // methods

    virtual void initialize(const mrpt::containers::yaml& params);
    virtual bool optimal_pose(const Pairings& pairings, OptimalTF_Result& out, const SolverContext& sc) const;
};

// direct descendants

class Solver_GaussNewton;
class Solver_Horn;
class Solver_OLAE;

Fields

uint32_t runUpToIteration = 0

0: no limit

bool enabled = true

Can be used to disable one of a set of solvers in a pipeline

Methods

virtual void initialize(const mrpt::containers::yaml& params)

Check each derived class to see required and optional parameters.

virtual bool optimal_pose(const Pairings& pairings, OptimalTF_Result& out, const SolverContext& sc) const

Finds correspondences between the two point clouds. “out” is not cleared, but new pairings added to it.

Returns:

true if the method was actually invoked (due to the filter in runFromIteration and runUpToIteration) and valid solution was found.