Go to the documentation of this file.00001 #ifndef _H_ICP_
00002 #define _H_ICP_
00003
00004 #include <gpc/gpc.h>
00005 #include "../csm_all.h"
00006
00007
00009 void sm_icp(struct sm_params*params, struct sm_result*res);
00010
00011 void sm_icp_xy(struct sm_params*params, struct sm_result*res);
00012
00014 int icp_loop(struct sm_params*params, const double*q0, double*x_new,
00015 double*total_error, int*nvalid, int*iterations);
00016
00019 int compute_next_estimate(struct sm_params*params,
00020 const double x_old[3], double x_new[3]);
00021
00026 int termination_criterion(struct sm_params*params, const double*delta);
00027
00029 void find_correspondences(struct sm_params*params);
00031 void find_correspondences_tricks(struct sm_params*params);
00034 void debug_correspondences(struct sm_params * params);
00035
00036 void kill_outliers_trim(struct sm_params*params, double*total_error);
00037 void kill_outliers_double(struct sm_params*params);
00038
00039 void compute_covariance_exact(
00040 LDP laser_ref, LDP laser_sens, const gsl_vector*x,
00041 val *cov0_x, val *dx_dy1, val *dx_dy2);
00042
00043 void visibilityTest(LDP ld, const gsl_vector*x_old);
00044
00046 void ld_invalid_if_outside(LDP ld, double min_reading, double max_reading);
00047
00048 void swap_double(double*a,double*b);
00049
00050 #endif