35 #ifndef POLAR_SCAN_MATCHING_POLAR_MATCHER_H 36 #define POLAR_SCAN_MATCHING_POLAR_MATCHER_H 46 #define PM_TYPE double // change it to double for higher accuracy and lower speed 49 #define PM_RANGE 1 // range reading is longer than PM_MAX_RANGE 50 #define PM_MOVING 2 // range reading corresponds to a moving point 51 #define PM_MIXED 4 // range reading is a mixed pixel 52 #define PM_OCCLUDED 8 // range reading is occluded 53 #define PM_EMPTY 16 // at that bearing there is no measurment (between 2 56 #define PM_ODO -1 //show results with odometry only in mapping_with_matching() 57 #define PM_PSM 1 //polar scanmatching - matching bearing 58 #define PM_PSM_C 2 //polar scanmatching - using cartesian equations 59 #define PM_ICP 3 //scanmatchign with iterative closest point 60 #define PM_IDC 4 //lu's iterative dual correspondence - not implemented, 62 #define PM_MBICP 5 //scanmatchign with metric based ICP 84 std::vector<PM_TYPE>
r;
85 std::vector<PM_TYPE>
x;
86 std::vector<PM_TYPE>
y;
109 void pm_cov_est(
PM_TYPE err,
double *c11,
double *c12,
double *c22,
double *c33,
110 bool corridor=
false,
PM_TYPE corr_angle=0);
112 void pm_scan_project(
const PMScan *act,
PM_TYPE *new_r,
int *new_bad);
122 m= ( int ) ( a/ ( 2.0*M_PI ) );
163 void pm_median_filter(
PMScan *ls);
166 void pm_find_far_points(
PMScan *ls);
169 void pm_segment_scan(
PMScan *ls);
183 #endif //POLAR_SCAN_MATCHING_POLAR_MATCH_H int PM_MAX_ITER
stopping condition; the pose change has to be smaller than ...
std::vector< PM_TYPE > pm_fi
int PM_STOP_COND_ICP
maximum number of iterations for ICP,MBICP
int PM_SEARCH_WINDOW
minimum number of valid points for scanmatching
double PM_TIME_DELAY
half window size which is searched for correct orientation
PM_TYPE norm_a(PM_TYPE a)
std::vector< PM_TYPE > pm_si
int PM_MAX_ITER_ICP
maximum number of iterations for PSM.PSM_C
double PM_MAX_RANGE
field of view of the laser range finder in degrees
int PM_MIN_VALID_POINTS
[cm] max valid laser range (set this to about 400 for the Hokuyo URG)
std::vector< PM_TYPE > pm_co