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