13#include <Eigen/Geometry>
34 float J[6] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
39Eigen::Matrix<float, 6, 6>
makeJTJ(
const Eigen::Matrix<float, 1, 21>&
v);
41Eigen::Matrix<float, 6, 1>
solve(
const Eigen::Matrix<float, 1, 27>&
vals);
47 const Eigen::Vector2i&
J_res);
52 const Eigen::Vector2i&
J_res);
61template<
typename ProjectF>
67 const Eigen::Isometry3f&
T_WS,
70 const float dist_threshold,
71 const float normal_threshold);
75 const float icp_threshold);
81 const float track_threshold);
86#include "impl/icp_impl.hpp"
bool checkPoseKernel(Eigen::Isometry3f &T_WS, Eigen::Isometry3f &previous_T_WS, const float *reduction_output_data, const Eigen::Vector2i &reduction_output_res, const float track_threshold)
TrackingResult
Definition icp.hpp:21
@ ResultUnknown
Definition icp.hpp:23
@ ResultSuccess
Definition icp.hpp:22
@ ResultProjectionOutside
Definition icp.hpp:25
@ ResultDistThreshold
Definition icp.hpp:27
@ ResultNormalThreshold
Definition icp.hpp:28
@ ResultInvalidRefNormal
Definition icp.hpp:26
@ ResultInvalidInputNormal
Definition icp.hpp:24
void trackKernel(Data *output_data, const Image< Eigen::Vector3f > &input_point_cloud_S, const Image< Eigen::Vector3f > &input_normals_S, const Image< Eigen::Vector3f > &surface_point_cloud_M_ref, const Image< Eigen::Vector3f > &surface_normals_M_ref, const Eigen::Isometry3f &T_WS, const Eigen::Isometry3f &T_WS_ref, const ProjectF project, const float dist_threshold, const float normal_threshold)
ProjectF is functor with the following declaration, returning whether the projection of point_S succe...
Eigen::Matrix< float, 6, 6 > makeJTJ(const Eigen::Matrix< float, 1, 21 > &v)
void newReduce(const int block_idx, float *output_data, const Eigen::Vector2i &output_res, Data *J_data, const Eigen::Vector2i &J_res)
Eigen::Matrix< float, 6, 1 > solve(const Eigen::Matrix< float, 1, 27 > &vals)
void reduceKernel(float *output_data, const Eigen::Vector2i &output_res, Data *J_data, const Eigen::Vector2i &J_res)
bool updatePoseKernel(Eigen::Isometry3f &T_WS, const float *reduction_output_data, const float icp_threshold)
Helper wrapper to allocate and de-allocate octants in the octree.
Definition bounded_vector.hpp:14
float error
Definition icp.hpp:33
TrackingResult result
Definition icp.hpp:32
float J[6]
Definition icp.hpp:34