Central Dashed Line Template Matching
[Road Detection]

This module performs Central Dashed Line Template Matching to come up with a representation of the road, given a birdview image. More...

Collaboration diagram for Central Dashed Line Template Matching:

Data Structures

struct  TypeImageInfo
struct  typeROIs
struct  TYPE_lanemarker
 The lane marker struct is used to describe any lane marker. It is a sequence of xy coordinates of points containing the lane marker. More...
struct  TYPE_2dpts
struct  twolaneroad_message
 This is used to transfer detections of the road across modules. This road is a two lane road. More...
struct  cdltm_jumpsearch_message
 The jump search message is a message sent by other module to the cdltm so that it starts looking for a 45 degree jump in the lane marker tracking. More...
struct  birdviewparams_label

Files

file  cdltm.cpp
 

The actual cdltm detection process header.


file  cdltm.h
 

The actual cdltm detection process header.


file  cdltm_functions.cpp
 

Auxiliary functions for the main cdltm.


file  cdltm_functions.cpp
 

Auxiliary functions for the main cdltm.


file  cdltm_interface.cpp
 

A tool for creating templates for the subsequent detection.


file  cdltm_interface.h
 

A tool for creating templates for the subsequent detection.


file  cdltm_interface.cpp
 

A tool for creating templates for the subsequent detection.


file  cdltm_interface.h
 

A tool for creating templates for the subsequent detection.


file  cdltm_messages.h
 

Defines messages this module publishes to others.


file  cdltm_subscribeexample.cpp
 

An example for subscribing the information generated by cdltm.


Defines

#define CAMMODE   2
#define CDLTM_RESET_OCCURRED_NAME   (char*)"cdltm_reset_occurred"
 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 CDLTM_RESET_COMMAND_NAME   (char*)"cdltm_reset_command"
 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 _MAX_NUM_LANEMARKER_PTS_   50
#define CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_NAME   (char*)"cdltm_publish_twolaneroad"
 Name of the message passed to IPC. Always capitals finishes with _MESSAGE_NAME and the value is small letters the same without the suffix.
#define CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_FMT   (char*)"{int,int,int,{[int:50],[int:50]},{[int:50],[int:50]},{[int:50],[int:50]},double,double,double,double,double,string}"
 Format of the message passed to IPC. Always capitals finishes with _MESSAGE_FMT and the value is given similar to the one bellow. For more information view the IPC manual.
#define CDLTM_JUMPSEARCH_MESSAGE_NAME   (char*)"cdltm_jumpsearch"
 Name of the message passed to IPC. Always capitals finishes with _MESSAGE_NAME and the value is small letters the same without the suffix.
#define CDLTM_JUMPSEARCH_MESSAGE_FMT   (char*)"{double,double,string}"
 Format of the message passed to IPC. Always capitals finishes with _MESSAGE_FMT and the value is given similar to the one bellow. For more information view the IPC manual.

Typedefs

typedef carmen_default_message cdltm_reset_occurred_message
typedef carmen_default_message cdltm_reset_command_message

Functions

void shutdown_module (int x)
 makes a clean shutdown of the program
void heartbeat_handler (void)
int main (int argc, char *argv[])
double distance_point_to_line (double slope, double bm, double pt_x, double pt_y)
 Gets the distance from a point to a known line.
double normal_distance (double pt_x0, double pt_y0, double pt_x1, double pt_y1)
 Gets the normal distance from two points.
void add_second_pt (int pt_x0, int pt_y0, double angle, double dist, int *pt_x1, int *pt_y1)
 Set a new point based on the angle and a distance from the previous.
void drawarrow (int x0, int y0, double o, double lenght, IplImage *dst, CvScalar color, int thickness, int line_type, int shift)
void drawcross (IplImage *src, int line, int column, int lenght, int *color)
 Set a new point based on the angle and a distance from the previous.
int WarpImage (const IplImage *src, IplImage *dst, const int centerx, const int centery, const float angle, const float scale)
 Set a new point based on the angle and a distance from the previous.
void templatesearch (IplImage *srcI, IplImage *srcT, double *maxval, double *minval, CvPoint *maxloc, CvPoint *minloc)
 Set a new point based on the angle and a distance from the previous.
void templatesearch_gray (IplImage *srcI, IplImage *srcT, double *maxval, double *minval, CvPoint *maxloc, CvPoint *minloc)
void GF_DrawCross (IplImage *src, int line, int column, int lenght, int *color)
 Draws a cross in the src image.
void on_mouse (int event, int x, int y, int flags, void *param)
int DrawROI (void)
int LoadImageFromSequence (int i, char *str)
int SetROI (int i)
int ShowWindows (void)
void road_publish_twolaneroad (twolaneroad_message *msg, char *msg_name, char *msg_fmt)
 Publishes twolaneroad_message. This is a generic function since that other road group modules may also publish the information.
void road_subscribe_twolaneroad (twolaneroad_message *msg, carmen_handler_t handler, carmen_subscribe_t subscribe_how, char *msg_name, char *msg_fmt)
void cdltm_subscribe_jumpsearch (cdltm_jumpsearch_message *data, carmen_handler_t handler, carmen_subscribe_t subscribe_how)
 Subscribes twolaneroad_message messages. Uses broadcast to all subscribers.
void cdltm_publish_jumpsearch (cdltm_jumpsearch_message *msg)
 Publishes twolaneroad_message. This is a generic function since that other road group modules may also publish the information.
void handler (void)

Variables

TYPE_executionflags flg
c_videosavingvideosaving
ipm_data_message sensordata
char sensorfusion_heartbeat
char str [1024]
CvFont Font
int TypeImageInfo::x
int TypeImageInfo::y
int TypeImageInfo::w
int TypeImageInfo::h
camera_image_message c
int c_alloc = 1
double ts
char sensorfusion_heartbeat = 0
ipm_data_messagesensordata
const int numimgs = 1552
IplImage * original = 0
IplImage * original0 = 0
IplImage * original1 = 0
IplImage * original2 = 0
IplImage * original3 = 0
IplImage * InfoImg = 0
IplImage * ctemplate = 0
IplImage * gray = 0
int zoomimg = 1
typeROIs dbROIs
int flgDoingROI = 0
int i
int cont = 1
char filename [255]
static IplImage * image
twolaneroad_message msg
struct birdviewparams_label birdviewparams
CvFont Font
carmen_param_t camera_birdview_params []

Detailed Description

This module performs Central Dashed Line Template Matching to come up with a representation of the road, given a birdview image.


Define Documentation

#define _MAX_NUM_LANEMARKER_PTS_   50

Referenced by create_hyp().

#define CAMMODE   2
#define CDLTM_JUMPSEARCH_MESSAGE_FMT   (char*)"{double,double,string}"

Format of the message passed to IPC. Always capitals finishes with _MESSAGE_FMT and the value is given similar to the one bellow. For more information view the IPC manual.

#define CDLTM_JUMPSEARCH_MESSAGE_NAME   (char*)"cdltm_jumpsearch"

Name of the message passed to IPC. Always capitals finishes with _MESSAGE_NAME and the value is small letters the same without the suffix.

#define CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_FMT   (char*)"{int,int,int,{[int:50],[int:50]},{[int:50],[int:50]},{[int:50],[int:50]},double,double,double,double,double,string}"

Format of the message passed to IPC. Always capitals finishes with _MESSAGE_FMT and the value is given similar to the one bellow. For more information view the IPC manual.

Referenced by main().

#define CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_NAME   (char*)"cdltm_publish_twolaneroad"

Name of the message passed to IPC. Always capitals finishes with _MESSAGE_NAME and the value is small letters the same without the suffix.

Referenced by main().

#define CDLTM_RESET_COMMAND_NAME   (char*)"cdltm_reset_command"

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 CDLTM_RESET_OCCURRED_NAME   (char*)"cdltm_reset_occurred"

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.


Typedef Documentation

typedef carmen_default_message cdltm_reset_command_message
typedef carmen_default_message cdltm_reset_occurred_message

Function Documentation

void add_second_pt ( int  pt_x0,
int  pt_y0,
double  angle,
double  dist,
int *  pt_x1,
int *  pt_y1 
)

Set a new point based on the angle and a distance from the previous.

Parameters:
pt_x0 - the first point coordinate on x
pt_y0 - the first point coordinate on y
angle - the the angle that the second point must do with the first
dist - the distance between points
pt_x1 - the out point coordinate on x
pt_y1 - the out point coordinate on y
void cdltm_publish_jumpsearch ( cdltm_jumpsearch_message msg  ) 

Publishes twolaneroad_message. This is a generic function since that other road group modules may also publish the information.

Parameters:
msg Pointer to message. When a new message is received the variable msg is filled with the new information.

Referenced by state_management().

Here is the caller graph for this function:

void cdltm_subscribe_jumpsearch ( cdltm_jumpsearch_message data,
carmen_handler_t  handler,
carmen_subscribe_t  subscribe_how 
)

Subscribes twolaneroad_message messages. Uses broadcast to all subscribers.

Parameters:
msg Pointer to message. When a new message is received the variable msg is filled with the new information.
handler pointer to function that should be executed when a message is received. If NULL no function is called.
subscribe_how Value that says if all messages are to be received CARMEN_SUBSCRIBE_ALL or if only the more recent is important CARMEN_SUBSCRIBE_LATEST.

Referenced by main().

Here is the caller graph for this function:

double distance_point_to_line ( double  slope,
double  bm,
double  pt_x,
double  pt_y 
)

Gets the distance from a point to a known line.

Parameters:
slope - the line angle with the x axis
bm - the point where the line intersects the y axis
pt_x - the point coordinate on x
pt_y - the point coordinate on y
Returns:
the distance from the point to the line, assuming a perpendicularity
void drawarrow ( int  x0,
int  y0,
double  o,
double  lenght,
IplImage *  dst,
CvScalar  color,
int  thickness,
int  line_type,
int  shift 
)
void drawcross ( IplImage *  src,
int  line,
int  column,
int  lenght,
int *  color 
)

Set a new point based on the angle and a distance from the previous.

Parameters:
src The IPLimage to draw on.
line x coordinate of the cross center.
column y coordinate of the cross center.
lenght the size of the cross.
color a pointer to a 3 byte array with the RGB color.
int DrawROI ( void   ) 

Referenced by main().

Here is the caller graph for this function:

void GF_DrawCross ( IplImage *  src,
int  line,
int  column,
int  lenght,
int *  color 
)

Draws a cross in the src image.

Parameters:
src pointer to the source image.
line pixel line index for the cross's center.
column pixel column index for the cross's center.
lenght cross lenght.
color cross color.
void handler ( void   ) 
void heartbeat_handler ( void   ) 
int LoadImageFromSequence ( int  i,
char *  str 
)
int main ( int  argc,
char *  argv[] 
)

############################################################################### ##################### Image Preprocessing #################################### ##############################################################################

############################################################################### ##################### Template matching ###################################### ##############################################################################

############################################################################### ##################### Clustering by teta ##################################### ##############################################################################

############################################################################### ##################### Removing Outliers ###################################### ##############################################################################

############################################################################### ##################### Tracking section ####################################### ##############################################################################

################################################################# ---- get the relevant points and put the at msg lanemarker ----# ################################################################

References birdviewparams, camera_birdview_params, CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_FMT, CDLTM_PUBLISH_TWOLANEROAD_MESSAGE_NAME, Font, handler(), TYPE_ipm_expert_params::height, image, PLN, TYPE_ipm_expert_params::PPM, road_subscribe_twolaneroad(), shutdown_module(), and TYPE_ipm_expert_params::width.

Here is the call graph for this function:

double normal_distance ( double  pt_x0,
double  pt_y0,
double  pt_x1,
double  pt_y1 
)

Gets the normal distance from two points.

Parameters:
pt_x0 - the first point coordinate on x
pt_y0 - the first point coordinate on y
pt_x1 - the second point coordinate on x
pt_y1 - the second point coordinate on y
Returns:
the normal distance
void on_mouse ( int  event,
int  x,
int  y,
int  flags,
void *  param 
)

Referenced by main().

Here is the caller graph for this function:

void road_publish_twolaneroad ( twolaneroad_message msg,
char *  msg_name,
char *  msg_fmt 
)

Publishes twolaneroad_message. This is a generic function since that other road group modules may also publish the information.

Parameters:
msg Pointer to message. When a new message is received the variable msg is filled with the new information.

Referenced by main().

Here is the caller graph for this function:

void road_subscribe_twolaneroad ( twolaneroad_message msg,
carmen_handler_t  handler,
carmen_subscribe_t  subscribe_how,
char *  msg_name,
char *  msg_fmt 
)

Referenced by main().

Here is the caller graph for this function:

int SetROI ( int  i  ) 
int ShowWindows ( void   ) 
void shutdown_module ( int  sig  ) 

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
void templatesearch ( IplImage *  srcI,
IplImage *  srcT,
double *  maxval,
double *  minval,
CvPoint *  maxloc,
CvPoint *  minloc 
)

Set a new point based on the angle and a distance from the previous.

Parameters:
srcI The src IPLimage to warp.
srcT The template to search for.
maxval the maximum value of match. These are src image coordinates.
minval the minimum value of match. These are src image coordinates.
maxloc The coordinates of the maximum match.
scale The factor of scaling.
Returns:
1 ok, 0 notok.
void templatesearch_gray ( IplImage *  srcI,
IplImage *  srcT,
double *  maxval,
double *  minval,
CvPoint *  maxloc,
CvPoint *  minloc 
)

Referenced by imagecorrelation(), and imagecorrelation_gray().

Here is the caller graph for this function:

int WarpImage ( const IplImage *  src,
IplImage *  dst,
const int  centerx,
const int  centery,
const float  angle,
const float  scale 
)

Set a new point based on the angle and a distance from the previous.

Parameters:
src The src IPLimage to warp.
dst The final rotated image.
centerx the x coordinate of the center of ratation on the image.
centery the y coordinate of the center of ratation on the image.
angle The angle of rotation.
scale The factor of scaling.
Returns:
1 ok, 0 notok.

Referenced by ScaleTemplate().

Here is the caller graph for this function:


Variable Documentation

int c_alloc = 1
carmen_param_t camera_birdview_params[]
Initial value:
 {
    {(char*)"ipm", (char*)"PPM", CARMEN_PARAM_DOUBLE, &birdviewparams.PPM, 0, NULL},
    {(char*)"ipm", (char*)"width", CARMEN_PARAM_INT, &birdviewparams.width, 0, NULL},
    {(char*)"ipm", (char*)"height", CARMEN_PARAM_INT, &birdviewparams.height, 0, NULL}}

Referenced by main().

int cont = 1

Referenced by main().

IplImage* ctemplate = 0

Referenced by main().

Referenced by DrawROI(), main(), and on_mouse().

char filename[255]

Referenced by select_ini_file().

int flgDoingROI = 0

Referenced by on_mouse().

CvFont Font
CvFont Font
IplImage* gray = 0
int TypeImageInfo::h [inherited]

Referenced by main().

int i
IplImage* image [static]
IplImage* InfoImg = 0

Referenced by DrawROI(), and main().

const int numimgs = 1552
IplImage* original = 0

Referenced by DrawROI(), and main().

IplImage* original0 = 0
IplImage* original1 = 0
IplImage* original2 = 0
IplImage* original3 = 0
char str[1024]
double ts
int TypeImageInfo::w [inherited]

Referenced by main().

int TypeImageInfo::x [inherited]

Referenced by main().

int TypeImageInfo::y [inherited]

Referenced by main().

int zoomimg = 1

Referenced by on_mouse().

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