| | |
| | | |
| | | using namespace std; |
| | | |
| | | const double STOP_DISTANCE_THRESHOLD_RED = 0.5; |
| | | const double EDGE_DISTANCE_THRESHOLD_RED = 0.5; |
| | | const double EDGE_DISTANCE_THRESHOLD_YELLOW = 0.3; |
| | | const double SLIDE_DISTANCE_THRESHOLD_RED = 0.3; |
| | | const double SLIDE_DISTANCE_THRESHOLD_YELLOW = 0.1; |
| | | const uint32_t CAR_START_TIMEOUT = D_SEC(30); |
| | | |
| | | const uint32_t STOP_CAR_TIME = D_SEC(1); |
| | | |
| | | const double EPSILON = 1e-3; |
| | |
| | | |
| | | DEBUG("DIS1 = %f DIS2 = %f", dis1, dis2); |
| | | |
| | | if (dis1 > STOP_DISTANCE_THRESHOLD_RED) { |
| | | if (dis1 > examParam.ramp_stoppoint_red_distance) { |
| | | // 距离停止线前后超出50厘米 |
| | | AddExamFault(12, rtkTime); |
| | | DEBUG("距离停止线前后超出50厘米,不合格"); |
| | |
| | | DEBUG("前保险没有位于停止带内,但没有超出50厘米"); |
| | | } |
| | | |
| | | if (dis2 > EDGE_DISTANCE_THRESHOLD_RED) { |
| | | if (dis2 > examParam.ramp_edge_red_distance) { |
| | | // 距离边线超出50厘米,不合格 |
| | | AddExamFault(14, rtkTime); |
| | | DEBUG("距离边线超出50厘米"); |
| | | } else if (dis2 > EDGE_DISTANCE_THRESHOLD_YELLOW) { |
| | | // 距离边线超出30厘米,不合格 |
| | | } else if (dis2 > examParam.ramp_edge_yellow_distance) { |
| | | // 距离边线超出30厘米,扣10分 |
| | | AddExamFault(18, rtkTime); |
| | | DEBUG("距离边线超出30厘米"); |
| | | } |
| | |
| | | // 发生后滑 |
| | | double slideDistance = DistanceOf(stopPoint, car->carXY[car->axial[AXIAL_FRONT]]); |
| | | |
| | | if (slideDistance > SLIDE_DISTANCE_THRESHOLD_YELLOW) { |
| | | if (slideDistance > examParam.ramp_slide_yellow_distance) { |
| | | slideNormalDistance = true; |
| | | } |
| | | |
| | | if (slideDistance > SLIDE_DISTANCE_THRESHOLD_RED && !slideLongDistance && !reportSlideFault) { |
| | | if (slideDistance > examParam.ramp_slide_red_distance && !slideLongDistance && !reportSlideFault) { |
| | | // 后滑超过30厘米, 不合格 |
| | | AddExamFault(16, rtkTime); |
| | | DEBUG("后滑超过30厘米"); |
| | |
| | | |
| | | if (!reportStartTimeout && (IntersectionOfLine(map->point[4], stopPoint, car->carXY[car->axial[AXIAL_FRONT]]) != -1 || |
| | | DistanceOf(stopPoint, car->carXY[car->axial[AXIAL_FRONT]]) < 0.1)) { |
| | | if (TimeMakeComposite(rtkTime->hh, rtkTime->mm, rtkTime->ss, rtkTime->mss*10) - stopCarTime > CAR_START_TIMEOUT) { |
| | | if (TimeMakeComposite(rtkTime->hh, rtkTime->mm, rtkTime->ss, rtkTime->mss*10) - stopCarTime > examParam.ramp_start_car_limit_time) { |
| | | // 起步时间超过30秒,不合格 |
| | | AddExamFault(15, rtkTime); |
| | | DEBUG("起步时间超过30秒"); |