| | |
| | | #define STOP_CAR 8 |
| | | #define OVER_SPEED 16 |
| | | |
| | | static const double DISTANCE_STOP_CAR_TO_STOP_LINE = 3.0; |
| | | static const double PASS_SCHOOL_MAX_SPEED = 30.0; // kmh |
| | | static const double LASTEST_BREAK_POINT = 30.0; |
| | | |
| | | static void SetTargetReduceRec(map<int, int> &table, int key, int status) |
| | | { |
| | | auto it = table.find(key); |
| | |
| | | int key = roadIndex * 100 + i; |
| | | int rec = GetTargetReduceRec(TargetReduceRec, key); |
| | | |
| | | if (distance > 1e-3 && distance < LASTEST_BREAK_POINT) { |
| | | if (distance > 1e-3 && distance < examParam.crossing_break_valid_distance) { |
| | | if (rec == NOT_ENTER) { |
| | | SetTargetReduceRec(TargetReduceRec, key, ENTER_Z); |
| | | } |
| | |
| | | DEBUG("检测到路口刹车动作"); |
| | | SetTargetReduceRec(TargetReduceRec, key, rec | REDUCE_SPEED); |
| | | } |
| | | } else if (distance > 1e-3 && distance < DISTANCE_STOP_CAR_TO_STOP_LINE) { |
| | | } else if (distance > 1e-3 && distance < examParam.crossing_stop_valid_distance) { |
| | | // 路口停车观察 |
| | | if (moveDirect == 0 && !(rec & STOP_CAR)) { |
| | | DEBUG("检测到路口停车动作"); |
| | | SetTargetReduceRec(TargetReduceRec, key, rec | STOP_CAR); |
| | | } |
| | | } else if (distance > LASTEST_BREAK_POINT + 5 && rec != NOT_ENTER) { |
| | | } else if (distance > examParam.crossing_break_valid_distance + 5 && rec != NOT_ENTER) { |
| | | RemoveTargetReduceRec(TargetReduceRec, key); |
| | | } |
| | | } |
| | |
| | | nearbyTarget.push_back(distance1); |
| | | } |
| | | |
| | | if (distance1 > 1e-3 && distance1 < LASTEST_BREAK_POINT) { |
| | | if (distance1 > 1e-3 && distance1 < examParam.crossing_break_valid_distance) { |
| | | if (rec == NOT_ENTER) { |
| | | SetTargetReduceRec(TargetReduceRec2, key, ENTER_Z); |
| | | } |
| | |
| | | DEBUG("检测到人行道等刹车动作"); |
| | | SetTargetReduceRec(TargetReduceRec2, key, rec | REDUCE_SPEED); |
| | | } |
| | | } else if (distance1 > LASTEST_BREAK_POINT + 5 && rec != NOT_ENTER) { |
| | | } else if (distance1 > examParam.crossing_break_valid_distance + 5 && rec != NOT_ENTER) { |
| | | RemoveTargetReduceRec(TargetReduceRec2, key); |
| | | } |
| | | } else if (RoadMap.specialAreas[i].type == SCHOOL_AREA) { |
| | |
| | | if (rec == NOT_ENTER) { |
| | | SetTargetReduceRec(TargetReduceRec2, key, ENTER_Z); |
| | | } |
| | | if (ConvertMs2KMh(speed) > PASS_SCHOOL_MAX_SPEED && !(rec & OVER_SPEED)) { |
| | | if (ConvertMs2KMh(speed) > examParam.cross_school_max_speed && !(rec & OVER_SPEED)) { |
| | | SetTargetReduceRec(TargetReduceRec2, key, rec | OVER_SPEED); |
| | | |
| | | DEBUG("通过学校区域超速 %f kmh", ConvertMs2KMh(speed)); |