laser.h
00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef LASER_H
00010 #define LASER_H
00011
00012 #include "../pf/pf.h"
00013 #include "../map/map.h"
00014
00015 #ifdef __cplusplus
00016 extern "C" {
00017 #endif
00018
00019
00020
00021 typedef struct
00022 {
00023 double range, bearing;
00024
00025 } laser_range_t;
00026
00027
00028
00029 typedef struct
00030 {
00031
00032 map_t *map;
00033
00034
00035 pf_vector_t laser_pose;
00036
00037
00038 double range_cov;
00039
00040
00041 double range_bad;
00042
00043
00044 int lut_size;
00045 double lut_res;
00046 double *lut_probs;
00047
00048
00049 int range_count;
00050 laser_range_t *ranges;
00051
00052 } laser_t;
00053
00054
00055
00056 laser_t *laser_alloc(map_t *map);
00057
00058
00059 void laser_free(laser_t *sensor);
00060
00061
00062 void laser_clear_ranges(laser_t *sensor);
00063
00064
00065 void laser_add_range(laser_t *sensor, double range, double bearing);
00066
00067
00068 double laser_sensor_model(laser_t *sensor, pf_vector_t pose);
00069
00070
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074
00075 #endif
00076