From c484cbb09d445e2ab30ea011c6d2ffd87202bb26 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期五, 23 十月 2020 18:05:34 +0800 Subject: [PATCH] 添加可用户配置的评判参数。 --- lib/src/main/cpp/test_items2/road_exam.cpp | 75 ++++++++++++++----------------------- 1 files changed, 29 insertions(+), 46 deletions(-) diff --git a/lib/src/main/cpp/test_items2/road_exam.cpp b/lib/src/main/cpp/test_items2/road_exam.cpp index 0a3f627..f3164f5 100644 --- a/lib/src/main/cpp/test_items2/road_exam.cpp +++ b/lib/src/main/cpp/test_items2/road_exam.cpp @@ -69,11 +69,6 @@ static const int CROSSING_TURN_THRESHOLD = 35; static const int TURN_THRESHOLD = 3; -const double SLIDE_DISTANCE_THRESHOLD_RED = 0.3; -const double SLIDE_DISTANCE_THRESHOLD_YELLOW = 0.1; - -const double EXAM_RANGE = 2700.0; // 鑷冲皯椹鹃┒璺濈 - static bool occurOverSpeed; static bool occurSecondBreak; @@ -137,18 +132,6 @@ static int startTurnYaw, prevYaw; static int turnCnt, turnTimeCnt; static int prevTurnWise; - -static const uint32_t GEAR_N_SLIDE_TIMEOUT = D_SEC(10); -static const uint32_t GEAR_ERROR_TIMEOUT = D_SEC(15); -static const uint32_t STOP_CAR_TIME = D_SEC(2); -static const uint32_t CHANGE_LANE_MIN_INTERVAL = D_SEC(10); -static const uint32_t CRASH_DOTTED_LINE_TIMEOUT = D_SEC(10); -static const uint32_t TURN_SIGNAL_LAMP_ADVANCE = D_SEC(3); - - -static const double MAX_SPEED = 60.0 * 1000.0 / 3600.0; // 瓒呴�熺‘璁� -static const double DEC_MAX_SPEED = 55.0 * 1000.0 / 3600.0; // 瓒呴�熷彇娑� -static const int SPEED_GEAR_TABLE[][2] = {{0, 20}, {5, 30}, {15, 40}, {25, 10000}, {35, 10000}}; static void ItemExam(road_exam_map &RoadMap, int roadIndex, const car_model *car, LIST_CAR_MODEL &CarModelList, double speed, int moveDirect, const struct RtkTime *rtkTime, double straight, double road_end); static void ItemExam2(road_exam_map &RoadMap, int roadIndex, const car_model *car, LIST_CAR_MODEL &CarModelList); @@ -901,7 +884,7 @@ checkCrashGreenTimeout = 1; crashGreenRunTime = *rtkTime; // 杩愬姩涓帇铏氱嚎鐨勫紑濮嬫椂闂寸偣 } else if (checkCrashGreenTimeout == 1) { - if (TimeGetDiff(rtkTime, &crashGreenRunTime) >= CRASH_DOTTED_LINE_TIMEOUT) { + if (TimeGetDiff(rtkTime, &crashGreenRunTime) >= examParam.crash_dotted_line_cumulative_time) { DEBUG("闀挎椂闂村帇铏氱嚎"); checkCrashGreenTimeout = 2; // 闀挎椂闂撮獞杞ц溅閬撳垎鐣岀嚎琛岄┒锛屼笉鍚堟牸 @@ -946,7 +929,7 @@ // 娌℃墦鐏紝涓嶅悎鏍� AddExamFault(13, rtkTime); } else if (TimeGetDiff(&crashGreenStartTime, &turnSignalStatus.time) < - TURN_SIGNAL_LAMP_ADVANCE) { + examParam.turn_signal_min_advance) { DEBUG("杞悜鐏椂闂翠笉瓒� %02d-%02d-%02d %02d:%02d:%02d.%03d -> %02d-%02d-%02d %02d:%02d:%02d.%03d", crashGreenStartTime.YY, crashGreenStartTime.MM, crashGreenStartTime.DD, crashGreenStartTime.hh, crashGreenStartTime.mm, crashGreenStartTime.ss, @@ -963,7 +946,7 @@ // 娌℃墦鐏紝涓嶅悎鏍� AddExamFault(13, rtkTime); } else if (TimeGetDiff(&crashGreenStartTime, &turnSignalStatus.time) < - TURN_SIGNAL_LAMP_ADVANCE) { + examParam.turn_signal_min_advance) { DEBUG("杞悜鐏椂闂翠笉瓒� %02d-%02d-%02d %02d:%02d:%02d.%03d -> %02d-%02d-%02d %02d:%02d:%02d.%03d", crashGreenStartTime.YY, crashGreenStartTime.MM, crashGreenStartTime.DD, crashGreenStartTime.hh, crashGreenStartTime.mm, crashGreenStartTime.ss, @@ -975,7 +958,7 @@ } } - if (((ChangeLane.gain < 0 && gain < 0) || (ChangeLane.gain > 0 && gain > 0)) && TimeGetDiff(rtkTime, &ChangeLane.time) < CHANGE_LANE_MIN_INTERVAL) { + if (((ChangeLane.gain < 0 && gain < 0) || (ChangeLane.gain > 0 && gain > 0)) && TimeGetDiff(rtkTime, &ChangeLane.time) < examParam.continuous_change_lane_min_time) { DEBUG("杩炵画鍙橀亾"); AddExamFault(15, rtkTime); } @@ -1196,23 +1179,23 @@ switch (act) { case ROAD_ACTIVE_FORWARD: DEBUG("璺彛鎻愮ず 鐩磋"); - PlayTTS("鍓嶆柟璺彛璇风洿琛�", NULL); + PlayTTS(examParam.crossing_go_straight_tts, NULL); break; case ROAD_ACTIVE_TURN_LEFT: DEBUG("璺彛鎻愮ず 宸﹁浆"); - PlayTTS("鍓嶆柟璺彛璇峰乏杞�", NULL); + PlayTTS(examParam.crossing_turn_left_tts, NULL); break; case ROAD_ACTIVE_TURN_RIGHT: DEBUG("璺彛鎻愮ず 鍙宠浆"); - PlayTTS("鍓嶆柟璺彛璇峰彸杞�", NULL); + PlayTTS(examParam.crossing_turn_right_tts, NULL); break; case ROAD_ACTIVE_TURN_BACKWARD: DEBUG("璺彛鎻愮ず 鎺夊ご"); - PlayTTS("鍓嶆柟璺彛璇锋帀澶�", NULL); + PlayTTS(examParam.crossing_turn_back_tts, NULL); break; default: DEBUG("璺彛鎻愮ず 鏈厤缃�"); - PlayTTS("鍓嶆柟璺彛鍚暀缁冩寚浠�", NULL); + PlayTTS(examParam.crossing_turn_unknown_tts, NULL); break; } } @@ -1308,14 +1291,14 @@ RingBreak(); // 瓒呴�熸娴� - if (speed > MAX_SPEED) { + if (ConvertMs2KMh(speed) > examParam.road_max_speed) { if (!occurOverSpeed) { occurOverSpeed = true; // 瓒呴�燂紝涓嶅悎鏍� DEBUG("瓒呴�� %f", ConvertMs2KMh(speed)); AddExamFault(10, rtkTime); } - } else if (speed < DEC_MAX_SPEED) { + } else if (ConvertMs2KMh(speed) < examParam.road_max_speed - 5) { occurOverSpeed = false; } @@ -1358,32 +1341,32 @@ } break; case GEAR_1: - if (ConvertMs2KMh(speed) < SPEED_GEAR_TABLE[0][0] || - ConvertMs2KMh(speed) > SPEED_GEAR_TABLE[0][1]) { + if (ConvertMs2KMh(speed) < examParam.gear_speed_table[0][0] || + ConvertMs2KMh(speed) > examParam.gear_speed_table[0][1]) { currGearError = true; } break; case GEAR_2: - if (ConvertMs2KMh(speed) < SPEED_GEAR_TABLE[1][0] || - ConvertMs2KMh(speed) > SPEED_GEAR_TABLE[1][1]) { + if (ConvertMs2KMh(speed) < examParam.gear_speed_table[1][0] || + ConvertMs2KMh(speed) > examParam.gear_speed_table[1][1]) { currGearError = true; } break; case GEAR_3: - if (ConvertMs2KMh(speed) < SPEED_GEAR_TABLE[2][0] || - ConvertMs2KMh(speed) > SPEED_GEAR_TABLE[2][1]) { + if (ConvertMs2KMh(speed) < examParam.gear_speed_table[2][0] || + ConvertMs2KMh(speed) > examParam.gear_speed_table[2][1]) { currGearError = true; } break; case GEAR_4: - if (ConvertMs2KMh(speed) < SPEED_GEAR_TABLE[3][0] || - ConvertMs2KMh(speed) > SPEED_GEAR_TABLE[3][1]) { + if (ConvertMs2KMh(speed) < examParam.gear_speed_table[3][0] || + ConvertMs2KMh(speed) > examParam.gear_speed_table[3][1]) { currGearError = true; } break; case GEAR_5: - if (ConvertMs2KMh(speed) < SPEED_GEAR_TABLE[4][0] || - ConvertMs2KMh(speed) > SPEED_GEAR_TABLE[4][1]) { + if (ConvertMs2KMh(speed) < examParam.gear_speed_table[4][0] || + ConvertMs2KMh(speed) > examParam.gear_speed_table[4][1]) { currGearError = true; } break; @@ -1398,7 +1381,7 @@ gearNSlideTimePoint = *rtkTime; } if (GearNSlideStatus == 1 && - TimeGetDiff(rtkTime, &gearNSlideTimePoint) > GEAR_N_SLIDE_TIMEOUT) { + TimeGetDiff(rtkTime, &gearNSlideTimePoint) > examParam.gear_n_allow_time) { // 绌烘。婊戣瓒�5绉掞紝涓嶅悎鏍� DEBUG("鎸′綅婊戣锛岃秴杩�5绉�"); AddExamFault(8, rtkTime); @@ -1415,7 +1398,7 @@ ReadCarStatus(GEAR), ConvertMs2KMh(speed)); gearErrorTime += TimeGetDiff(rtkTime, &gearErrorTimePoint); } - if (gearErrorTime > GEAR_ERROR_TIMEOUT) { + if (gearErrorTime > examParam.gear_speed_error_cumulative_time) { // 绱15绉掞紝鎸′綅-杞﹂�熶笉鍖归厤锛屼笉鍚堟牸 DEBUG("鎸′綅閿欒瓒呰繃15绉�"); AddExamFault(6, rtkTime); @@ -1453,7 +1436,7 @@ prevMoveDirect = moveDirect; } else if (moveDirect == 0) { // 鎸佺画鍋滆溅 - if (TimeGetDiff(rtkTime, &stopTimepoint) >= STOP_CAR_TIME && !StopCarOnRedArea && + if (TimeGetDiff(rtkTime, &stopTimepoint) >= examParam.road_pause_criteria && !StopCarOnRedArea && StopOnRedArea(RoadMap, car)) { // 鍋滆溅瓒�2绉掞紝鍋滃湪绾㈠尯锛屼笉鍚堟牸 AddExamFault(16, rtkTime); @@ -1465,11 +1448,11 @@ if (occurSlide) { double slideDistance = DistanceOf(stopPoint, car->basePoint); - if (slideDistance > SLIDE_DISTANCE_THRESHOLD_YELLOW) { + if (slideDistance > examParam.road_slide_yellow_distance) { slideNormalDistance = true; } - if (slideDistance > SLIDE_DISTANCE_THRESHOLD_RED && !slideLongDistance) { + if (slideDistance > examParam.road_slide_red_distance && !slideLongDistance) { // 鍚庢粦瓒呰繃30鍘樼背, 涓嶅悎鏍� AddExamFault(5, rtkTime); DEBUG("鍚庢粦瓒呰繃30鍘樼背"); @@ -1629,7 +1612,7 @@ } if (!not_complete) { - if (road_end > 200 && ReadOdo() > EXAM_RANGE) { + if (road_end > 200 && ReadOdo() > examParam.road_total_distance) { RoadExamStatus = ROAD_EXAM_ITEM_CAR_STOP; StartStopCarExam(); return; @@ -1818,7 +1801,7 @@ // 娌℃墦鐏紝涓嶅悎鏍� AddExamFault(13, rtkTime); } else if (TimeGetDiff(&beginTurnTime, &turnSignalStatus.time) < - TURN_SIGNAL_LAMP_ADVANCE) { + examParam.turn_signal_min_advance) { DEBUG("杞悜鐏椂闂翠笉瓒�"); // 涓嶈冻3绉掞紝涓嶅悎鏍� AddExamFault(14, rtkTime); @@ -1829,7 +1812,7 @@ // 娌℃墦鐏紝涓嶅悎鏍� AddExamFault(13, rtkTime); } else if (TimeGetDiff(&beginTurnTime, &turnSignalStatus.time) < - TURN_SIGNAL_LAMP_ADVANCE) { + examParam.turn_signal_min_advance) { DEBUG("杞悜鐏椂闂翠笉瓒�"); // 涓嶈冻3绉掞紝涓嶅悎鏍� AddExamFault(14, rtkTime); -- Gitblit v1.8.0