The Localize Module (localize)

The CARMEN localization module. More...


Files

file  localizecore.h
 Library for Monto-Carlo localization.
file  localize_interface.h
 Definition of the interface of the module localize.
file  localize_messages.h
 Definition of the messages for this module.
file  localize_motion.h
 Library for the new CARMEN motion_model.

Data Structures

struct  carmen_localize_param_t
struct  carmen_localize_particle_t
struct  carmen_localize_particle_filter_t
struct  carmen_localize_laser_point_t
struct  carmen_localize_summary_t
struct  carmen_localize_initialize_message
struct  carmen_localize_initialize_placename_message
struct  carmen_localize_globalpos_message
struct  carmen_localize_particle_ipc_t
struct  carmen_localize_particle_message
struct  carmen_localize_sensor_message
struct  carmen_localize_map_query_message
struct  carmen_localize_map_message
struct  carmen_localize_motion_model_t

Defines

#define SMALL_PROB   0.01
#define CARMEN_INITIALIZE_UNIFORM   1
#define CARMEN_INITIALIZE_GAUSSIAN   2
#define CARMEN_LOCALIZE_INITIALIZE_NAME   "carmen_localize_initialize"
#define CARMEN_LOCALIZE_INITIALIZE_FMT   "{int,int,<{double,double,double}:2>,<{double,double,double}:2>,double,string}"
#define CARMEN_LOCALIZE_INITIALIZE_PLACENAME_NAME   "carmen_localize_initialize_placename"
#define CARMEN_LOCALIZE_INITIALIZE_PLACENAME_FMT   "{string,double,string}"
#define CARMEN_LOCALIZE_GLOBALPOS_NAME   "carmen_localize_globalpos"
#define CARMEN_LOCALIZE_GLOBALPOS_FMT   "{{double,double,double},{double,double,double},{double,double,double},double,int,double,string}"
#define CARMEN_LOCALIZE_PARTICLE_NAME   "carmen_localize_particle"
#define CARMEN_LOCALIZE_PARTICLE_FMT   "{int,<{float,float,float,float}:1>,{double,double,double},{double,double,double},double,double,string}"
#define CARMEN_LOCALIZE_SENSOR_NAME   "carmen_localize_sensor"
#define CARMEN_LOCALIZE_SENSOR_FMT   "{{int,double,double,double,double,double,int},int,int,<float:2>,<char:2>,{double,double,double},int,double,string}"
#define CARMEN_LOCALIZE_MAP_QUERY_NAME   "carmen_localize_map_query"
#define CARMEN_LOCALIZE_MAP_QUERY_FMT   "{int,double,string}"
#define CARMEN_LOCALIZE_MAP_NAME   "carmen_localize_map"
#define CARMEN_LOCALIZE_MAP_FMT   "{<char:2>,int,{int,int,double,string},int,int,double,string}"
#define CARMEN_LOCALIZE_GLOBALPOS_QUERY_NAME   "carmen_localize_globalpos_query"

Typedefs

typedef * carmen_localize_param_p
typedef * carmen_localize_particle_p
typedef * carmen_localize_particle_filter_p
typedef * carmen_localize_laser_point_p
typedef * carmen_localize_summary_p
typedef * carmen_localize_particle_ipc_p
typedef carmen_default_message carmen_localize_globalpos_query_message

Functions

carmen_localize_particle_filter_p carmen_localize_particle_filter_new (carmen_localize_param_p param)
void carmen_localize_initialize_particles_uniform (carmen_localize_particle_filter_p filter, carmen_robot_laser_message *laser, carmen_localize_map_p map)
void carmen_localize_initialize_particles_gaussians (carmen_localize_particle_filter_p filter, int num_modes, carmen_point_t *mean, carmen_point_t *std)
void carmen_localize_initialize_particles_gaussian (carmen_localize_particle_filter_p filter, carmen_point_t mean, carmen_point_t std)
void carmen_localize_initialize_particles_manual (carmen_localize_particle_filter_p filter, double *x, double *y, double *theta, double *weight, int num_particles)
int carmen_localize_initialize_particles_placename (carmen_localize_particle_filter_p filter, carmen_map_placelist_p placelist, char *placename)
void carmen_localize_incorporate_odometry (carmen_localize_particle_filter_p filter, carmen_point_t odometry_position)
void carmen_localize_incorporate_laser (carmen_localize_particle_filter_p filter, carmen_localize_map_p map, int num_readings, float *range, double forward_offset, double angular_resolution, double laser_maxrange, double first_beam_angle, int backwards)
void carmen_localize_resample (carmen_localize_particle_filter_p filter)
void carmen_localize_run (carmen_localize_particle_filter_p filter, carmen_localize_map_p map, carmen_robot_laser_message *laser, double forward_offset, int backwards)
void carmen_localize_laser_scan_gd (int num_readings, float *range, double angular_resolution, double first_beam_angle, carmen_point_p laser_pos, double forward_offset, carmen_localize_map_p map, int laser_skip)
void carmen_localize_summarize (carmen_localize_particle_filter_p filter, carmen_localize_summary_p summary, carmen_localize_map_p map, int num_readings, float *range, double forward_offset, double angular_resolution, double first_beam_angle, int backwards)
void carmen_localize_subscribe_globalpos_message (carmen_localize_globalpos_message *globalpos, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void carmen_localize_unsubscribe_globalpos_message (carmen_handler_t handler)
void carmen_localize_subscribe_particle_message (carmen_localize_particle_message *particle, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void carmen_localize_unsubscribe_particle_message (carmen_handler_t handler)
void carmen_localize_subscribe_initialize_message (carmen_localize_initialize_message *init_msg, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void carmen_localize_unsubscribe_initialize_message (carmen_handler_t handler)
void carmen_localize_subscribe_initialize_placename_message (carmen_localize_initialize_placename_message *initialize, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void carmen_localize_unsubscribe_initialize_placename_message (carmen_handler_t handler)
void carmen_localize_subscribe_sensor_message (carmen_localize_sensor_message *sensor_msg, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void carmen_localize_unsubscribe_sensor_message (carmen_handler_t handler)
void carmen_localize_initialize_gaussian_command (carmen_point_t mean, carmen_point_t std)
void carmen_localize_initialize_uniform_command (void)
void carmen_localize_initialize_placename_command (char *placename)
void carmen_localize_correct_odometry (carmen_base_odometry_message *odometry, carmen_localize_globalpos_message *globalpos)
void carmen_localize_correct_laser (carmen_robot_laser_message *laser, carmen_localize_globalpos_message *globalpos)
int carmen_localize_get_map (int global, carmen_map_t *map)
int carmen_localize_get_globalpos (carmen_localize_globalpos_message **globalpos)
carmen_localize_motion_model_tcarmen_localize_motion_initialize (int argc, char *argv[])
double carmen_localize_sample_noisy_downrange (double delta_t, double delta_theta, carmen_localize_motion_model_t *model)
double carmen_localize_sample_noisy_crossrange (double delta_t, double delta_theta, carmen_localize_motion_model_t *model)
double carmen_localize_sample_noisy_turn (double delta_t, double delta_theta, carmen_localize_motion_model_t *model)

Detailed Description

The CARMEN localization module.

The module localize provides Monte-Carlo localization for CARMEN. It furthermore provides the library localizecore which contains all relevant MCL functionality.


Function Documentation

void carmen_localize_incorporate_laser carmen_localize_particle_filter_p  filter,
carmen_localize_map_p  map,
int  num_readings,
float *  range,
double  forward_offset,
double  angular_resolution,
double  laser_maxrange,
double  first_beam_angle,
int  backwards
 

Compute the particle weights according to the observation likelihood p(z|m,x)

Parameters:
filter Particle filter structure the function is applied to.
map Map of the environment.
num_readings Number of beams of that measurement.
range The measured distances.
forward_offset Offset of the laser in x direction.
angular_resolution The angle between to beams.
laser_maxrange The angle between to beams.
first_beam_angle Angle of the first beam of a laser (often -0.5*PI)
backwards Is it the rearlaser (=1) or the frontlaser(=0)

void carmen_localize_incorporate_odometry carmen_localize_particle_filter_p  filter,
carmen_point_t  odometry_position
 

Draw the pose of the samples based on the proposal given by the motion model

Parameters:
filter Particle filter structure the function is applied to.
odometry_position Odometry-based pose estimate.

void carmen_localize_initialize_particles_gaussian carmen_localize_particle_filter_p  filter,
carmen_point_t  mean,
carmen_point_t  std
 

Creates a Gaussian distribution of particles

Parameters:
filter Particle filter structure the function is applied to.
mean mean of the Gaussian
std std var of the Gaussian

void carmen_localize_initialize_particles_gaussians carmen_localize_particle_filter_p  filter,
int  num_modes,
carmen_point_t mean,
carmen_point_t std
 

Creates a multi Gaussian distribution of particles

Parameters:
filter Particle filter structure the function is applied to.
num_modes Number of modes if Gaussian to create the initial distrubution.
mean Array of means (array size = num_modes)
std Array of standard variances (array size = num_modes)

void carmen_localize_initialize_particles_manual carmen_localize_particle_filter_p  filter,
double *  x,
double *  y,
double *  theta,
double *  weight,
int  num_particles
 

Directly initialized the Samples

Parameters:
filter Particle filter structure the function is applied to.

void carmen_localize_initialize_particles_uniform carmen_localize_particle_filter_p  filter,
carmen_robot_laser_message laser,
carmen_localize_map_p  map
 

Creates a distribution of particles over the map based on the given observation

Parameters:
filter Particle filter structure the function is applied to.
laser Laser message used to generate the distribution.
map Map which is used to compute p(z|m,x) for the initialized samples.

carmen_localize_particle_filter_p carmen_localize_particle_filter_new carmen_localize_param_p  param  ) 
 

Create (allocate memory for) a new particle filter

void carmen_localize_resample carmen_localize_particle_filter_p  filter  ) 
 

Carries out the resampling step.

Parameters:
filter Particle filter structure the function is applied to.

void carmen_localize_run carmen_localize_particle_filter_p  filter,
carmen_localize_map_p  map,
carmen_robot_laser_message laser,
double  forward_offset,
int  backwards
 

Carry out the three steps of the paricle filter which are: 1) Draw from the motion model. 2) Compute the importance weights. 3) Resample.

Parameters:
filter Particle filter structure the function is applied to.
map Map of the environment.
laser A carmen_robot_laser_message which incorporates odoemtry, laser, and its configuration
forward_offset Offset of the laser in x direction.
backwards Is it the rearlaser (=1) or the frontlaser(=0)

void carmen_localize_summarize carmen_localize_particle_filter_p  filter,
carmen_localize_summary_p  summary,
carmen_localize_map_p  map,
int  num_readings,
float *  range,
double  forward_offset,
double  angular_resolution,
double  first_beam_angle,
int  backwards
 

Carry a summary for sending it via ipc to other modules liek the gui


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