Program Listing for File ICPPointAlign.hpp

Return to documentation for file (include/lvr2/registration/ICPPointAlign.hpp)

#ifndef ICPPOINTALIGN_HPP_
#define ICPPOINTALIGN_HPP_

#include "SLAMScanWrapper.hpp"

#include "lvr2/types/MatrixTypes.hpp"
#include "lvr2/algorithm/KDTree.hpp"

namespace lvr2
{

class ICPPointAlign
{
public:
    ICPPointAlign(SLAMScanPtr model, SLAMScanPtr data);

    Transformd match();

    virtual ~ICPPointAlign() = default;

    void    setMaxMatchDistance(double distance);
    void    setMaxIterations(int iterations);
    void    setMaxLeafSize(int maxLeafSize);
    void    setEpsilon(double epsilon);
    void    setVerbose(bool verbose);

    double  getMaxMatchDistance() const;
    int     getMaxIterations() const;
    int     getMaxLeafSize() const;
    double  getEpsilon() const;
    bool    getVerbose() const;

protected:

    double      m_epsilon;
    double      m_maxDistanceMatch;
    int         m_maxIterations;
    int         m_maxLeafSize;

    bool        m_verbose;

    SLAMScanPtr m_modelCloud;
    SLAMScanPtr m_dataCloud;

    KDTreePtr<Vector3f> m_searchTree;
};

} /* namespace lvr2 */

#endif /* ICPPOINTALIGN_HPP_ */