Hokuyo_utm
[Laser]

Handles the interface with the hokuyo UTM30-LX. More...

Collaboration diagram for Hokuyo_utm:

Data Structures

struct  TYPE_hokuyo_perceptionvolume
struct  hokuyo_utm_query_data_message
 This is an image query message, This is used to ask for an image to a server module. More...
struct  hokuyo_utm_heartbeat_message
 This is an image heartbeat message. When a server module as has a new image, it publishes a heartbeat message. More...
struct  hokuyo_shminfo_query_message
 Used to query the server for shared memory id and other features. More...
struct  hokuyo_shminfo_server_message
struct  TYPE_shm
struct  t_types

Files

file  hokuyo_utm_interface.cpp
 

Where the interface functions are defined.


file  hokuyo_utm_interface.h
 

Defines public funtions prototypes this module's interface library makes available to other modules.


file  hokuyo_utm_messages.h
 

Defines all messages this module uses.


file  hokuyo_utm_publish.cpp
 

The publisher module.


file  hokuyo_utm_publish.cpp
 

The publisher module.


file  hokuyo_utm_queryexample.cpp
 

An example of how hokuyo messages should be queryed.


file  hokuyo_utm_server.cpp
 

The server process.


file  hokuyo_utm_subscribe.cpp
 

An example of how hokuyo messages should be subscribed.


Defines

#define HOKUYO_UTM_SERVER_DATA_NAME   (char*)"carmen_hokuyo_utm_server_data"
 Control message to pass to the process control module. Always capitals finishes with _RESET_OCCURRED_NAME and the value is small letters the same without the suffix name.
#define HOKUYO_UTM_SERVER_DATA_FMT   CARMEN_LASER_LASER_FMT
 Control message to pass to the process control module. Always capitals finishes with _RESET_COMMAND_NAME and the value is small letters the same without the suffix name.
#define HOKUYO_POINTCLOUD_MESSAGE_NAME   (char*)"hokuyo_pointcloud"
#define HOKUYO_POINTCLOUD_MESSAGE_FMT   XB3_3DPOINTCLOUD_MESSAGE_FMT
#define HOKUYO_UTM_QUERY_DATA_NAME   (char*)"carmen_hokuyo_utm_query_data"
#define HOKUYO_UTM_QUERY_DATA_FMT   (char*)"{int,double,string}"
#define HOKUYO_UTM_HEARTBEAT_NAME   (char*)"carmen_hokuyo_utm_heartbeat"
#define HOKUYO_UTM_HEARTBEAT_FMT   (char*)"{int,double,string}"
#define HOKUYO_UTM_SERVER_DATA_MODULE_NAME   (char*)"carmen_hokuyo_utm_server_data_module"
#define HOKUYO_SHMINFO_QUERY_NAME   (char*)"hokuyo_shminfo_query"
#define HOKUYO_SHMINFO_QUERY_FMT   (char*)"{int,double,string}"
#define HOKUYO_SHMINFO_SERVER_NAME   (char*)"hokuyo_shminfo_server"
#define HOKUYO_SHMINFO_SERVER_FMT   (char*)"{int,int,double,string}"
#define _HOKUYO_UTM_PUBLISH_CPP_DEBUGFLAG_   TRUE
#define _HOKUYO_UTM_SERVER_CPP_DEBUGFLAG_   TRUE

Typedefs

typedef TYPE_xbcameratmatrix_params TYPE_hokuyomatrix_params
typedef xb3_3dpointcloud_message hokuyo_pointcloud_message

Functions

void hokuyo_utm_subscribe_data (int laser_id, carmen_laser_laser_message *msg, carmen_handler_t handler)
void hokuyo_utm_publish_data (int laser_id, carmen_laser_laser_message *msg)
int hokuyo_utm_query_data (double timetowait, carmen_laser_laser_message **l_msg)
int hokuyo_query_shminfo (double timetowait, int *shmid, int *shmsize)
void hokuyo_utm_publish_heartbeat (void)
void hokuyo_utm_subscribe_heartbeat (hokuyo_utm_heartbeat_message *msg, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void hokuyo_utm_unsubscribe_heartbeat (carmen_handler_t handler)
void hokuyo_publish_3dpointcloud_message (hokuyo_pointcloud_message *msg)
void hokuyo_subscribe_3dpointcloud_message (hokuyo_pointcloud_message *dst, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
void param_daemon_install_hokuyomatrix_params (TYPE_hokuyomatrix_params *p, int subscribe_changes, int verbose)
void param_daemon_install_hokuyo_perceptionvolume_params (TYPE_hokuyo_perceptionvolume *p, int subscribe_changes, int verbose)
void shutdown_module (int x)
 makes a clean shutdown of the program
int main (int argc, char *argv[])
static void urg_exit (urg_t *urg, const char *message)
void heartbeat_handler (carmen_heartbeat_message *)
 TO BE REMOVED.
int main (int argc, char **argv)
void query_shminfo_handler (MSG_INSTANCE msgRef, BYTE_ARRAY callData, void *)
void hokuyo_utm_laser_handler ()

Variables

static carmen_laser_laser_message lasermsg
static char * laser_dev
static char * inifile
static int laser_cluster
static int ** scan
carmen_param_t laser_params []
int cycle_freq
int low_freq = 0
c_timer timer
int data_max
long * data
int timestamp
int n
int i
urg_t urg
static carmen_laser_laser_message lasermsg
static char * laser_dev
static char * inifile
static int laser_cluster
hokuyo_pointcloud_message pointcloud_message
int ret
TYPE_executionflags flg
carmen_param_t laser_params []
char hokuyo_message_heartbeat = 0
carmen_laser_laser_message * lasermsg = NULL
TYPE_executionflags flg
c_videosavingvideosaving
TYPE_executionflags flg
static char * laser_dev
static char * inifile
static int laser_cluster
TYPE_shm shm
int data_max
long * data
int timestamp
int ret
int n
int i
urg_t urg
static carmen_laser_laser_message lasermsg
c_timer timer
double ts
int cycle_freq
int low_freq = 0
carmen_param_t module_refresh_params []
carmen_param_t laser_params []
hokuyo_pointcloud_message pointcloud_message
carmen_laser_laser_message lasermsg

Detailed Description

Handles the interface with the hokuyo UTM30-LX.


Define Documentation

#define _HOKUYO_UTM_PUBLISH_CPP_DEBUGFLAG_   TRUE
#define _HOKUYO_UTM_SERVER_CPP_DEBUGFLAG_   TRUE
#define HOKUYO_POINTCLOUD_MESSAGE_FMT   XB3_3DPOINTCLOUD_MESSAGE_FMT

Referenced by register_ipc_messages().

#define HOKUYO_POINTCLOUD_MESSAGE_NAME   (char*)"hokuyo_pointcloud"

Referenced by register_ipc_messages().

#define HOKUYO_SHMINFO_QUERY_FMT   (char*)"{int,double,string}"
#define HOKUYO_SHMINFO_QUERY_NAME   (char*)"hokuyo_shminfo_query"
#define HOKUYO_SHMINFO_SERVER_FMT   (char*)"{int,int,double,string}"
#define HOKUYO_SHMINFO_SERVER_NAME   (char*)"hokuyo_shminfo_server"
#define HOKUYO_UTM_HEARTBEAT_FMT   (char*)"{int,double,string}"

Referenced by register_ipc_messages().

#define HOKUYO_UTM_HEARTBEAT_NAME   (char*)"carmen_hokuyo_utm_heartbeat"

Referenced by register_ipc_messages().

#define HOKUYO_UTM_QUERY_DATA_FMT   (char*)"{int,double,string}"

Referenced by main().

#define HOKUYO_UTM_QUERY_DATA_NAME   (char*)"carmen_hokuyo_utm_query_data"

Referenced by main().

#define HOKUYO_UTM_SERVER_DATA_FMT   CARMEN_LASER_LASER_FMT

Control message to pass to the process control module. Always capitals finishes with _RESET_COMMAND_NAME and the value is small letters the same without the suffix name.

Referenced by main().

#define HOKUYO_UTM_SERVER_DATA_MODULE_NAME   (char*)"carmen_hokuyo_utm_server_data_module"
#define HOKUYO_UTM_SERVER_DATA_NAME   (char*)"carmen_hokuyo_utm_server_data"

Control message to pass to the process control module. Always capitals finishes with _RESET_OCCURRED_NAME and the value is small letters the same without the suffix name.

Note:
This module uses already defined laser messages in laser-new from carmen.

Referenced by heartbeat_handler(), and main().


Typedef Documentation


Function Documentation

void heartbeat_handler ( carmen_heartbeat_message *   ) 

TO BE REMOVED.

All the processing is done when the data is recieved, so this function has all the work.

Returns:
void

References TYPE_executionflags::debug, hokuyo_message_heartbeat, HOKUYO_UTM_SERVER_DATA_NAME, and sensorfusion_heartbeat.

void hokuyo_publish_3dpointcloud_message ( hokuyo_pointcloud_message msg  ) 

Referenced by main().

Here is the caller graph for this function:

int hokuyo_query_shminfo ( double  timetowait,
int *  shmid,
int *  shmsize 
)
void hokuyo_subscribe_3dpointcloud_message ( hokuyo_pointcloud_message dst,
carmen_handler_t  handler,
carmen_subscribe_t  subscribe_how 
)
void hokuyo_utm_laser_handler (  ) 

Referenced by main().

Here is the caller graph for this function:

void hokuyo_utm_publish_data ( int  laser_id,
carmen_laser_laser_message *  msg 
)
void hokuyo_utm_publish_heartbeat ( void   ) 

Referenced by main().

Here is the caller graph for this function:

int hokuyo_utm_query_data ( double  timetowait,
carmen_laser_laser_message **  l_msg 
)

Connecting to SHM

Referenced by main().

Here is the caller graph for this function:

void hokuyo_utm_subscribe_data ( int  laser_id,
carmen_laser_laser_message *  msg,
carmen_handler_t  handler 
)

Referenced by main().

Here is the caller graph for this function:

void hokuyo_utm_subscribe_heartbeat ( hokuyo_utm_heartbeat_message msg,
carmen_handler_t  handler,
carmen_subscribe_t  subscribe_how 
)

Referenced by main().

Here is the caller graph for this function:

void hokuyo_utm_unsubscribe_heartbeat ( carmen_handler_t  handler  ) 
int main ( int  argc,
char **  argv 
)

References c, hokuyo_utm_laser_handler(), hokuyo_utm_subscribe_data(), img, t_types::inteiro, key(), lasermsg, sf, shutdown_module(), and t.

Here is the call graph for this function:

int main ( int  argc,
char *  argv[] 
)
void param_daemon_install_hokuyo_perceptionvolume_params ( TYPE_hokuyo_perceptionvolume p,
int  subscribe_changes,
int  verbose 
)
void param_daemon_install_hokuyomatrix_params ( TYPE_hokuyomatrix_params p,
int  subscribe_changes,
int  verbose 
)

Referenced by main().

Here is the caller graph for this function:

void query_shminfo_handler ( MSG_INSTANCE  msgRef,
BYTE_ARRAY  callData,
void *   
)
void shutdown_module ( int  x  ) 

makes a clean shutdown of the program

makes a clean shutdown of the program.

Module shutdown function.

The main header file for egointerface module.

Safe shutdown.

Does a safe shutdown. Disconnects from IPC. Preform log closing operations and update log statistics.

Safe shutdown of module.

Make a clean exit.

Shuts down cm module with a clean exit.

Does a safe shutdown. Disconnects from IPC.

To do a safe ctrl +c exit.

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

The main header file for this module.

Returns:
nothing for now (should return an error code)
#ifndef _DES70_10_H_
#define _DES70_10_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/lar.h>
//#include <lar/readcommandlineparameters.h>

//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


typedef struct{
    int baudrate;

    int sys_config;
    int cur_reg_gain_p;
    int cur_reg_gain_i;
    int max_cur_output;
    int speed_reg_gain_p;
    int speed_reg_gain_i;
    int internal_param1;
    int internal_param2;
    int internal_param3;
    int max_speed_error;
    int setting_unit_gain;
    int setting_unit_offset;
    int setting_unit_delay;
    int peak_current;
    int max_cont_current;
    int therm_const;
    int max_speed;
    int acceleration;
    int speed_constant;
    int enc_resolution;
    int pole_pair_number;
    int internal_param4;
    int rpm2qc_factor;
    int index_offset;
    int pwm_period;
    int max_duty_cycle;
    int cur_det_ph_u_offset;
    int cur_det_ph_v_offset;
    int ad_conv_offset;
    int can_module_id;
    int can_service_id;
    int can_rx_pdo_id;
    int can_tx_pdo_id;
    int can_bcr1;
    int can_bcr2;
    int can_op_mode;
    int can_rx_sdo_id;
    int can_tx_sdo_id;
    int can_rtr0_id;
    int can_rtr1_id;
    int can_config;
    int internal_param5;
    int error_proc;
    int max_speed_curr;
    int hall_angle_offs;
}TYPE_des_sysparam;

enum ENUM_DES_SYS_PARAMS
{
    BAUDRATE = 0, 
    SYS_CONFIG = 1,
    CUR_REG_GAIN_P = 2,
    CUR_REG_GAIN_I = 3,
    MAX_CUR_OUTPUT = 4,
    SPEED_REG_GAIN_P = 5,
    SPEED_REG_GAIN_I = 6,
    INTERNAL_PARAM1 = 7,
    INTERNAL_PARAM2 = 8,
    INTERNAL_PARAM3 = 9,
    MAX_SPEED_ERROR = 10,
    SETTING_UNIT_GAIN = 11,
    SETTING_UNIT_OFFSET = 12,
    SETTING_UNIT_DELAY = 13,
    PEAK_CURRENT = 14,
    MAX_CONT_CURRENT = 15,
    THERM_CONST = 16,
    MAX_SPEED = 17,
    ACCELERATION = 18,
    SPEED_CONSTANT = 19,
    ENC_RESOLUTION = 20,
    POLE_PAIR_NUMBER = 21,
    INTERNAL_PARAM4 = 22,
    RPM_2QC_FACTOR = 23,
    INDEX_OFFSET = 24,
    PWM_PERIOD = 25,
    MAX_DUTY_CYCLE = 26,
    CUR_DET_PH_U_OFFSET = 27,
    CUR_DET_PH_V_OFFSET = 28,
    AD_CONV_OFFSET = 29,
    CAN_MODULE_ID = 30,
    CAN_SERVICE_ID = 31,
    CAN_RX_PDO_ID = 32,
    CAN_TX_PDO_ID = 33,
    CAN_BCR1 = 34,
    CAN_BCR2 = 35,
    CAN_OP_MODE = 36,
    CAN_RX_SDO_ID = 37,
    CAN_TX_SDO_ID = 38,
    CAN_RTR0_ID = 39,
    CAN_RTR1_ID = 40,
    CAN_CONFIG = 41,
    INTERNAL_PARAM5 = 42,
    ERROR_PROC = 43,
    MAX_SPEED_CURR = 44,
    HALL_ANGLE_OFFS = 45
};

typedef struct{
    int sys_op_status;
    int actual_mean_cur_d;
    int actual_mean_cur_q;
    int cur_setting_val;
    int rel_rot_pos_rev;
    int speed_setting_val;
    int actual_mean_speed_val;
    int abs_rotor_pos;
    int standard_error;
    int can_error;
    int actual_cur_q;
    int actual_speed_val;
    int error_hist1;
    int error_hist2;
    int enc_counter;
    int enc_counter_last_ind;
    int hall_sens_pat;
}TYPE_DES_status_var;

enum ENUM_DES_STATUS_VAR
{
    SYS_OP_STATUS = 128,
    ACTUAL_MEAN_CUR_D = 129,
    ACTUAL_MEAN_CUR_Q = 130,
    CUR_SETTING_VAL = 131,
    REL_ROT_POS_REV = 132,
    SPEED_SETTING_VAL = 133,
    ACTUAL_MEAN_SPEED_VAL = 134,
    ABS_ROTOR_POS = 135,
    STANDARD_ERROR = 136,
    CAN_ERROR = 137,
    ACTUAL_CUR_Q = 138,
    ACTUAL_SPEED_VAL = 139,
    ERROR_HIST1 = 140,
    ERROR_HIST2 = 141,
    ENC_COUNTER = 142,
    ENC_COUNTER_LAST_IND = 143,
    HALL_SENS_PAT = 144,
};

typedef struct{
    unsigned char OpCode;
    unsigned char data[520];
    int size;
    int crc;
}TYPE_msg_frame;


//####################################################################
// Prototypes:  for private functions can be declared #################
// in des70_10.c or preferably in des70_10_functions.c  ##
//####################################################################



//-------   des70_10_init.cpp       -------
int InitDES_communication(char* com_device, int* port, int baud, TYPE_executionflags* flg);

//-------   des70_10_functions.cpp  -------
int calc_crc_16(TYPE_msg_frame* msg);
int write_msg_inbuf(const int port, unsigned char* data, int size);
int check_msg_aceptance(const int port, float wait_time, unsigned char* msg);
int send_OpCode(const int port, unsigned char tries, unsigned char OpCode, char flg);
int send_data(const int port, TYPE_msg_frame* msg, char flg);
int read_buffer(const int port, TYPE_msg_frame* msg, char flg);
int send_msg_frame(const int port, TYPE_msg_frame* msg, char flg);
int DES_ST_read_sys_status(const int port, int* sys_status, char flg);
int DES_ST_read_error(const int port, int* errors, char flg);
int DES_ST_clear_errors(const int port, char flg);
int DES_ST_reset(const int port, char flg);
int DES_ST_enable(const int port, int* newState, char flg);
int DES_SPF_read_temp_param(const int port, int paramNb, int dataFormat, int* response, char flg);
int DES_SPF_set_temp_param(const int port, int paramNb, int dataFormat, int* newValue, char flg);
int DES_SPF_read_all_temp_param(const int port, TYPE_des_sysparam* sysparam, char flg);
int DES_SF_set_velocity(const int port, int newVelocity, char flg);
int DES_SF_set_current(const int port, int newCurrent, char flg);
int DES_SF_stop_motion(const int port, char flg);
int DES_MF_read_velocity_is_must(const int port, int vel_type, int* velocity, int* requested_vel, char flg);
int InitDES(const int port, TYPE_des_sysparam* newSysParam, char flg);
int stopDES(const int port, char flg);
int DES_set_new_baud(int* port, int baud, char flg);



#ifdef _DES70_10_FUNCTIONS_C_

#else

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
x the type of signal sent: SIGINT etc
#ifndef _POWERMANAGER_H_
#define _POWERMANAGER_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/powermanager_interface.h>

#define _SERIALPORT_ "/dev/ttyUSB0"
//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in powermanager.c or preferably in powermanager_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_command_msg(void);
void initialize_communications(void);
int send_to_plc(unsigned char byte_value);
//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _POWERMANAGER_CPP_ /*or _POWERMANAGER_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?


TYPE_executionflags flags; //the command line parameters flags


//creates a the default structure that will deal retrieve parameters.
// explain fields (use a handler whenever a parameter changes)
// var1 in this case is actually

int PortHandle;
powermanager_status_message status_msg;
powermanager_command_message command_msg;

#else

extern TYPE_executionflags flags;
extern powermanager_status_message status_msg;
extern powermanager_command_message command_msg;
extern int PortHandle;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
x the SIGNAL
Todo:
many modules use this. Should be an util library.
#ifndef _XBEE_H_
#define _XBEE_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/xbee_interface.h>
#include <strings.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in xbee.c or preferably in xbee_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
void initialize_xbee(void);
void xbee_transmit_data(void);
void xbee_receive_data(void);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _XBEE_CPP_ /*or _XBEE_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?

char *COM_DEVICE_XBEE;      //will receive com device address
double read_frequency;      //will receive com device access frequency
TYPE_executionflags flags; //the command line parameters flags
xbee_rx_data_message rx_message; //this is a message structure
xbee_tx_data_message tx_message; //this is a message structure
TYPE_xbee_public_params params; //this is a parameters structure
int device_handler_xbee;
char* tx_string;

//creates a the default structure that will deal with retrieved parameters.
// explain fields (use a handler whenever a parameter changes)
// the values in the field xbee_data_param_shared_var, from lar.ini, will be installed in var1
// the var type is an integer: CARMEN_PARAM_INT
carmen_param_t xbee_local_parameters[] = {
    {(char*)"xbee", (char*)"frequency", CARMEN_PARAM_DOUBLE, &read_frequency, 1, NULL},
    {(char*)"xbee", (char*)"comport", CARMEN_PARAM_STRING, &COM_DEVICE_XBEE, 0, NULL}}; //prepare param struct
    
#else

extern char *COM_DEVICE_XBEE;       //will receive com device address
extern double read_frequency;       //will receive com device access frequency
extern TYPE_executionflags flags;
extern xbee_rx_data_message rx_message; 
extern xbee_tx_data_message tx_message;
extern TYPE_xbee_public_params params;
extern int device_handler_xbee;
extern char* tx_string;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc

Disconnects from ipc and releases video writer

Parameters:
x Signal value. To shutdown signal must be SIGINT
#ifndef _OT_H_
#define _OT_H_

#include <lar/lar.h>
//#include "/home/atlas/lar/src/perception/planarobstacles/potkf_tese/potkf_interface.h"



enum enum_state {SEARCHING,TRACKING,TARGET_LOST,INITIALISE};


typedef struct
{
    enum_state state;
    unsigned int target_id;
    double current_angle,current_distance;
    double velocity_module,velocity_angle;
    double predicted_angle,predicted_distance;
    double size;
    int life_time;
    int occluded_time;
    int classification;
}t_status;


typedef struct
{
    double start_angle;
    double end_angle;

    double start_range;
    double end_range;

    double min_size;
    double max_size;

    int min_life_time;
    int max_life_time;

}t_search_area;


int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
void potkf_handler(potkf_reduced_data_message*msg);
bool search_for_new_target(potkf_reduced_data_message*potkf_msg,t_status*status,t_search_area*area);
void init_search_area(t_search_area*area);
bool get_new_target_information(potkf_reduced_data_message*potkf_msg,t_status*status);
void foveationcontrol(t_status*status);
void print_status(t_status*status);
void foveationcontrol_home(void);

#ifdef _OT_CPP_

bool potkf_heartbeat;
TYPE_executionflags flags; //the command line parameters flags

#else

extern TYPE_executionflags flags;
extern bool potkf_heartbeat;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _MODULETEMPLATE_H_
#define _MODULETEMPLATE_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/moduletemplate_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in moduletemplate.c or preferably in moduletemplate_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(void);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _MODULETEMPLATE_CPP_ /*or _MODULETEMPLATE_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?


TYPE_executionflags flags; //the command line parameters flags
moduletemplate_data_message msg; //this is a structure
TYPE_moduletemplate_public_params params; //this is a structure

//creates a the default structure that will deal with retrieved parameters.
// explain fields (use a handler whenever a parameter changes)
// the values in the field moduletemplate_data_param_shared_var, from lar.ini, will be installed in var1
// the var type is an integer: CARMEN_PARAM_INT
carmen_param_t moduletemplate_local_parameters[] = {
    {(char*)"moduletemplate", (char*)"shared_var", CARMEN_PARAM_INT, &msg.var1, 1, _cast_to_carmen_param_change_handler_t_ handler_param_daemon}
    }; //prepare param struct
#else

extern TYPE_executionflags flags;
extern moduletemplate_data_message msg;
extern TYPE_moduletemplate_public_params params;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
x signal
x the type of signal sent, SIGINT etcr
signal signal recived
Returns:
void
Parameters:
x the type of signal sent, SIGINT is the only one handled
#ifndef _AGENTS_H_
#define _AGENTS_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

// #include <lar/agents_interface.h>
#include <lar/agents_interface.h>
#include <lar/agent_tracker_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################

typedef struct{
    int xbee_address;       
    double sleeptime;       
    double kp;      
} TYPE_agents_local_params;

//####################################################################
// Prototypes:  for private functions can be declared #################
// in agents.c or preferably in agents_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
void handler_distance_data(char *a, char *b, char *c);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _AGENTS_CPP_ /*or _AGENTS_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################

TYPE_executionflags flags; //the command line parameters flags
agents_data_message agents_message; //this is a structure
xbee_tx_data_message xbee_tx_message; //this is a structure
TYPE_agents_local_params local_params; //this is a structure for parameters intallation
agent_clearance_distance_data_message distance_data_msg;
double linear_speed, reference_distance, error;

#else

extern TYPE_executionflags flags;
extern agents_data_message agents_message; //this is a structure
extern xbee_tx_data_message xbee_tx_message; //this is a structure
extern TYPE_agents_local_params local_params;
extern agent_clearance_distance_data_message distance_data_msg;
extern double linear_speed, reference_distance, error;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _AGENT_BEHAVIOUR_H_
#define _AGENT_BEHAVIOUR_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/agent_behaviour_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in agent_behaviour.c or preferably in agent_behaviour_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _AGENT_BEHAVIOUR_CPP_ /*or _AGENT_BEHAVIOUR_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?


TYPE_executionflags flags; //the command line parameters flags
agent_behaviour_data_message msg; //this is a message structure
agent_behaviour_virtual_sensors_data_message virtual_sensors_data_msg; //this is a message structure
TYPE_agent_behaviour_public_params params; //this is a parameters structure
agents_data_message agents_message;

//creates a the default structure that will deal retrieve parameters.
// explain fields (use a handler whenever a parameter changes)
// var1 in this case is actually 
carmen_param_t agent_behaviour_params[] = {
    {(char*)"agents", (char*)"data_param_shared_var", CARMEN_PARAM_INT, &msg.var1, 1, handler_param_daemon}
    }; //prepare param struct
#else

extern TYPE_executionflags flags;
extern agent_behaviour_data_message msg;
extern agent_behaviour_virtual_sensors_data_message virtual_sensors_data_msg;
extern TYPE_agent_behaviour_public_params params;
extern agents_data_message agents_message;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _AGENT_CLEARANCE_H_
#define _AGENT_CLEARANCE_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/agent_clearance_interface.h>
#include "/usr/local/include/cvblobs/BlobResult.h"


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################
typedef struct{
    double sleeptime;       
} TYPE_agent_clearance_local_params;


//####################################################################
// Prototypes:  for private functions can be declared #################
// in agent_clearance.c or preferably in agent_clearance_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
void handler_rx_msg_received(void);
void arena_image_handler(camera_image_message *msg_firei);
void heartbeat_handler_n0(carmen_heartbeat_message *);
void get_image(IplImage *image);
void flood_fill_fixed_threshold(void);
void init_images(void);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _AGENT_CLEARANCE_CPP_


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################


TYPE_executionflags flags; //the command line parameters flags
agent_clearance_distance_data_message distance_message; //this is a message structure
TYPE_agent_clearance_local_params local_parameters; //this is a parameters structure
xbee_rx_data_message rx_message;

camera_image_message image_message;
int image_message_alloc;
char firei_n0_image_message_heartbeat;
int msecstowait;
int height, width;
double ts;

IplImage* img;
IplImage* gray;
IplImage* adapt_thresholded;
IplImage* fill_temp;
IplImage* filled;
IplImage* filled_final;
IplImage* tmp;
IplImage* image;
IplImage* border;
IplImage* lanemarkers;
IplImage* tophat_image;
IplImage* work_image;
IplImage* hsv;
IplImage* hue;
IplImage* saturation;
IplImage* value;
IplImage* hf;
IplImage* sf;
IplImage* vf;

//creates a the default structure that will deal retrieved parameters.
carmen_param_t agent_clearance_params[] = {
    {(char*)"agents", (char*)"sleeptime", CARMEN_PARAM_DOUBLE, &local_parameters.sleeptime, 1, NULL}}; //declared the install struct
    
#else

extern TYPE_executionflags flags;
extern agent_clearance_distance_data_message distance_message; //this is a message structure
extern TYPE_agent_clearance_local_params local_parameters;
extern xbee_rx_data_message rx_message;

extern int height, width;
extern char firei_n0_image_message_heartbeat;

extern IplImage* img;
extern IplImage* gray;
extern IplImage* adapt_thresholded;
extern IplImage* fill_temp;
extern IplImage* filled;
extern IplImage* filled_final;
extern IplImage* tmp;
extern IplImage* image;
extern IplImage* border;
extern IplImage* lanemarkers;
extern IplImage* tophat_image;
extern IplImage* work_image;
extern IplImage* hsv;
extern IplImage* hue;
extern IplImage* saturation;
extern IplImage* value;
extern IplImage* hf;
extern IplImage* sf;
extern IplImage* vf;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _AGENT_TRACKER_H_
#define _AGENT_TRACKER_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/agent_tracker_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in agent_tracker.c or preferably in agent_tracker_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _AGENT_TRACKER_CPP_ /*or _AGENT_TRACKER_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?


TYPE_executionflags flags; //the command line parameters flags
agent_tracker_data_message msg; //this is a message structure
agent_tracker_virtual_sensors_data_message virtual_sensors_data_msg; //this is a message structure
TYPE_agent_tracker_public_params params; //this is a parameters structure
agents_data_message agents_message;

//creates a the default structure that will deal retrieve parameters.
// explain fields (use a handler whenever a parameter changes)
// var1 in this case is actually 
carmen_param_t agent_tracker_params[] = {
    {(char*)"agents", (char*)"data_param_shared_var", CARMEN_PARAM_INT, &msg.var1, 1, handler_param_daemon}
    }; //prepare param struct
#else

extern TYPE_executionflags flags;
extern agent_tracker_data_message msg;
extern agent_tracker_virtual_sensors_data_message virtual_sensors_data_msg;
extern TYPE_agent_tracker_public_params params;
extern agents_data_message agents_message;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _PDHFFC_H_
#define _PDHFFC_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/pdhffc_interface.h>

#include "pdhffc_pid.h"
#include "pdhffc_templatetracking.h"


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in pdhffc.c or preferably in pdhffc_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void draw_cross(IplImage *dst, int x, int y, int r, int g, int b);
void draw_double_arrow(int x0, int y0, int x1, int y1, IplImage *dst, CvScalar color, int thickness, int line_type, int shift);
void draw_blind_zone(IplImage *dst, int target_x, int target_y, int bz_x, int bz_y, int r, int g, int b);
//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _PDHFFC_CPP_ /*or _PDHFFC_C_, depends on the file type*/

TYPE_executionflags flags; //the command line parameters flags
pdhffc_information_message msg;

carmen_ptucontrol_command_message ptucommand;
cTemplateTracking *TT;
camera_params_t cam0_params;
camera_params_t cam1_params;
#else


extern TYPE_executionflags flags;
extern pdhffc_information_message msg;
extern carmen_ptucontrol_command_message ptucommand;
extern cTemplateTracking *TT;
extern camera_params_t cam0_params;
extern camera_params_t cam1_params;
#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent, SIGINT etcr
x signal recieved
Returns:
void
#ifndef _TLHFCS_H_
#define _TLHFCS_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################


#include <lar/tlhfcs_interface.h>
#include <lar/tlcstm_messages.h>
#include <lar/soundplayer_interface.h>

#include "tlhfcs_init.h"



//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################

typedef struct
{
    char *filename;
    CvHaarClassifierCascade* classifier;
}TYPE_ligths_cascade;

typedef struct
{
    IplImage* img;
    char name[2500];
}TYPE_image;



typedef  struct{
    int red[3]; 
    int green[3];   
    int darkgreen[3];   
    int blue[3];    
    int darkblue[3];    
    int yellow[3];  
    int darkyellow[3];  
    int cyan[3];    
    int darkcyan[3];    
    int orange[3];  
    int magenta[3]; 
    int darkmagenta[3]; 
    int black[3];   
}TYPE_color;


typedef struct
{
    TYPE_image ligths;
    TYPE_image gui_ligths;
    TYPE_image gray;
    TYPE_image s_filter;
    TYPE_image v_filter;
    TYPE_image sand_v_filter;
    TYPE_image red_filter;
    TYPE_image green_filter;
    TYPE_image yellow_filter;
    TYPE_image detected_signs;
    CvSize img_size;
    CvSize sign_in_size;
}TYPE_ligths_imgs;

typedef struct
{
    int maxH;
    int minH;
    int maxS;
    int minS;
    int maxV;
    int minV;
}TYPE_hsv_limits;

typedef struct
{
    double max_color_ratio;
    double max_black_ratio;
    int sign_min_size;
    int sign_max_size;
    double color_obj;
    double bavg_obj;
    double err;
    double avg_around_color_min;
    double avg_around_color_max;

}TYPE_decision_limits;


#define MAX_OBJ 30

typedef struct
{
    TYPE_image srcRGB;
    TYPE_image gui_debug;
    TYPE_image possible_sign[MAX_OBJ];
    TYPE_image mask_p_sign[MAX_OBJ];
    TYPE_image vf[MAX_OBJ];

    CvRect roi[MAX_OBJ];

    double color_r[MAX_OBJ];
    double black_r[MAX_OBJ];
    double res[MAX_OBJ];

    double cratio_weigth;
    double bavg_weigth;

    int num_total;
    int selected;
    int previous_tot;

    TYPE_ligths_cascade cascade;

    TYPE_decision_limits decision_limits;
    int threshold_lim;
}TYPE_sign_analysis;

typedef struct
{
    double cratio_weigth;
    double bavg_weigth;

    TYPE_ligths_imgs imgs;

    TYPE_hsv_limits red_limits, green_limits, yellow_limits;

    TYPE_sign_analysis rc_analysis, gau_analysis, yal_analysis, yar_analysis, park_analysis;

    char use_angle;

    char heigth_updated;

}TYPE_ligths_analysis;



typedef struct
{
    double cofidence;
    int x;
    int y;
    int width;
    int height;
    char name[80];
    int sign;
    int* color_rec;
    int* color_str;
    double* color_r;
    double* black_r;
}TYPE_detected_sign;


//####################################################################
// Prototypes:  for private functions can be declared #################
// in tlhfcs.c or preferably in tlhfcs_functions.c  ##
//####################################################################
//int main(int argc, char **argv);
void shutdown_module(int x);
//void handler_param_daemon(char *a, char *b, char *c);

void heartbeat_handler_n0(carmen_heartbeat_message *heartbeat_msg);

void heartbeat_handler_n1(carmen_heartbeat_message *heartbeat_msg);

void heartbeat_handler_n2(carmen_heartbeat_message *heartbeat_msg);

void heartbeat_handler_n3(carmen_heartbeat_message *heartbeat_msg);

void handler_load_rc_haar_cascade(void);
void handler_load_gau_haar_cascade(void);
void handler_load_yal_haar_cascade(void);
void handler_load_yar_haar_cascade(void);
void handler_load_park_haar_cascade(void);

void handler_sign_in_height_update(void);
void handler_sign_size_update(void);
void handler_bavg_weight_update(void);
void handler_color_weight_update(void);

void detect_and_draw_objects( int, CvScalar);
void draw_cross(IplImage *src,int line,int column,int lenght, int *color);
void draw_gui_sign_data(TYPE_sign_analysis* SA, IplImage* src, int* lx, int* ly, int img_height, CvFont* tmp_font, int* color_line, int* color_text, char* sign_name, int search);

void detect_haar_signal(CvHaarClassifierCascade* classifier, TYPE_image* srcRGB,TYPE_sign_analysis* sign_analysis, TYPE_executionflags* flgs, int* color);

void color_segmentation(TYPE_hsv_limits* hsv_limits, const IplImage* srcRGB, IplImage* vf, double* ratio, double* b_avg,char debug, char* name);

void refresh_windows(void);
void init_color_table(TYPE_color* );

void find_tl_sign(TYPE_sign_analysis* sign_analysis, TYPE_hsv_limits*, int* color, TYPE_executionflags* flgs, char* name);

void get_image_from_camera3(void);
void init_color_values(void);
void get_image_from_camera3(void);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _TLHFCS_CPP_ /*or _TLHFCS_C_, depends on the file type*/



TYPE_detected_sign detected_sign;

TYPE_color color_table;

TYPE_executionflags flags; //the command line parameters flags
tlcstm_data_message tl_msg;
//TYPE_tlhfcs_public_params params;

TYPE_ligths_analysis LA;

camera_image_message c0;
int c0_alloc=1;
camera_image_message c1;
int c1_alloc=1;
camera_image_message c2;
int c2_alloc=1;
camera_image_message c3;
int c3_alloc=1;

char firei_n0_msg_heart_beat = 0;
char firei_n1_msg_heart_beat = 0;
char firei_n2_msg_heart_beat = 0;
char firei_n3_msg_heart_beat = 0;


soundplayer_command_message sound_msg;
tlcstm_command_message command;

char cascade_filename[1024];

double ts;
int cycle_freq;

c_videosaving* videosaving;
c_timer timer;

CvFont Font;
CvFont Font1;

IplImage* image_cam3 = cvCreateImage(LA.imgs.img_size, IPL_DEPTH_8U , 3);

char str0[20];
int centerx,centery;


carmen_param_t module_refresh_params[] = {
    {(char*)"freq", (char*)"tlhfcs", CARMEN_PARAM_INT, &cycle_freq, 1, NULL},
};

carmen_param_t colordetection_params[] = {
    {(char*)"cd", (char*)"red_H_max", CARMEN_PARAM_INT, &LA.red_limits.maxH, 1, NULL},
    {(char*)"cd", (char*)"red_H_min", CARMEN_PARAM_INT, &LA.red_limits.minH, 1, NULL},
    {(char*)"cd", (char*)"red_S_max", CARMEN_PARAM_INT, &LA.red_limits.maxS, 1, NULL},
    {(char*)"cd", (char*)"red_S_min", CARMEN_PARAM_INT, &LA.red_limits.minS, 1, NULL},
    {(char*)"cd", (char*)"red_V_max", CARMEN_PARAM_INT, &LA.red_limits.maxV, 1, NULL},
    {(char*)"cd", (char*)"red_V_min", CARMEN_PARAM_INT, &LA.red_limits.minV, 1, NULL},
    {(char*)"cd", (char*)"green_H_max", CARMEN_PARAM_INT, &LA.green_limits.maxH, 1, NULL},
    {(char*)"cd", (char*)"green_H_min", CARMEN_PARAM_INT, &LA.green_limits.minH, 1, NULL},
    {(char*)"cd", (char*)"green_S_max", CARMEN_PARAM_INT, &LA.green_limits.maxS, 1, NULL},
    {(char*)"cd", (char*)"green_S_min", CARMEN_PARAM_INT, &LA.green_limits.minS, 1, NULL},
    {(char*)"cd", (char*)"green_V_max", CARMEN_PARAM_INT, &LA.green_limits.maxV, 1, NULL},
    {(char*)"cd", (char*)"green_V_min", CARMEN_PARAM_INT, &LA.green_limits.minV, 1, NULL},
    {(char*)"cd", (char*)"yellow_H_max", CARMEN_PARAM_INT, &LA.yellow_limits.maxH, 1, NULL},
    {(char*)"cd", (char*)"yellow_H_min", CARMEN_PARAM_INT, &LA.yellow_limits.minH, 1, NULL},
    {(char*)"cd", (char*)"yellow_S_max", CARMEN_PARAM_INT, &LA.yellow_limits.maxS, 1, NULL},
    {(char*)"cd", (char*)"yellow_S_min", CARMEN_PARAM_INT, &LA.yellow_limits.minS, 1, NULL},
    {(char*)"cd", (char*)"yellow_V_max", CARMEN_PARAM_INT, &LA.yellow_limits.maxV, 1, NULL},
    {(char*)"cd", (char*)"yellow_V_min", CARMEN_PARAM_INT, &LA.yellow_limits.minV, 1, NULL},
    }; //prepare param struct

carmen_param_t tlhfcs_camera_params[] = {
    {(char*)"camera3", (char*)"imagewidth", CARMEN_PARAM_INT, &LA.imgs.img_size.width, 1, NULL},
    {(char*)"camera3", (char*)"imageheight", CARMEN_PARAM_INT, &LA.imgs.img_size.height, 1, NULL},
};//prepare param struct from the image that camera3 will give

carmen_param_t tlhfcs_params[] = {
    {(char*)"tlhfcs", (char*)"sign_in_height", CARMEN_PARAM_INT, &LA.imgs.sign_in_size.height, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_in_height_update},
    {(char*)"tlhfcs", (char*)"sign_min_size", CARMEN_PARAM_INT, &LA.rc_analysis.decision_limits.sign_min_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size_update},
    {(char*)"tlhfcs", (char*)"sign_max_size", CARMEN_PARAM_INT, &LA.rc_analysis.decision_limits.sign_max_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size_update},
    {(char*)"tlhfcs", (char*)"thresh_limit", CARMEN_PARAM_INT, &LA.rc_analysis.threshold_lim, 1, NULL},
    {(char*)"tlhfcs", (char*)"cratio_weigth", CARMEN_PARAM_DOUBLE, &LA.cratio_weigth, 1, _cast_to_carmen_param_change_handler_t_ handler_color_weight_update},
    {(char*)"tlhfcs", (char*)"bavg_weigth", CARMEN_PARAM_DOUBLE, &LA.bavg_weigth, 1, _cast_to_carmen_param_change_handler_t_ handler_bavg_weight_update},
    //-----------------------------------
    //params for Red Cross
    //-----------------------------------
    {(char*)"tlhfcs", (char*)"rc_cascade_path", CARMEN_PARAM_STRING, &LA.rc_analysis.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_rc_haar_cascade},
    {(char*)"tlhfcs", (char*)"rc_max_cratio", CARMEN_PARAM_DOUBLE, &LA.rc_analysis.decision_limits.max_color_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"rc_max_bratio", CARMEN_PARAM_DOUBLE, &LA.rc_analysis.decision_limits.max_black_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"rc_color_obj", CARMEN_PARAM_DOUBLE, &LA.rc_analysis.decision_limits.color_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"rc_bavg_obj", CARMEN_PARAM_DOUBLE, &LA.rc_analysis.decision_limits.bavg_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"rc_err", CARMEN_PARAM_DOUBLE, &LA.rc_analysis.decision_limits.err, 1, NULL},
    //-----------------------------------
    //params for Green Arrow Up
    //-----------------------------------
    {(char*)"tlhfcs", (char*)"gau_cascade_path", CARMEN_PARAM_STRING, &LA.gau_analysis.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_gau_haar_cascade},
    {(char*)"tlhfcs", (char*)"gau_max_cratio", CARMEN_PARAM_DOUBLE, &LA.gau_analysis.decision_limits.max_color_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"gau_max_bratio", CARMEN_PARAM_DOUBLE, &LA.gau_analysis.decision_limits.max_black_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"gau_color_obj", CARMEN_PARAM_DOUBLE, &LA.gau_analysis.decision_limits.color_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"gau_bavg_obj", CARMEN_PARAM_DOUBLE, &LA.gau_analysis.decision_limits.bavg_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"gau_err", CARMEN_PARAM_DOUBLE, &LA.gau_analysis.decision_limits.err, 1, NULL},
    //-----------------------------------
    //params for Yellow Arrow Left
    //-----------------------------------
    {(char*)"tlhfcs", (char*)"yal_cascade_path", CARMEN_PARAM_STRING, &LA.yal_analysis.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_yal_haar_cascade},
    {(char*)"tlhfcs", (char*)"yal_max_cratio", CARMEN_PARAM_DOUBLE, &LA.yal_analysis.decision_limits.max_color_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"yal_max_bratio", CARMEN_PARAM_DOUBLE, &LA.yal_analysis.decision_limits.max_black_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"yal_color_obj", CARMEN_PARAM_DOUBLE, &LA.yal_analysis.decision_limits.color_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"yal_bavg_obj", CARMEN_PARAM_DOUBLE, &LA.yal_analysis.decision_limits.bavg_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"yal_err", CARMEN_PARAM_DOUBLE, &LA.yal_analysis.decision_limits.err, 1, NULL},
    //-----------------------------------
    //params for Yellow Arrow Right
    //-----------------------------------
    {(char*)"tlhfcs", (char*)"yar_cascade_path", CARMEN_PARAM_STRING, &LA.yar_analysis.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_yar_haar_cascade},
    {(char*)"tlhfcs", (char*)"yar_max_cratio", CARMEN_PARAM_DOUBLE, &LA.yar_analysis.decision_limits.max_color_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"yar_max_bratio", CARMEN_PARAM_DOUBLE, &LA.yar_analysis.decision_limits.max_black_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"yar_color_obj", CARMEN_PARAM_DOUBLE, &LA.yar_analysis.decision_limits.color_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"yar_bavg_obj", CARMEN_PARAM_DOUBLE, &LA.yar_analysis.decision_limits.bavg_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"yar_err", CARMEN_PARAM_DOUBLE, &LA.yar_analysis.decision_limits.err, 1, NULL},
    //-----------------------------------
    //params for Park
    //-----------------------------------
    {(char*)"tlhfcs", (char*)"park_cascade_path", CARMEN_PARAM_STRING, &LA.park_analysis.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_park_haar_cascade},
    {(char*)"tlhfcs", (char*)"park_max_cratio", CARMEN_PARAM_DOUBLE, &LA.park_analysis.decision_limits.max_color_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"park_max_bratio", CARMEN_PARAM_DOUBLE, &LA.park_analysis.decision_limits.max_black_ratio, 1, NULL},
    {(char*)"tlhfcs", (char*)"park_color_obj", CARMEN_PARAM_DOUBLE, &LA.park_analysis.decision_limits.color_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"park_bavg_obj", CARMEN_PARAM_DOUBLE, &LA.park_analysis.decision_limits.bavg_obj, 1, NULL},
    {(char*)"tlhfcs", (char*)"park_err", CARMEN_PARAM_DOUBLE, &LA.park_analysis.decision_limits.err, 1, NULL},
};//prepare param struct for this module

#else

extern TYPE_executionflags flags;
extern tlcstm_data_message tl_msg;
extern TYPE_ligths_analysis LA;
extern CvFont Font;
extern CvFont Font1;
extern TYPE_color color_table;
extern TYPE_detected_sign detected_sign;
extern char cascade_filename[1024];

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent, SIGINT etcr
#ifndef _VSCSHFBA_H_
#define _VSCSHFBA_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################


#include <lar/vscshfba_interface.h>
#include <lar/tlcstm_messages.h>
#include <lar/soundplayer_interface.h>
#include <cvblobs/BlobResult.h>



//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


typedef struct
{
    char *filename;
    CvHaarClassifierCascade* classifier;
}TYPE_cascade;


typedef struct
{
    IplImage* img;
    char name[25];
}TYPE_image;


typedef struct
{
    IplImage* src;
    IplImage* gui;

    IplImage* hsv;

    IplImage* red_h;
    IplImage* red_s;
    IplImage* red_v;
    IplImage* red_h_bin;
    IplImage* red_h_bin2;
    IplImage* red_h_bin3;
    IplImage* red_s_bin;
    IplImage* red_v_bin;
    IplImage* red_mask;

    IplImage* white_h;
    IplImage* white_s;
    IplImage* white_v;
    IplImage* white_h_bin;
    IplImage* white_s_bin;
    IplImage* white_v_bin;
    IplImage* white_mask;

    IplImage* black_h;
    IplImage* black_s;
    IplImage* black_v;
    IplImage* black_h_bin;
    IplImage* black_s_bin;
    IplImage* black_v_bin;
    IplImage* black_mask;

    IplImage* blue_h;
    IplImage* blue_s;
    IplImage* blue_v;
    IplImage* blue_h_bin;
    IplImage* blue_s_bin;
    IplImage* blue_v_bin;
    IplImage* blue_mask;

    IplImage* tmp_h;
    IplImage* tmp_s;
    IplImage* tmp_v;

    CvSize imgs_size;
    CvSize look_sign_in_size;
    CvSize gui_size;
    int heigth_updated;
    int use_shm;
}TYPE_imgs;



typedef  struct{
    int red[3]; 
    int green[3];   
    int darkgreen[3];   
    int blue[3];    
    int darkblue[3];    
    int yellow[3];  
    int darkyellow[3];  
    int cyan[3];    
    int darkcyan[3];    
    int orange[3];  
    int magenta[3]; 
    int darkmagenta[3]; 
    int black[3];   
}TYPE_color;

typedef struct
{
    int num_hits;
    double tic;
    double main_color_ratio;
    double num_internal_spots;
    double confidence;
    double moments_ratio;
    int accepted;
    CvPoint center;
    CvRect region;
    IplImage* mask0;
    IplImage* mask1;
    IplImage* mask2;
    IplImage* tmp;
}TYPE_sign_data;

typedef struct
{
    CvSeq* sign_seq;
    CvMemStorage* memstorage;
    CvSize tol_area;
    TYPE_cascade cascade;
    TYPE_sign_data selected_sign; 

    int min_sign_size;
    int max_sign_size;
    int enclosing_size;
    int num_consecutive_hits;
    int aceptance_box;

    double color_obj;
    double color_err;
    double color_max;
    double moment_obj;
    double moment_err;
    double moment_max;
    double overall_confidence;

    char str[10][50];
    char name[10];
}TYPE_sign_analysis;


typedef struct
{
    double num_hits;    
    double color;       
    double moment;      
}TYPE_weights;

//####################################################################
// Prototypes:  for private functions can be declared #################
// in vscshfba.c or preferably in vscshfba_functions.c  ##
//####################################################################
//void handler_load_M1_haar_cascade(void);
void handler_load_W_N_cascade(void);
void handler_load_W_D_cascade(void);
void handler_load_M_B_cascade(void);
void handler_load_M_L_cascade(void);
void handler_load_I_60_cascade(void);
void handler_load_I_H_cascade(void);
void handler_sign_size(void);


void shutdown_module(int x);

void heartbeat_handler_n3(carmen_heartbeat_message *heartbeat_msg);
void handler_sign_in_height_update(void);
void init_color_table(TYPE_color* p);

//file vscshfba_functions.cpp
void detect_haar_signal(TYPE_sign_analysis* sign_analysis, IplImage* src, IplImage* dst, TYPE_executionflags* flgs, int* color_cross, int* color_box);
void set_imageROIs(TYPE_imgs* imgs, CvRect* roi, char flg_set_roi);
void check_mask_size(TYPE_sign_data* sign, CvSize* size);
void draw_cross(IplImage *src,int line,int column,int lenght, int *color);
void reset_imageROIs(TYPE_imgs* imgs);
void check_haar_feature_tic(TYPE_sign_analysis* sign_analysis, double* num_cycles);
void draw_gui_sign_data(IplImage* src, int* lx, int* ly, int img_height, CvFont* tmp_font, int* color_line, int* color_text, TYPE_sign_analysis* sign, int x_space);
void set_cam_params(int x);
void confirm_sign_tipology(TYPE_sign_analysis* sign_analysis, TYPE_imgs* imgs, TYPE_color_lim* color_lim, TYPE_weights* weights, TYPE_executionflags* flgs, int flg_ROIS);
void show_masks(TYPE_sign_analysis* sign_analysis, TYPE_executionflags* flgs, int* start_x_pos, int* start_y_pos, int step);

//functions prototype implemented in main file vscshfba.cpp
int get_image_from_camera3(IplImage* dst, int* update_size, int* heart_beat, CvSize* cap_img_size);
void set_cam_params(int x);

#define AVG(a, b) (((a)+(b))/2)
//#define MAX(a, b) ((a>b)? (a) : (b))
//#define MIN(a, b) ((a>b)? (b) : (a))
#define SET_RED_ROI 0b00000001
#define SET_WHITE_ROI 0b00000010
#define SET_BLACK_ROI 0b00000100
#define SET_BLUE_ROI 0b00001000
#define NUM_OF_CYCLES 10

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _VSCSHFBA_CPP_ /*or _VSCSHFBA_C_, depends on the file type*/


//TYPE_detected_sign detected_sign;

TYPE_cascade cascade;

TYPE_color color_table;

TYPE_acl_color_limits color_limits;


TYPE_sign_analysis W_DA, W_NA; 
TYPE_sign_analysis I_60A, I_HA; 
TYPE_sign_analysis M_BA, M_LA; 

TYPE_sign_data* sign_check;
TYPE_sign_data* accepted_sign;
char sign_name_detected[50];
char searching[50];
CvMoments cent_moments;

CBlobResult *blobs;
double res;     
char cascade_filename[1024];
double cycle_freq;
c_timer timer;
CvFont Font;
CvFont Font1;
CvFont Font2;

TYPE_imgs imgs;

int updated_size;
TYPE_weights weight;


int firei_n3_msg_heart_beat = 0;
double ts;
camera_image_message c3;
int c3_alloc=1;
IplImage* image_cam3 = cvCreateImage(cvSize(320,240), IPL_DEPTH_8U , 3);


soundplayer_command_message sound_msg;
vscshfba_command_message command;
vscshfba_data_message vscshfba_msg;


TYPE_executionflags flags; //the command line parameters flags

c_videosaving* videosaving;


//write int gui image all info required
int lx=0;
int ly = 0;
int step = 0;

int wind_pos_x = 0;
int wind_pos_y = 0;

//char str0[40], str1[40];

IplConvKernel* morph_element;


carmen_param_t module_refresh_params[] = {
    {(char*)"freq", (char*)"vscshfba", CARMEN_PARAM_DOUBLE, &cycle_freq, 1, NULL},
};

carmen_param_t acl_colordetection_params[] = {
    {(char*)"acl", (char*)"red_H_max", CARMEN_PARAM_DOUBLE, &color_limits.red.maxH, 1, NULL},
    {(char*)"acl", (char*)"red_H_min", CARMEN_PARAM_DOUBLE, &color_limits.red.minH, 1, NULL},
    {(char*)"acl", (char*)"red_S_max", CARMEN_PARAM_DOUBLE, &color_limits.red.maxS, 1, NULL},
    {(char*)"acl", (char*)"red_S_min", CARMEN_PARAM_DOUBLE, &color_limits.red.minS, 1, NULL},
    {(char*)"acl", (char*)"red_V_max", CARMEN_PARAM_DOUBLE, &color_limits.red.maxV, 1, NULL},
    {(char*)"acl", (char*)"red_V_min", CARMEN_PARAM_DOUBLE, &color_limits.red.minV, 1, NULL},

    {(char*)"acl", (char*)"white_H_max", CARMEN_PARAM_DOUBLE, &color_limits.white.maxH, 1, NULL},
    {(char*)"acl", (char*)"white_H_min", CARMEN_PARAM_DOUBLE, &color_limits.white.minH, 1, NULL},
    {(char*)"acl", (char*)"white_S_max", CARMEN_PARAM_DOUBLE, &color_limits.white.maxS, 1, NULL},
    {(char*)"acl", (char*)"white_S_min", CARMEN_PARAM_DOUBLE, &color_limits.white.minS, 1, NULL},
    {(char*)"acl", (char*)"white_V_max", CARMEN_PARAM_DOUBLE, &color_limits.white.maxV, 1, NULL},
    {(char*)"acl", (char*)"white_V_min", CARMEN_PARAM_DOUBLE, &color_limits.white.minV, 1, NULL},

    {(char*)"acl", (char*)"black_H_max", CARMEN_PARAM_DOUBLE, &color_limits.black.maxH, 1, NULL},
    {(char*)"acl", (char*)"black_H_min", CARMEN_PARAM_DOUBLE, &color_limits.black.minH, 1, NULL},
    {(char*)"acl", (char*)"black_S_max", CARMEN_PARAM_DOUBLE, &color_limits.black.maxS, 1, NULL},
    {(char*)"acl", (char*)"black_S_min", CARMEN_PARAM_DOUBLE, &color_limits.black.minS, 1, NULL},
    {(char*)"acl", (char*)"black_V_max", CARMEN_PARAM_DOUBLE, &color_limits.black.maxV, 1, NULL},
    {(char*)"acl", (char*)"black_V_min", CARMEN_PARAM_DOUBLE, &color_limits.black.minV, 1, NULL},

    {(char*)"acl", (char*)"blue_H_max", CARMEN_PARAM_DOUBLE, &color_limits.blue.maxH, 1, NULL},
    {(char*)"acl", (char*)"blue_H_min", CARMEN_PARAM_DOUBLE, &color_limits.blue.minH, 1, NULL},
    {(char*)"acl", (char*)"blue_S_max", CARMEN_PARAM_DOUBLE, &color_limits.blue.maxS, 1, NULL},
    {(char*)"acl", (char*)"blue_S_min", CARMEN_PARAM_DOUBLE, &color_limits.blue.minS, 1, NULL},
    {(char*)"acl", (char*)"blue_V_max", CARMEN_PARAM_DOUBLE, &color_limits.blue.maxV, 1, NULL},
    {(char*)"acl", (char*)"blue_V_min", CARMEN_PARAM_DOUBLE, &color_limits.blue.minV, 1, NULL},
    }; 


carmen_param_t vscshfba_camera_params[] = {
    {(char*)"camera1", (char*)"imagewidth", CARMEN_PARAM_INT, &imgs.imgs_size.width, 1, NULL},
    {(char*)"camera1", (char*)"imageheight", CARMEN_PARAM_INT, &imgs.imgs_size.height, 1, NULL},

};

carmen_param_t vscshfba_params[] = {
    {(char*)"vscshfba", (char*)"sign_in_height", CARMEN_PARAM_INT, &updated_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_in_height_update},

    {(char*)"vscshfba", (char*)"weight_color", CARMEN_PARAM_DOUBLE, &weight.color, 1, NULL},
    {(char*)"vscshfba", (char*)"weight_moment", CARMEN_PARAM_DOUBLE, &weight.moment, 1, NULL},
    {(char*)"vscshfba", (char*)"weight_num_hits", CARMEN_PARAM_DOUBLE, &weight.num_hits, 1, NULL},

    //data for information recommended speed 60
    {(char*)"vscshfba", (char*)"info_60_color_obj", CARMEN_PARAM_DOUBLE, &I_60A.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"info_60_color_max", CARMEN_PARAM_DOUBLE, &I_60A.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"info_60_moment_obj", CARMEN_PARAM_DOUBLE, &I_60A.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"info_60_moment_max", CARMEN_PARAM_DOUBLE, &I_60A.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"info_60_aceptance", CARMEN_PARAM_DOUBLE, &I_60A.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"info_60_cascade", CARMEN_PARAM_STRING, &I_60A.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_I_60_cascade},

    //data for information hospital near
    {(char*)"vscshfba", (char*)"info_H_color_obj", CARMEN_PARAM_DOUBLE, &I_HA.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"info_H_color_max", CARMEN_PARAM_DOUBLE, &I_HA.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"info_H_moment_obj", CARMEN_PARAM_DOUBLE, &I_HA.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"info_H_moment_max", CARMEN_PARAM_DOUBLE, &I_HA.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"info_H_aceptance", CARMEN_PARAM_DOUBLE, &I_HA.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"info_H_cascade", CARMEN_PARAM_STRING, &I_HA.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_I_H_cascade},


    {(char*)"vscshfba", (char*)"mand_bus_color_obj", CARMEN_PARAM_DOUBLE, &M_BA.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_bus_color_max", CARMEN_PARAM_DOUBLE, &M_BA.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_bus_moment_obj", CARMEN_PARAM_DOUBLE, &M_BA.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_bus_moment_max", CARMEN_PARAM_DOUBLE, &M_BA.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_bus_aceptance", CARMEN_PARAM_DOUBLE, &M_BA.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_bus_cascade", CARMEN_PARAM_STRING, &M_BA.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_M_B_cascade},

    {(char*)"vscshfba", (char*)"mand_lights_color_obj", CARMEN_PARAM_DOUBLE, &M_LA.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_lights_color_max", CARMEN_PARAM_DOUBLE, &M_LA.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_lights_moment_obj", CARMEN_PARAM_DOUBLE, &M_LA.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_lights_moment_max", CARMEN_PARAM_DOUBLE, &M_LA.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_lights_aceptance", CARMEN_PARAM_DOUBLE, &M_LA.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"mand_lights_cascade", CARMEN_PARAM_STRING, &M_LA.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_M_L_cascade},

    {(char*)"vscshfba", (char*)"warn_dip_color_obj", CARMEN_PARAM_DOUBLE, &W_DA.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_dip_color_max", CARMEN_PARAM_DOUBLE, &W_DA.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_dip_moment_obj", CARMEN_PARAM_DOUBLE, &W_DA.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_dip_moment_max", CARMEN_PARAM_DOUBLE, &W_DA.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_dip_aceptance", CARMEN_PARAM_DOUBLE, &W_DA.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_dip_cascade", CARMEN_PARAM_STRING, &W_DA.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_W_D_cascade},

    {(char*)"vscshfba", (char*)"warn_narrow_color_obj", CARMEN_PARAM_DOUBLE, &W_NA.color_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_narrow_color_max", CARMEN_PARAM_DOUBLE, &W_NA.color_max, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_narrow_moment_obj", CARMEN_PARAM_DOUBLE, &W_NA.moment_obj, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_narrow_moment_max", CARMEN_PARAM_DOUBLE, &W_NA.moment_max, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_narrow_aceptance", CARMEN_PARAM_DOUBLE, &W_NA.overall_confidence, 1, NULL},
    {(char*)"vscshfba", (char*)"warn_narrow_cascade", CARMEN_PARAM_STRING, &W_NA.cascade.filename, 1, _cast_to_carmen_param_change_handler_t_ handler_load_W_N_cascade},

    {(char*)"vscshfba", (char*)"sign_min_size", CARMEN_PARAM_INT, &W_NA.min_sign_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size},
    {(char*)"vscshfba", (char*)"sign_max_size", CARMEN_PARAM_INT, &W_NA.max_sign_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size},

    {(char*)"vscshfba", (char*)"enclosing_size", CARMEN_PARAM_INT, &W_NA.enclosing_size, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size},
    {(char*)"vscshfba", (char*)"aceptance_box", CARMEN_PARAM_INT, &W_NA.aceptance_box, 1, _cast_to_carmen_param_change_handler_t_ handler_sign_size},
};

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent, SIGINT etcr
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
in,: x the type of intercepted signal, SIGINT
#ifndef _EGOMOTIONGPSIMU_H_
#define _EGOMOTIONGPSIMU_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/egomotiongpsimu_interface.h>
#include<amlpp/amlpp.h>
#include <gtk/gtk.h>

using namespace amlpp;

//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


// Class used to create the nonlinear observer objects
class Observer
{
    // the observer gains
    RealMatrix k11;
    RealMatrix k12;
   
    RealMatrix k21;
    RealMatrix k22; 
   
    RealMatrix k31;
    RealMatrix k32;

    RealMatrix Gain;
    RealMatrix GainWGPS;
    RealMatrix GainWOGPS;
   
    // the observer states 
    RealMatrix State;
    RealMatrix StateDot;
    RealMatrix Residual;
   
    // validity of the GPS measurement
    bool GPSisValid;
   
    //Transformation matrices
    RealMatrix R33_b2n;
    RealMatrix R33_n2b;
    RealMatrix T33_b2n;
       
  public:
    Observer();
    ~Observer(){};
    RealMatrix NlinObsStateUpdateV1(RealMatrix Measurements, Real Tb, Real deltaT);
    void NlinObsSetGain(); // set the Observer Gain
    void NlinObsChooseGainOnGPSValidity(bool GPSisValid); // Choose among applicable gains with and without GPS
    void NlinObsSetK(const char *ktype, double kval); // Set the individual Gain Matrices.
    void CalcRotationMatrix(double psi, double theta, double phi); // calculate the rotation matrix based on the Euler angles (Cardan Sequence)
    void NlinObsSetInitalCondition(RealMatrix Measurements);
};

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _EGOMOTIONGPSIMU_CPP_

//####################################################################
// Prototypes:  for private functions can be declared #################
// in egomotiongpsimu.c or preferably in egomotiongpsimu_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void shutdown_module_noIPC(int x);
void handler_param_daemon(char *a, char *b, char *c);

void drawGPSpoints(IplImage*img, int x, int y);
void drawEstimatedpoints(IplImage*img, int x, int y);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################

TYPE_executionflags flags; //the command line parameters flags
egomotiongpsimu_data_message msg; //this is a structure
TYPE_egomotiongpsimu_public_params params; //this is a structure

bool gprmc_update = FALSE;
bool gpgga_update = FALSE;
bool xsense_update = FALSE;
bool GPSisValid = FALSE;


//creates a the default structure that will deal with retrieved parameters.
// explain fields (use a handler whenever a parameter changes)
// the values in the field egomotiongpsimu_data_param_shared_var, from lar.ini, will be installed in var1
// the var type is an integer: CARMEN_PARAM_INT
// carmen_param_t egomotiongpsimu_local_parameters[] = {
//  {(char*)"egomotiongpsimu", (char*)"shared_var", CARMEN_PARAM_INT, &msg.var1, 1, handler_param_daemon}
//      }; //prepare param struct

#else 



extern TYPE_executionflags flags;
extern egomotiongpsimu_data_message msg;
extern TYPE_egomotiongpsimu_public_params params;
extern void shutdown_module(int x);

#ifdef _EGOMOTIONGPSIMU_FUNCTIONS_CPP_

Real g_arr[] = {0,0,-9.81}; // acceleration of gravity on a (North West Up) NWU reference frame
RealMatrix g(g_arr,3,1); // put the array into a matrix for further calculations


// #else
// extern components egointerface;
// extern void next_handler( GtkWidget *widget, gpointer   data );
// extern void previous_handler( GtkWidget *widget,gpointer   data );
// extern gboolean delete_event( GtkWidget *widget,GdkEvent  *event,gpointer   data );
// extern void destroy( GtkWidget *widget,gpointer   data );
// extern void createWindow();
// extern void createButtons();
// extern void layoutWidgets();
// extern void show();
// extern void draw_brush (GtkWidget *widget, gdouble x, gdouble y);
// extern gboolean expose_event( GtkWidget *widget, GdkEventExpose *event );
// extern gboolean configure_event( GtkWidget *widget, GdkEventConfigure *event );
// extern gboolean button_press_event( GtkWidget *widget, GdkEventButton *event );
// extern gboolean motion_notify_event( GtkWidget *widget, GdkEventMotion *event );
// extern void createDrawingArea();
 #endif

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _LASERPROJECTIONONIMAGE_H_
#define _LASERPROJECTIONONIMAGE_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/laserprojectiononimage_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in laserprojectiononimage.c or preferably in laserprojectiononimage_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
void project_pointcloud_to_image(xb3_3dpointcloud_message *pointcloud, int cam_number, double pan, double tilt, IplImage *dst, unsigned char r=255, unsigned char g=0,unsigned char b=0);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _LASERPROJECTIONONIMAGE_CPP_ /*or _LASERPROJECTIONONIMAGE_C_, depends on the file type*/


//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
//mike confusion, uses a message structure to install parameters. message and parameters should not be different?


TYPE_executionflags flags; //the command line parameters flags
camera_image_message msg_flea2;
IplImage* image;
camera_image_message msg_flea2_c1;
IplImage* image_c1;
xb3_3dpointcloud_message pointcloud_msg_hokuyo;
xb3_3dpointcloud_message pointcloud_msg_3dlaser;
carmen_ptucontrol_status_message ptu_status;
#else

extern TYPE_executionflags flags;
extern camera_image_message msg_flea2;
extern IplImage* image;
extern camera_image_message msg_flea2_c1;
extern IplImage* image_c1;
extern xb3_3dpointcloud_message pointcloud_msg_hokuyo;
extern xb3_3dpointcloud_message pointcloud_msg_3dlaser;
extern carmen_ptucontrol_status_message ptu_status;
#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
#ifndef _GPS_H_
#define _GPS_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         ##############################################
//####################################################################

//from gps-io.c
#include <lar/gps_interface.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <math.h>
#include <unistd.h>
#include <termios.h>
#include <fcntl.h>
#include <sys/signal.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>

//from old gps.h
#define MAX_NAME_LENGTH                256
#define MAX_COMMAND_LENGTH             256
#define EPSILON                     0.0001
#define TIMEOUT                         -1
#define WRONG                            0
#define OK                               1

//from old gps-io.c
#define DEFAULT_GPS_PORT      "/dev/ttyUSB0"
#define DEFAULT_GPS_BAUD      4800
#define DEFAULT_GPS_PARITY    NO
#define DEFAULT_GPS_DATABITS  8
#define DEFAULT_GPS_STOPBITS  1
#define DEFAULT_GPS_HWF       1
#define DEFAULT_GPS_SWF       0
#define BUFFER_LENGTH         512

//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ##############################
//####################################################################
enum PARITY_TYPE   { NO, EVEN, ODD };

typedef struct {
  char                       ttyport[MAX_NAME_LENGTH];
  int                        baud;
  enum PARITY_TYPE           parity;
  FILE *                     fp;
  int                        fd;
  int                        databits;
  int                        stopbits;
  int                        hwf;
  int                        swf;
} SerialDevice;

//####################################################################
// Prototypes:  for private functions can be declared ################
// in gps.c or preferably in gps_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
int carmen_gps_parse_data( char * line, int num_chars );
void DEVICE_set_params( SerialDevice dev );
void DEVICE_set_baudrate( SerialDevice dev, int brate );
int DEVICE_connect_port( SerialDevice *dev );
int DEVICE_send( SerialDevice dev, unsigned char *cmd, int len );
int DECVICE_recieve( SerialDevice dev, unsigned char *cmd, int *len );
int DEVICE_read_data( SerialDevice dev );
int DEVICE_bytes_waiting( int sd );
void DEVICE_init_params( SerialDevice *p );


#ifdef _GPS_CPP_ /*or _GPS_C_, depends on the file type*/

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################

TYPE_executionflags flags; //the command line parameters flags
char* comport;
int baudrate;
gps_gpgga_data_message gpgga_msg; //this is a structure
gps_gprmc_data_message gprmc_msg; //this is a structure
gps_gpgga_data_message *gps_extern_gpgga_ptr; //this are pointers to the structure
gps_gprmc_data_message *gps_extern_gprmc_ptr; //this are pointers to the structure

carmen_param_t gps_params[] = {
    {(char*)"gps", (char*)"comport", CARMEN_PARAM_STRING, &comport, 0, NULL},
    {(char*)"gps", (char*)"baudrate", CARMEN_PARAM_INT, &baudrate, 0, NULL}
    }; //prepare param struct

#else

extern TYPE_executionflags flags;
extern gps_gpgga_data_message gpgga_msg; //this is a structure
extern gps_gprmc_data_message gprmc_msg; //this is a structure
extern gps_gpgga_data_message * gps_extern_gpgga_ptr;
extern gps_gprmc_data_message * gps_extern_gprmc_ptr;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent: SIGINT etc
interrupt signal
Returns:
void
#ifndef _XSENS_H_
#define _XSENS_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/xsens_interface.h>
#include <curses.h>
#include "cmtdef.h"
#include "xsens_time.h"
#include "xsens_list.h"
#include "cmtscan.h"
#include "cmt3.h"
#include "example_linux.h"
// this macro tests for an error and exits the program with a message if there was one
#define EXIT_ON_ERROR(res,comment) if (res != XRV_OK) { printw("Error %d occurred in " comment ": %s\n",res,xsensResultText(res)); exit(1); }

using namespace xsens;

//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################


//####################################################################
// Prototypes:  for private functions can be declared #################
// in xsens.c or preferably in xsens_functions.c  ##
//####################################################################
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _XSENS_CPP_ /*or _XSENS_C_, depends on the file type*/

TYPE_executionflags flags; //the command line parameters flags
xsens_data_message data_msg;
// TYPE_xsens_public_params params;
char *comport;
Packet* packet;
xsens::Cmt3 cmt3; //create an xsens structure

carmen_param_t xsens_params[] = {
    {(char*)"xsens", (char*)"comport", CARMEN_PARAM_STRING, &comport, 0, NULL}
//  {(char*)"xsens", (char*)"comport", CARMEN_PARAM_STRING, &msg.comport, 0, NULL}
    }; //prepare param struct

#else

extern TYPE_executionflags flags;
extern xsens_data_message msg;
// extern TYPE_xsens_public_params params;
extern char *comport;
extern Packet* packet;
extern xsens::Cmt3 cmt3; //create an xsens structure

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent, SIGINT etcr
x the SIGNAL
Todo:
many modules use this. Should be an util library.
Parameters:
x the SIGNAL
Todo:
many modules use this. Should be an util library.
#ifndef _ACL_H_
#define _ACL_H_

#define _DO_NOT_USE_OPENCV_ 0
#define _DO_NOT_USE_CARMEN_ 0

//####################################################################
// Includes: no need to include headers from carmen modules carmen.h #
// already does         #####################################
//####################################################################

#include <lar/lar.h>
#include <lar/acl_interface.h>


//####################################################################
// Typedefs: required typedefs are declared here. All declared types #
// should have TYPE_[the name]          ###############################
//####################################################################
#define MAX_PTS 4
#define MAX_REGIONS 10
#define NUM_FOR_AVG_CALC 25

typedef struct
{
    double avg;
    double std;
    double minVal, maxVal;
}TYPE_color_values;


typedef struct {
    CvPoint pts[MAX_PTS];
    int num_pts;
    char name[20];
    TYPE_color_values h_values, v_values, s_values;
    IplImage* mask;
    IplImage* img_debug;

    CvMemStorage* mem_storage;
    CvSeq* hsv_lim_seq;
}TYPE_region;



typedef struct{
    TYPE_region* region[MAX_REGIONS];
    int num_regions;
    CvSize src_img_size;
    double times_std;
    double move_avg;

    IplImage* src;
    IplImage* gui;
    IplImage* hsv;
    IplImage* h;
    IplImage* s;
    IplImage* v;
}TYPE_pts_mask;

typedef struct
{
    double h_min;
    double h_max;
    double s_min;
    double s_max;
    double v_min;
    double v_max;
}TYPE_hsv_avg_std;

//####################################################################
// Prototypes:  for private functions can be declared #################
// in acl.c or preferably in acl_functions.c  ##
//####################################################################
void heartbeat_handler_n3(carmen_heartbeat_message *heartbeat_msg);
int main(int argc, char **argv);
void shutdown_module(int x);

void set_mask(IplImage* src, TYPE_region* region, TYPE_executionflags* flg);
void draw_bound(IplImage* src, TYPE_region* region);

int load_pts(char *file_name, TYPE_pts_mask* mask);
void get_values(char *str, TYPE_region* region, int start);
void read_line(FILE* buffer,char *line);

//####################################################################
// Global vars: They will be in the scope of modulename.c main's #####
// otherwise are declared extern #####################################
//####################################################################
#ifdef _ACL_CPP_ /*or _ACL_C_, depends on the file type*/

#define saturatemax(val,max) ((val)>(max) ?( max) :( val))
#define saturatemin(val,min) ((val)<(min) ?( min) :( val))
#define AVG(a,b) ((a+b)/2.0)


TYPE_pts_mask pts_mask;
TYPE_region* actual_region;
CvPoint pts[MAX_PTS];

TYPE_acl_color_limits color_limits;


TYPE_hsv_avg_std tmp_hsv_avg_std;


CvFont Font;

int num_pts=-1;

char filename[1024];
FILE* file_data;



camera_image_message c3;
int c3_alloc=1;

char firei_n3_msg_heart_beat = 0;

c_timer timer;
double ts;

int cycle_freq;

TYPE_executionflags flags; //the command line parameters flags
acl_data_message msg;

carmen_param_t module_refresh_params[] = {
    {(char*)"freq", (char*)"acl", CARMEN_PARAM_INT, &cycle_freq, 1, NULL},
};

carmen_param_t acl_camera_params[] = {
    {(char*)"camera3", (char*)"imagewidth", CARMEN_PARAM_INT, &pts_mask.src_img_size.width, 1, NULL},
    {(char*)"camera3", (char*)"imageheight", CARMEN_PARAM_INT, &pts_mask.src_img_size.height, 1, NULL},
};//prepare param struct from the image that camera3 will give

carmen_param_t acl_params[] = {
    {(char*)"acl", (char*)"times_std", CARMEN_PARAM_DOUBLE, &pts_mask.times_std, 1, NULL},
    {(char*)"acl", (char*)"move_avg", CARMEN_PARAM_DOUBLE, &pts_mask.move_avg, 1, NULL},
    }; //prepare param struct
#else

extern TYPE_executionflags flags;
extern acl_data_message msg;

#endif

#endif

Does a safe shutdown. Disconnects from IPC. Other modules could deallocate memory, disconnect from hardware etc.

Parameters:
x the type of signal sent, SIGINT etcr

makes a clean shutdown of the program

Disconnects from ipc and releases video writer

Parameters:
x Signal value. To shutdown signal must be SIGINT
static void urg_exit ( urg_t *  urg,
const char *  message 
) [static]

Referenced by main().

Here is the caller graph for this function:


Variable Documentation

long* data
long* data
int data_max
int data_max

Referenced by main().

int i
int i
char * inifile [static]
char * inifile [static]
char * inifile [static]
int laser_cluster [static]

Referenced by main().

int laser_cluster [static]
int laser_cluster [static]
char* laser_dev [static]

Referenced by main().

char* laser_dev [static]
char* laser_dev [static]
carmen_param_t laser_params[]
Initial value:
 {
    {(char*)"inifile", (char*)"name", CARMEN_PARAM_STRING, &inifile, 0, NULL},
    {(char*)"hokuyo", (char*)"dev", CARMEN_PARAM_STRING, &laser_dev, 0, NULL},
    {(char*)"hokuyo", (char*)"start_angle", CARMEN_PARAM_DOUBLE, &lasermsg.config.start_angle, 0, NULL},
    {(char*)"hokuyo", (char*)"fov", CARMEN_PARAM_DOUBLE, &lasermsg.config.fov, 0, NULL},
    {(char*)"hokuyo", (char*)"angular_resolution", CARMEN_PARAM_DOUBLE, &lasermsg.config.angular_resolution, 0, NULL},
    {(char*)"hokuyo", (char*)"cluster", CARMEN_PARAM_INT, &laser_cluster, 0, NULL},
    {(char*)"hokuyo", (char*)"maximum_range", CARMEN_PARAM_DOUBLE, &lasermsg.config.maximum_range, 0, NULL},
    {(char*)"hokuyo", (char*)"accuracy", CARMEN_PARAM_DOUBLE, &lasermsg.config.accuracy, 0, NULL}}
carmen_param_t laser_params[]
Initial value:
 {
    {(char*)"inifile", (char*)"name", CARMEN_PARAM_STRING, &inifile, 0, NULL},
    {(char*)"hokuyo", (char*)"dev", CARMEN_PARAM_STRING, &laser_dev, 0, NULL},
    {(char*)"hokuyo", (char*)"start_angle", CARMEN_PARAM_DOUBLE, &lasermsg.config.start_angle, 0, NULL},
    {(char*)"hokuyo", (char*)"fov", CARMEN_PARAM_DOUBLE, &lasermsg.config.fov, 0, NULL},
    {(char*)"hokuyo", (char*)"angular_resolution", CARMEN_PARAM_DOUBLE, &lasermsg.config.angular_resolution, 0, NULL},
    {(char*)"hokuyo", (char*)"cluster", CARMEN_PARAM_INT, &laser_cluster, 0, NULL},
    {(char*)"hokuyo", (char*)"maximum_range", CARMEN_PARAM_DOUBLE, &lasermsg.config.maximum_range, 0, NULL},
    {(char*)"hokuyo", (char*)"accuracy", CARMEN_PARAM_DOUBLE, &lasermsg.config.accuracy, 0, NULL}}
carmen_param_t laser_params[]
Initial value:
 {
    {(char*)"inifile", (char*)"name", CARMEN_PARAM_STRING, &inifile, 0, NULL},
    {(char*)"laser", (char*)"dev", CARMEN_PARAM_STRING, &laser_dev, 0, NULL},
    {(char*)"laser", (char*)"start_angle", CARMEN_PARAM_DOUBLE, &lasermsg.config.start_angle, 0, NULL},
    {(char*)"laser", (char*)"fov", CARMEN_PARAM_DOUBLE, &lasermsg.config.fov, 0, NULL},
    {(char*)"laser", (char*)"angular_resolution", CARMEN_PARAM_DOUBLE, &lasermsg.config.angular_resolution, 0, NULL},
    {(char*)"laser", (char*)"cluster", CARMEN_PARAM_INT, &laser_cluster, 0, NULL},
    {(char*)"laser", (char*)"maximum_range", CARMEN_PARAM_DOUBLE, &lasermsg.config.maximum_range, 0, NULL},
    {(char*)"laser", (char*)"accuracy", CARMEN_PARAM_DOUBLE, &lasermsg.config.accuracy, 0, NULL}}

Referenced by main().

carmen_laser_laser_message lasermsg
carmen_laser_laser_message lasermsg [static]
carmen_laser_laser_message* lasermsg = NULL
carmen_laser_laser_message lasermsg [static]
carmen_laser_laser_message lasermsg [static]
int low_freq = 0
int low_freq = 0
carmen_param_t module_refresh_params[]
Initial value:
 {
    {(char*)"freq", (char*)"hokuyo_utm", CARMEN_PARAM_INT, &cycle_freq, 1, NULL},
}
int n
int n
int ret
int ret
int** scan [static]

Referenced by main(), and query_shminfo_handler().

int timestamp
int timestamp
double ts
urg_t urg
urg_t urg

Referenced by main().

Generated on Wed Jun 2 12:43:27 2010 for LAR Atlas by  doxygen 1.6.3