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
#include <lar/lar.h>
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;
int InitDES_communication(char* com_device, int* port, int baud, TYPE_executionflags* flg);
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 |
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:
-
- Todo:
- many modules use this. Should be an util library.
- Parameters:
-
- Todo:
- many modules use this. Should be an util library.
- Parameters:
-
- 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
#include <lar/xbee_interface.h>
#include <strings.h>
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);
#ifdef _XBEE_CPP_
char *COM_DEVICE_XBEE;
double read_frequency;
TYPE_executionflags flags;
xbee_rx_data_message rx_message;
xbee_tx_data_message tx_message;
TYPE_xbee_public_params params;
int device_handler_xbee;
char* tx_string;
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}};
#else
extern char *COM_DEVICE_XBEE;
extern double read_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>
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;
#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 |
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 |
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 |
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
#include <lar/agent_clearance_interface.h>
#include "/usr/local/include/cvblobs/BlobResult.h"
typedef struct{
double sleeptime;
} TYPE_agent_clearance_local_params;
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);
#ifdef _AGENT_CLEARANCE_CPP_
TYPE_executionflags flags;
agent_clearance_distance_data_message distance_message;
TYPE_agent_clearance_local_params local_parameters;
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;
carmen_param_t agent_clearance_params[] = {
{(char*)"agents", (char*)"sleeptime", CARMEN_PARAM_DOUBLE, &local_parameters.sleeptime, 1, NULL}};
#else
extern TYPE_executionflags flags;
extern agent_clearance_distance_data_message distance_message;
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 |
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
#include <lar/pdhffc_interface.h>
#include "pdhffc_pid.h"
#include "pdhffc_templatetracking.h"
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);
#ifdef _PDHFFC_CPP_
TYPE_executionflags 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
#include <lar/tlhfcs_interface.h>
#include <lar/tlcstm_messages.h>
#include <lar/soundplayer_interface.h>
#include "tlhfcs_init.h"
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;
void shutdown_module(int x);
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);
#ifdef _TLHFCS_CPP_
TYPE_detected_sign detected_sign;
TYPE_color color_table;
TYPE_executionflags flags;
tlcstm_data_message tl_msg;
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},
};
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},
};
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},
{(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},
{(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},
{(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},
{(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},
{(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},
};
#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
#include <lar/vscshfba_interface.h>
#include <lar/tlcstm_messages.h>
#include <lar/soundplayer_interface.h>
#include <cvblobs/BlobResult.h>
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;
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);
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);
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 SET_RED_ROI 0b00000001
#define SET_WHITE_ROI 0b00000010
#define SET_BLACK_ROI 0b00000100
#define SET_BLUE_ROI 0b00001000
#define NUM_OF_CYCLES 10
#ifdef _VSCSHFBA_CPP_
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;
c_videosaving* videosaving;
int lx=0;
int ly = 0;
int step = 0;
int wind_pos_x = 0;
int wind_pos_y = 0;
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},
{(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},
{(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:
-
- 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
#include <lar/egomotiongpsimu_interface.h>
#include<amlpp/amlpp.h>
#include <gtk/gtk.h>
using namespace amlpp;
class Observer
{
RealMatrix k11;
RealMatrix k12;
RealMatrix k21;
RealMatrix k22;
RealMatrix k31;
RealMatrix k32;
RealMatrix Gain;
RealMatrix GainWGPS;
RealMatrix GainWOGPS;
RealMatrix State;
RealMatrix StateDot;
RealMatrix Residual;
bool GPSisValid;
RealMatrix R33_b2n;
RealMatrix R33_n2b;
RealMatrix T33_b2n;
public:
Observer();
~Observer(){};
RealMatrix NlinObsStateUpdateV1(RealMatrix Measurements, Real Tb, Real deltaT);
void NlinObsSetGain();
void NlinObsChooseGainOnGPSValidity(bool GPSisValid);
void NlinObsSetK(const char *ktype, double kval);
void CalcRotationMatrix(double psi, double theta, double phi);
void NlinObsSetInitalCondition(RealMatrix Measurements);
};
#ifdef _EGOMOTIONGPSIMU_CPP_
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);
TYPE_executionflags flags;
egomotiongpsimu_data_message msg;
TYPE_egomotiongpsimu_public_params params;
bool gprmc_update = FALSE;
bool gpgga_update = FALSE;
bool xsense_update = FALSE;
bool GPSisValid = FALSE;
#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};
RealMatrix g(g_arr,3,1);
#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
#include <lar/laserprojectiononimage_interface.h>
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);
#ifdef _LASERPROJECTIONONIMAGE_CPP_
TYPE_executionflags 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
#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>
#define MAX_NAME_LENGTH 256
#define MAX_COMMAND_LENGTH 256
#define EPSILON 0.0001
#define TIMEOUT -1
#define WRONG 0
#define OK 1
#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
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;
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_
TYPE_executionflags flags;
char* comport;
int baudrate;
gps_gpgga_data_message gpgga_msg;
gps_gprmc_data_message gprmc_msg;
gps_gpgga_data_message *gps_extern_gpgga_ptr;
gps_gprmc_data_message *gps_extern_gprmc_ptr;
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}
};
#else
extern TYPE_executionflags flags;
extern gps_gpgga_data_message gpgga_msg;
extern gps_gprmc_data_message gprmc_msg;
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
#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"
#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;
int main(int argc, char **argv);
void shutdown_module(int x);
void handler_param_daemon(char *a, char *b, char *c);
#ifdef _XSENS_CPP_
TYPE_executionflags flags;
xsens_data_message data_msg;
char *comport;
Packet* packet;
xsens::Cmt3 cmt3;
carmen_param_t xsens_params[] = {
{(char*)"xsens", (char*)"comport", CARMEN_PARAM_STRING, &comport, 0, NULL}
};
#else
extern TYPE_executionflags flags;
extern xsens_data_message msg;
extern char *comport;
extern Packet* packet;
extern xsens::Cmt3 cmt3;
#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:
-
- 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
#include <lar/lar.h>
#include <lar/acl_interface.h>
#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;
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);
#ifdef _ACL_CPP_
#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;
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},
};
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},
};
#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 |