From 4bd08f0355b6b2cf3c027202d5ad301b4e182953 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期五, 31 三月 2023 17:16:22 +0800 Subject: [PATCH] 科目二修改 --- lib/src/main/cpp/driver_test.h | 181 +++++++++++++++++++++++---------------------- 1 files changed, 93 insertions(+), 88 deletions(-) diff --git a/lib/src/main/cpp/driver_test.h b/lib/src/main/cpp/driver_test.h index 878dafd..f773daa 100644 --- a/lib/src/main/cpp/driver_test.h +++ b/lib/src/main/cpp/driver_test.h @@ -5,13 +5,12 @@ #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 @@ -23,68 +22,78 @@ #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; @@ -236,7 +245,7 @@ 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 @@ -248,69 +257,67 @@ 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, @@ -318,16 +325,14 @@ 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); -- Gitblit v1.8.0