📄 fast-slam.h.svn-base
字号:
#ifndef GRID_FAST_SLAM_H#define GRID_FAST_SLAM_H#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <sys/types.h>#include <sys/time.h>#include <time.h>#include <signal.h>#include <unistd.h>#include <math.h>#include <string.h>#include <ctype.h>#include <values.h>#include <carmen/carmen.h>#include <carmen/logtools.h>#define MAX_NAME_LENGTH 256 typedef struct { int detect_size; double detect_size_border; double size_x; double size_y; double start_x; double start_y; double resolution; int dump_screen; char dump_filename[MAX_NAME_LENGTH]; char result_filename[MAX_NAME_LENGTH]; int num_samples; double min_step_distance; double max_range_length; double max_usable_length; double rotation_noise; double sideward_noise; double forward_noise; double min_likelihood; double max_likelihood; double unknown_likelihood; int show_graphics; int show_local_map; int kernel_size; int laser_id;} FASTSLAM_SETTINGS;typedef struct { logtools_rpos2_t offset; double resolution; float ** maphit; short ** mapsum; float ** mapprob; float ** calc; logtools_ivector2_t mapsize; logtools_vector2_t center;} MAP2;#define logtools_grid_object_t logtools_grid_line_ttypedef struct { logtools_bounding_box_t bbox; logtools_rpos2_t pos;} HISTORY;typedef struct { logtools_rpos2_t pos; double val; double logsum; int histlen; HISTORY * hist; int outside;} PARTICLE;typedef struct { int numparticles; PARTICLE * particle;} SAMPLE_SET;typedef struct { double r; double g; double b;} RGB;extern FASTSLAM_SETTINGS settings;voidmap_initialize( MAP2 *map, int sx, int sy, int center_x, int center_y, double resolution, logtools_rpos2_t start );voidmap_clear( MAP2 *map );voidupdate_map( MAP2 * map, int numvalues, float * val, float * angle, logtools_rpos2_t estpos, double max_range, double max_usable );voidcompute_probs_of_map( MAP2 * map );voidcompute_voronoi_of_map( MAP2 * map );voidcompute_calc_of_map( MAP2 * map );voidcompute_intersections_of_map( MAP2 * map );voidgrid_circle( logtools_ivector2_t center, int radius, logtools_grid_object_t * circle );voidgrid_line( logtools_ivector2_t start, logtools_ivector2_t end, logtools_grid_line_t *line );voidshow_scan( MAP2 * map, logtools_lasersens2_data_t lsens, double max_range );doublecompute_scan_probability( MAP2 * map, logtools_rpos2_t pos, logtools_lasersens2_data_t lsens, double max_range, double max_usable );doublecompute_beam_prob( MAP2 * map, logtools_rpos2_t pos, double length, double max_range, double * prob1, double * prob2 );intmap_pos_from_rpos( logtools_rpos2_t rpos, MAP2 *map, logtools_ivector2_t *v );doubleget_map_val( logtools_ivector2_t pos, MAP2 map );voidsimple_convolve_map( MAP2 *map, logtools_gauss_kernel_t kernel );voidsimple_convolve_map2( MAP2 *map );doubleprob_unknown_space( double length, int endpoint );intmap_pos_from_rpos( logtools_rpos2_t rpos, MAP2 *map, logtools_ivector2_t *v );intmap_pos_from_vec2( logtools_vector2_t pos, MAP2 *map, logtools_ivector2_t *v );voidresample( SAMPLE_SET sample1, SAMPLE_SET * sample2 );voidcopy_particle( PARTICLE src, PARTICLE *dest );intintersect_bboxes( logtools_bounding_box_t box1, logtools_bounding_box_t box2 );logtools_bounding_box_tcompute_laser_bounding_box( logtools_rpos2_t pos, logtools_lasersens2_data_t lsens, double laser_max_range );intfind_best_particle_logsum( SAMPLE_SET pset );intfind_best_particle_value( SAMPLE_SET pset );voidset_default( void );void read_ini_file( char *filename );voidwrite_map( MAP2 map, char *filename );#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -