00001 #ifndef CAJUN_DUMMY_SLOPE_H 00002 #define CAJUN_DUMMY_SLOPE_H 00003 00004 #include "data_type.H" 00005 #include "data_queue.H" 00006 #include "data_logger.H" 00007 #include <cstdio> 00008 00009 namespace cajun 00010 { 00011 # define scan_beam(scan_num, beam_num) scan_repository[(scan_num)].end_beam[(beam_num)] 00012 # define assign_slope(curr_beam) assign_slope.end_beam[(curr_beam)] 00013 # define MAX_OBSTACLES 2000 00014 00015 class dummy_obstacles_t 00016 { 00017 data_queue_writer_t<scan_analysis_data_t> *m_dq_b_writer; 00018 data_queue_writer_t<scan_analysis_data_t> *m_dq_writer; 00019 struct obst_posi 00020 { 00021 double X; 00022 double Y; 00023 }; 00024 obst_posi obst_details[MAX_OBSTACLES]; 00025 int num_obst; 00026 FILE *fp; 00027 public: 00028 dummy_obstacles_t (data_queue_writer_t<scan_analysis_data_t> *scan_analysis_dq_writer, 00029 data_queue_writer_t<scan_analysis_data_t> *scan_analysis_dq_b_writer, 00030 const char *obstacle_source_filename) 00031 { 00032 m_dq_writer = scan_analysis_dq_writer; 00033 m_dq_b_writer = scan_analysis_dq_b_writer; 00034 fp = fopen(obstacle_source_filename,"r"); 00035 fscanf(fp,"%d",&num_obst); 00036 for(int i = 0 ; i < num_obst ; i++) 00037 { 00038 fscanf(fp,"%lf %lf",&obst_details[i].X,&obst_details[i].Y); 00039 } 00040 00041 }; 00042 00043 void add_scan (nav_data_t nav) 00044 { 00045 scan_analysis_data_t assign_slope; 00046 assign_slope.tstamp = nav.tstamp; 00047 assign_slope.num_beams = num_obst; 00048 for ( int i = 0; i < num_obst; i++) 00049 { 00050 assign_slope(i).x = 0.0; 00051 assign_slope(i).y = 0.0; 00052 assign_slope(i).z = 0.0; 00053 assign_slope(i).pitch_slope = 0.0; 00054 assign_slope(i).roll_slope = 0.0; 00055 } 00056 for ( int i = 0;i < num_obst; i++) 00057 { 00058 assign_slope(i).x = obst_details[i].X; 00059 assign_slope(i).y = obst_details[i].Y; 00060 assign_slope(i).z = 0; 00061 assign_slope(i).pitch_slope = 90.0; 00062 assign_slope(i).roll_slope = 90.0; 00063 } 00064 00065 m_dq_b_writer->push(assign_slope); 00066 00067 } 00068 00069 }; 00070 }; 00071 #endif