vascocore.h

Go to the documentation of this file.
00001 
00002 // @{
00003 
00011 #ifndef VASCOCORE_UTILS_H
00012 #define VASCOCORE_UTILS_H
00013 
00014 #ifndef _SYS_TIME_H
00015 #include <sys/time.h>
00016 #endif
00017 
00018 #ifndef TRUE
00019 #define TRUE  1
00020 #endif
00021 
00022 #ifndef FALSE
00023 #define FALSE 0
00024 #endif
00025 #ifndef MIN
00026 #define MIN(x,y) (x < y ? x : y)
00027 #endif
00028 
00029 #ifndef MIN3
00030 #define MIN3(x,y,z) MIN(MIN(x,y),z)
00031 #endif
00032 
00033 #ifndef MAX
00034 #define MAX(x,y) (x > y ? x : y)
00035 #endif
00036 
00037 #ifndef MAX3
00038 #define MAX3(x,y,z) MAX(MAX(x,y),z)
00039 #endif
00040 
00041 typedef struct {
00042 
00043   double                    x;
00044   double                    y;
00045 
00046 } carmen_vec2_t;
00047 
00048 typedef struct {
00049 
00050   int                       x;
00051   int                       y;
00052 }
00053 carmen_ivec2_t;
00054 
00055 typedef struct {
00056   
00057   short                     x;
00058   short                     y;
00059 
00060 } carmen_svec2_t;
00061 
00062 typedef struct {
00063   
00064   double                    forward;
00065   double                    sideward;
00066   double                    rotation;
00067 
00068 } carmen_move_t;
00069 
00070 typedef struct {
00071   
00072   int                       len;
00073   double                  * val;
00074 
00075 } carmen_gauss_kernel_t;
00076 
00077 typedef struct {
00078   
00079   carmen_vec2_t             min;
00080   carmen_vec2_t             max;
00081 
00082 } carmen_bbox_t;
00083 
00084 
00085 typedef struct {
00086 
00087   int                                    verbose;
00088   
00089   double                                 max_usable_laser_range;
00090   
00091   double                                 local_map_max_range;
00092   double                                 local_map_resolution;
00093   int                                    local_map_kernel_len;
00094   int                                    local_map_use_odometry;
00095   int                                    local_map_num_convolve;
00096   double                                 local_map_std_val;
00097   int                                    local_map_history_length;
00098   int                                    local_map_max_used_history;
00099   double                                 local_map_min_bbox_distance;
00100   double                                 local_map_object_prob;
00101   int                                    local_map_use_last_scans;
00102 
00103   double                                 bounding_box_max_range;
00104   double                                 bounding_box_border;
00105 
00106   double                                 motion_model_forward;
00107   double                                 motion_model_sideward;
00108   double                                 motion_model_rotation;
00109   
00110   double                                 pos_corr_step_size_forward;
00111   double                                 pos_corr_step_size_sideward;
00112   double                                 pos_corr_step_size_rotation;
00113   int                                    pos_corr_step_size_loop;
00114   
00115 } carmen_vascocore_param_t, *carmen_vascocore_param_p;
00116 
00117 
00118 void *         carmen_mdalloc(int ndim, int width, ...);
00119 
00120 void           camen_mdfree(void *tip, int ndim);
00121 
00122 double         carmen_vec_distance( carmen_vec2_t p1, carmen_vec2_t p2 );
00123 
00124 double         carmen_vec_length( carmen_vec2_t v1 );
00125 
00126 double         carmen_point_dist( carmen_point_t pos1, carmen_point_t pos2 );
00127 
00128 double         carmen_move_length( carmen_move_t move );
00129 
00130 double         carmen_gauss( double x, double mu, double sigma );
00131 
00132 carmen_gauss_kernel_t   carmen_gauss_kernel(int length );
00133 
00134 double         carmen_orientation_diff( double start, double end );
00135 
00136 carmen_vec2_t  carmen_laser_point( carmen_point_t rpos,
00137                                    double val, double angle );
00138 
00139 carmen_point_t carmen_point_with_move( carmen_point_t start,
00140                                        carmen_move_t move );
00141 
00142 carmen_point_t carmen_point_backwards_with_move( carmen_point_t start,
00143                                                  carmen_move_t move );
00144 
00145 carmen_point_t carmen_point_from_move( carmen_move_t move );
00146 
00147 carmen_point_t carmen_point_backwards_from_move( carmen_move_t move );
00148 
00149 carmen_move_t  carmen_move_between_points( carmen_point_t start,
00150                                            carmen_point_t end );
00151 
00152 void           vascocore_init( int argc, char **argv );
00153 void vascocore_init_no_ipc(carmen_vascocore_param_t *new_settings);
00154 
00155 void           vascocore_reset();
00156 
00157 carmen_point_t vascocore_scan_match( carmen_laser_laser_message scan,
00158                                      carmen_point_t pos );
00159 
00160 carmen_point_t
00161 vascocore_scan_match_general(int num_readings, float *range, float *angle,
00162                              double fov,
00163                              carmen_point_t pos, int first);
00164 
00165 #endif /* ifdef BD_UTILS_H */
00166 
00167 // @}

Generated on Wed Apr 5 18:34:18 2006 for CARMEN by  doxygen 1.4.4