4 #include "../csm_all.h" 26 if(!(max_reading>0)) {
38 for(
int i=0; i<ld->
nrays; i++) {
46 sm_debug(
"Computed HT with %d points.\n", np);
67 if(has_true1 && has_true2) {
80 double zero[3] = {0,0,0};
86 sm_error(
"Could not compute buffers (too few points?).\n");
118 sm_error(
"HSM did not produce any result.\n");
double norm_d(const double p[2])
void hsm_buffer_free(hsm_buffer b)
void hsm_compute_ht_base(hsm_buffer b, const double base_pose[3])
int hsm_compute_ht_for_scan(LDP ld, struct hsm_params *p, const double base[3], hsm_buffer *b)
int num_angular_hypotheses
const char * friendly_pose(const double *pose)
void hsm_compute_ht_point(hsm_buffer b, double x0, double y0, double weight)
INLINE int ld_valid_ray(LDP ld, int i)
void options_double(struct option *, const char *name, double *p, double def_value, const char *desc)
void hsm_compute_spectrum(hsm_buffer b)
double angular_cell_size_deg
hsm_buffer hsm_buffer_alloc(struct hsm_params *p)
double linear_xc_peaks_min_distance
void sm_hsm(struct sm_params *params, struct sm_result *res)
double *restrict readings
void hsm_match(struct hsm_params *p, hsm_buffer b1, hsm_buffer b2)
double max_in_array(const double *v, int n)
void options_int(struct option *, const char *name, int *p, int def_value, const char *desc)
double xc_directions_min_distance_deg
void hsm_add_options(struct option *ops, struct hsm_params *p)
void oplus_d(const double x1[3], const double x2[3], double res[3])
void sm_debug(const char *msg,...)
void sm_info(const char *msg,...)
int any_nan(const double *d, int n)
void pose_diff_d(const double pose2[3], const double pose1[3], double res[3])
void ld_compute_cartesian(LDP ld)
void sm_error(const char *msg,...)
double angular_hyp_min_distance_deg