| | |
| | | #ifndef RTKDRIVERTEST_DRIVER_TEST_H |
| | | #define RTKDRIVERTEST_DRIVER_TEST_H |
| | | |
| | | #include "test_common/Geometry.h" |
| | | #include "rtk_module/rtk.h" |
| | | #include "test_items2/dummy_light.h" |
| | | |
| | | #include <vector> |
| | | #include <string> |
| | | #include <list> |
| | | #include "test_common/Geometry.h" |
| | | #include "rtk_module/rtk.h" |
| | | #include "map.h" |
| | | |
| | | #define EXAM_AREA_NONE 0 |
| | | #define EXAM_AREA_START 1 |
| | |
| | | #define AXIAL_FRONT 0 |
| | | #define AXIAL_REAR 1 |
| | | |
| | | #define MAP_TYPE_PARK_BUTTOM 1 |
| | | #define MAP_TYPE_STOP_START 2 |
| | | #define MAP_TYPE_PART_EDGE 3 |
| | | #define MAP_TYPE_CURVE 4 |
| | | #define MAP_TYPE_TURN_90 5 |
| | | |
| | | using namespace std; |
| | | |
| | | struct car_desc_ { |
| | | double distance; // 距离主天线的距离 |
| | | double angle; // 从中轴线逆时针形成的角度 |
| | | }; |
| | | |
| | | struct RtkTime { |
| | | int YY; // 2位数 |
| | | int MM; |
| | | int DD; |
| | | int hh; |
| | | int mm; |
| | | int ss; |
| | | int mss; |
| | | }; |
| | | typedef enum { |
| | | MAP_TYPE_NONE, |
| | | MAP_TYPE_PARK_BUTTOM, |
| | | MAP_TYPE_UPHILL, |
| | | MAP_TYPE_PARK_EDGE, |
| | | MAP_TYPE_CURVE, |
| | | MAP_TYPE_TURN_90 |
| | | } map_type_t; |
| | | |
| | | typedef struct { |
| | | struct RtkTime tm; |
| | | double distance; // 距离主天线的距离 |
| | | double angle; // 从中轴线逆时针形成的角度 |
| | | } car_desc_t; |
| | | |
| | | typedef struct { |
| | | // struct RtkTime tm; |
| | | PointF basePoint; // 现场测量的主天线坐标 |
| | | int axial[2]; |
| | | int left_front_tire[2]; |
| | | int right_front_tire[2]; |
| | | int left_rear_tire[2]; |
| | | int right_rear_tire[2]; |
| | | int bodyNum; |
| | | int *body; |
| | | int pointNum; |
| | | // int bodyNum; |
| | | std::vector<int> body; |
| | | // int pointNum; |
| | | double antPitch; // 前后天线因安装位置之固有pitch角 |
| | | double antHeight; // 车顶天线高程 |
| | | double groundHeight; // 大地高程 |
| | | double yaw; |
| | | double pitch; |
| | | struct car_desc_ *carDesc; // 经现场测量点计算后的值 |
| | | PointF *carXY; // 计算后的车身各点坐标 |
| | | } car_model; |
| | | |
| | | // 总数 |
| | | // 中轴线前点,id 0,中轴线后点id |
| | | // 左包围, 右包围 |
| | | // 左前轮,外内 |
| | | typedef struct { |
| | | int body_num; |
| | | int body[64]; |
| | | int front_left_tire[2]; |
| | | int front_right_tire[2]; |
| | | int rear_left_tire[2]; |
| | | int rear_right_tire[2]; |
| | | } carModelDesc_t; |
| | | std::vector<car_desc_t> carDesc; |
| | | // struct car_desc_ *carDesc; // 经现场测量点计算后的值 |
| | | // PointF *carXY; // 计算后的车身各点坐标 |
| | | } car_model_t; |
| | | |
| | | typedef struct { |
| | | uint32_t uptime; |
| | | int point_num; |
| | | PointF *points; |
| | | carModelDesc_t *desc; |
| | | } car_model_cache_t; |
| | | int64_t utc_time = 0; |
| | | double yaw; |
| | | double pitch; |
| | | double roll; |
| | | PointF base_point; |
| | | std::vector<PointF> points; |
| | | } modeling_t; |
| | | |
| | | typedef enum { |
| | | BACKWARD = -1, |
| | | STOP = 0, |
| | | FORWARD = 1 |
| | | } move_status_t; |
| | | |
| | | typedef struct { |
| | | int64_t timestamp = 0; |
| | | double speed = 0; |
| | | move_status_t move = STOP; |
| | | } motion_t; |
| | | |
| | | typedef struct { |
| | | map_type_t type; |
| | | int map_idx; // 对应科目地图集合中的序号 |
| | | } map_t; |
| | | |
| | | typedef struct { |
| | | bool examing = false; |
| | | int curr_modeling_index = -1; |
| | | int prev_modeling_index = -1; |
| | | area_map_t *pMap; |
| | | car_model_t *pModel; |
| | | modeling_t *pModeling; |
| | | motion_t *pMotion; |
| | | map_t curr_exam_map; |
| | | map_t arriving_map; |
| | | } prime_t; |
| | | |
| | | struct ExamFault { |
| | | int sn; |
| | |
| | | double road_slide_red_distance; |
| | | int road_total_distance; |
| | | int road_max_speed; // Km per hour |
| | | vector<vector<int>> gear_speed_table; |
| | | std::vector<std::vector<int>> gear_speed_table; |
| | | int gear_n_allow_time; // Sec |
| | | int same_gear_min_time; // Sec, x秒内,不允许N->X->N->X置同一挡位 |
| | | int gear_speed_error_cumulative_time; // Sec |
| | |
| | | int start_car_limit_distance; |
| | | double open_door_drive_allow_distance; |
| | | |
| | | string prepare_tts; |
| | | string touch_leftfront_tts; |
| | | string touch_leftrear_tts; |
| | | string touch_rightfront_tts; |
| | | string touch_rightrear_tts; |
| | | string start_engine_tts; |
| | | std::string prepare_tts; |
| | | std::string touch_leftfront_tts; |
| | | std::string touch_leftrear_tts; |
| | | std::string touch_rightfront_tts; |
| | | std::string touch_rightrear_tts; |
| | | std::string start_engine_tts; |
| | | |
| | | string start_car_begin_tts; |
| | | string start_car_end_tts; |
| | | std::string start_car_begin_tts; |
| | | std::string start_car_end_tts; |
| | | |
| | | int change_lane_limit_distance; |
| | | string change_lane_begin_tts; |
| | | string change_lane_end_tts; |
| | | std::string change_lane_begin_tts; |
| | | std::string change_lane_end_tts; |
| | | |
| | | int shift_limit_distance; |
| | | int shift_hold_time; // Sec |
| | | string shift_begin_tts; |
| | | string shift_end_tts; |
| | | string shift_up_tts; |
| | | string shift_down_tts; |
| | | std::string shift_begin_tts; |
| | | std::string shift_end_tts; |
| | | std::string shift_up_tts; |
| | | std::string shift_down_tts; |
| | | |
| | | string straight_begin_tts; |
| | | string straight_end_tts; |
| | | std::string straight_begin_tts; |
| | | std::string straight_end_tts; |
| | | int straight_limit_distance; |
| | | double straight_max_offset; |
| | | |
| | | int overtake_limit_distance; |
| | | string overtake_begin_tts; |
| | | string overtake_end_tts; |
| | | std::string overtake_begin_tts; |
| | | std::string overtake_end_tts; |
| | | |
| | | int stop_car_limit_distance; |
| | | int stop_car_open_door_allow_time; |
| | | double stop_car_edge_red_distance; |
| | | double stop_car_edge_yellow_distance; |
| | | string stop_car_begin_tts; |
| | | string stop_car_end_tts; |
| | | std::string stop_car_begin_tts; |
| | | std::string stop_car_end_tts; |
| | | double crossing_stop_valid_distance; |
| | | int cross_school_max_speed; |
| | | int crossing_break_valid_distance; |
| | | |
| | | string crossing_go_straight_tts; |
| | | string crossing_turn_left_tts; |
| | | string crossing_turn_right_tts; |
| | | string crossing_turn_back_tts; |
| | | string crossing_turn_unknown_tts; |
| | | std::string crossing_go_straight_tts; |
| | | std::string crossing_turn_left_tts; |
| | | std::string crossing_turn_right_tts; |
| | | std::string crossing_turn_back_tts; |
| | | std::string crossing_turn_unknown_tts; |
| | | } exam_param_t; |
| | | |
| | | extern exam_param_t examParam; |
| | | |
| | | typedef vector<struct area_exam_map> LIST_AREA_MAP; |
| | | |
| | | typedef list<car_model *> LIST_CAR_MODEL; |
| | | |
| | | void DriverTestInit(void); |
| | | void ReadDriverExamPrimer(void); |
| | | |
| | | void ClearAreaMap(void); |
| | | void AddAreaMap(int id, int type, const double (*map)[2], int pointNum, const double (*map2)[2], int pointNum2); |
| | | |
| | | void AddCurveMap(curve_map_t &map); |
| | | void AddParkButtonMap(park_button_map_t &map); |
| | | void AddParkEdgeMap(park_edge_map_t &map); |
| | | |
| | | void CleanRoadMap(void); |
| | | void SetRoadMap(road_exam_map &map, vector<scheme_t> &scheme); |
| | | void SetRoadExamScheme(vector<scheme_t> &scheme); |
| | | void SetRoadMap(road_exam_map &map, std::vector<scheme_t> &scheme); |
| | | void SetRoadExamScheme(std::vector<scheme_t> &scheme); |
| | | |
| | | void SetCarMeasurePoint(double *basePoint, int *axial, int *left_front_tire, |
| | | int *right_front_tire, int *left_rear_tire, int *right_rear_tire, |
| | |
| | | |
| | | void StartDriverExam(int start, int type); |
| | | |
| | | void UpdateRTKInfo(const rtk_info *s); |
| | | void AddExamFault(int wrong, const struct RtkTime *rtkTime); |
| | | void UpdateRTKInfo(const rtk_info_t *s); |
| | | void AddExamFault(int wrong); |
| | | void RoadChange(int road, int status); |
| | | void CrossingChange(int road, int crossing, int status); |
| | | |
| | | void SystemShutdown(int event, int timeout); |
| | | |
| | | void SetDummyLightExam(int n, struct dummy_light_exam *cfg); |
| | | |
| | | uint32_t TimeGetDiff(const struct RtkTime *rtkTime1, const struct RtkTime *rtkTime2); |
| | | |
| | | void MasterInqRoadStatus(void); |
| | | |