Program Listing for File EigenSVDPointAlign.hpp

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

#ifndef EIGENSVDPOINTALIGN_HPP_
#define EIGENSVDPOINTALIGN_HPP_

#include "SLAMScanWrapper.hpp"
#include "lvr2/types/MatrixTypes.hpp"

#include <Eigen/Dense>

namespace lvr2
{

template<typename T, typename PointT = float>
class EigenSVDPointAlign
{
public:
    using Vec3 = Vector3<T>;
    using Mat4 = Transform<T>;
    using Mat3 = Eigen::Matrix<T, 3, 3>;
    using Point3 = Vector3<PointT>;
    using PointPairVector = std::vector<std::pair<Point3, Point3>>;

    EigenSVDPointAlign() {};

    T alignPoints(
        SLAMScanPtr scan,
        Point3** neighbors,
        const Vec3& centroid_m,
        const Vec3& centroid_d,
        Mat4& align) const;

    T alignPoints(
        PointPairVector& points,
        const Vec3& centroid_m,
        const Vec3& centroid_d,
        Mat4& align) const;
};

} /* namespace lvr2 */

#include "EigenSVDPointAlign.tcc"

#endif /* EIGENSVDPOINTALIGN_HPP_ */