algos.h
Go to the documentation of this file.
1 #ifndef H_SCAN_MATCHING_LIB
2 #define H_SCAN_MATCHING_LIB
3 
4 #include <gsl/gsl_vector.h>
5 #include <gsl/gsl_matrix.h>
6 
7 #include "hsm/hsm.h"
8 #include "hsm/hsm_interface.h"
9 #include "laser_data.h"
10 
11 
12 struct sm_params {
17 
19  double first_guess[3];
20 
25 
29  double epsilon_xy;
31  double epsilon_theta;
32 
37 
39  int restart;
43  double restart_dt;
46 
47 
48  /* Functions concerning discarding correspondences.
49  THESE ARE MAGIC NUMBERS -- and they need to be tuned. */
50 
54 
65  double outliers_adaptive_order; /* 0.7 */
66  double outliers_adaptive_mult; /* 2 */
67 
70 
71 
72 
73  /* Functions that compute and use point orientation for defining matches. */
81 
82 
97 
100 
108 
109  /* If 1, the field "readings_sigma" is used to weight the correspondence by 1/sigma^2 */
111 
115 
118 
121  double laser[3];
122 
124  double sigma;
125 
128 
129  /* Parameters specific to GPM (unfinished :-/ ) */
133  /* Parameter specific to HSM (unfinished :-/ ) */
134  struct hsm_params hsm;
135 };
136 
137 
138 struct sm_result {
140  int valid;
141 
143  double x[3];
144 
148  int nvalid;
150  double error;
151 
153  #ifndef RUBY
154  gsl_matrix *cov_x_m;
155  gsl_matrix *dx_dy1_m;
156  gsl_matrix *dx_dy2_m;
157  #endif
158 };
159 
160 
161 void sm_icp(struct sm_params*input, struct sm_result*output);
162 
167 void sm_icp_xy(struct sm_params*input, struct sm_result*output);
168 void sm_gpm(struct sm_params*input, struct sm_result*output);
169 void sm_hsm(struct sm_params*input, struct sm_result*output);
170 
171 /* Unfinished, untested :-/ */
172 void sm_mbcip(struct sm_params*input, struct sm_result*output);
173 
174 
175 
176 void sm_journal_open(const char* file);
177 
178 #endif
hsm_interface.h
sm_params::orientation_neighbourhood
int orientation_neighbourhood
Definition: algos.h:77
sm_params::max_angular_correction_deg
double max_angular_correction_deg
Definition: algos.h:22
sm_result::nvalid
int nvalid
Definition: algos.h:148
sm_icp_xy
void sm_icp_xy(struct sm_params *input, struct sm_result *output)
Definition: icp.c:198
sm_params::use_ml_weights
int use_ml_weights
Definition: algos.h:107
sm_params::max_linear_correction
double max_linear_correction
Definition: algos.h:24
sm_params::use_corr_tricks
int use_corr_tricks
Definition: algos.h:36
sm_params::clustering_threshold
double clustering_threshold
Definition: algos.h:75
sm_params::epsilon_xy
double epsilon_xy
Definition: algos.h:29
sm_params::sigma
double sigma
Definition: algos.h:124
sm_params::restart_dt
double restart_dt
Definition: algos.h:43
sm_params
Definition: algos.h:12
sm_params::outliers_remove_doubles
int outliers_remove_doubles
Definition: algos.h:69
sm_params::max_reading
double max_reading
Definition: algos.h:127
sm_mbcip
void sm_mbcip(struct sm_params *input, struct sm_result *output)
Definition: mbicp_interface.c:3
sm_params::max_iterations
int max_iterations
Definition: algos.h:27
sm_result::iterations
int iterations
Definition: algos.h:146
sm_icp
void sm_icp(struct sm_params *input, struct sm_result *output)
Definition: icp.c:29
sm_params::use_sigma_weights
int use_sigma_weights
Definition: algos.h:110
sm_result::dx_dy2_m
gsl_matrix * dx_dy2_m
Definition: algos.h:156
sm_result::error
double error
Definition: algos.h:150
sm_params::max_correspondence_dist
double max_correspondence_dist
Definition: algos.h:34
sm_params::outliers_adaptive_mult
double outliers_adaptive_mult
Definition: algos.h:66
sm_params::laser_ref
LDP laser_ref
Definition: algos.h:14
sm_params::restart_threshold_mean_error
double restart_threshold_mean_error
Definition: algos.h:41
sm_params::do_alpha_test_thresholdDeg
double do_alpha_test_thresholdDeg
Definition: algos.h:80
sm_gpm
void sm_gpm(struct sm_params *input, struct sm_result *output)
Definition: gpm.c:11
sm_result::valid
int valid
Definition: algos.h:140
sm_params::outliers_maxPerc
double outliers_maxPerc
Definition: algos.h:53
sm_params::restart_dtheta
double restart_dtheta
Definition: algos.h:45
sm_params::do_visibility_test
int do_visibility_test
Definition: algos.h:96
sm_journal_open
void sm_journal_open(const char *file)
Definition: icp.c:14
sm_params::restart
int restart
Definition: algos.h:39
sm_params::gpm_theta_bin_size_deg
double gpm_theta_bin_size_deg
Definition: algos.h:130
sm_params::laser
double laser[3]
Definition: algos.h:121
sm_params::hsm
struct hsm_params hsm
Definition: algos.h:134
sm_result::cov_x_m
gsl_matrix * cov_x_m
Definition: algos.h:154
sm_params::laser_sens
LDP laser_sens
Definition: algos.h:16
sm_result
Definition: algos.h:138
laser_data.h
sm_params::first_guess
double first_guess[3]
Definition: algos.h:19
hsm.h
sm_params::outliers_adaptive_order
double outliers_adaptive_order
Definition: algos.h:65
sm_params::gpm_interval
int gpm_interval
Definition: algos.h:132
sm_params::epsilon_theta
double epsilon_theta
Definition: algos.h:31
laser_data
Definition: laser_data.h:16
sm_params::debug_verify_tricks
int debug_verify_tricks
Definition: algos.h:117
sm_params::min_reading
double min_reading
Definition: algos.h:127
sm_params::gpm_extend_range_deg
double gpm_extend_range_deg
Definition: algos.h:131
sm_result::x
double x[3]
Definition: algos.h:143
sm_params::do_alpha_test
int do_alpha_test
Definition: algos.h:79
sm_result::dx_dy1_m
gsl_matrix * dx_dy1_m
Definition: algos.h:155
sm_hsm
void sm_hsm(struct sm_params *input, struct sm_result *output)
Definition: hsm_interface.c:56
sm_params::do_compute_covariance
int do_compute_covariance
Definition: algos.h:114
sm_params::use_point_to_line_distance
int use_point_to_line_distance
Definition: algos.h:99
hsm_params
Definition: hsm.h:7


csm
Author(s): Andrea Censi
autogenerated on Wed Aug 17 2022 02:50:33