From 611f51ed073de48e83f46d47c82cd5ebe61258d7 Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期三, 16 九月 2020 18:14:27 +0800 Subject: [PATCH] 加入地图标定模式 --- lib/src/main/cpp/test_items2/through_something.cpp | 113 ++++++++++++++++++++++++++++++-------------------------- 1 files changed, 61 insertions(+), 52 deletions(-) diff --git a/lib/src/main/cpp/test_items2/through_something.cpp b/lib/src/main/cpp/test_items2/through_something.cpp index 09f6318..1000b06 100644 --- a/lib/src/main/cpp/test_items2/through_something.cpp +++ b/lib/src/main/cpp/test_items2/through_something.cpp @@ -104,6 +104,10 @@ RemoveTargetReduceRec(TargetReduceRec, key); } } + + if (RoadMap.calibrate == 1) + goto GET_DISTANCE_OF_NEARBY_TARGET; + // 浜鸿閬撱�佸叕浜ょ珯銆佸鏍� for (int i = 0; i < RoadMap.specialAreas.size(); i++) { if (RoadMap.specialAreas[i].type == GRID_AREA || RoadMap.specialAreas[i].road != RoadMap.roads[roadIndex].id) @@ -165,6 +169,7 @@ } } + GET_DISTANCE_OF_NEARBY_TARGET: if (nearbyTarget.size() > 0) { sort(nearbyTarget.begin(), nearbyTarget.end()); return nearbyTarget[0]; @@ -182,69 +187,73 @@ if (CrashTheLine(RoadMap.roads[road].stopLine[x].line, car, CarModelList)) { DEBUG("瓒婅繃璺彛 road %d 璺彛 %d", road, x); - CrossRoadCallback(road, x, RoadMap.roads[road].stopLine[x].active, car); + CrossRoadCallback(RoadMap, road, x, ExamSchemeCrossing(RoadMap, road, x), car); - if (!(it->second & REDUCE_SPEED)) { - // 涓嶆寜瑙勫畾鍑忛�燂紝涓嶅悎鏍� - DEBUG("涓嶆寜瑙勫畾鍑忛��"); + if (RoadMap.calibrate == 0) { + if (!(it->second & REDUCE_SPEED)) { + // 涓嶆寜瑙勫畾鍑忛�燂紝涓嶅悎鏍� + DEBUG("涓嶆寜瑙勫畾鍑忛��"); - if (RoadMap.roads[road].stopLine[x].active == ROAD_ACTIVE_FORWARD) { - AddExamFault(41, rtkTime); - } else if (RoadMap.roads[road].stopLine[x].active == - ROAD_ACTIVE_TURN_LEFT) { - AddExamFault(43, rtkTime); - } else if (RoadMap.roads[road].stopLine[x].active == - ROAD_ACTIVE_TURN_RIGHT) { - AddExamFault(46, rtkTime); + if (ExamSchemeCrossing(RoadMap, road, x) == ROAD_ACTIVE_FORWARD) { + AddExamFault(41, rtkTime); + } else if (ExamSchemeCrossing(RoadMap, road, x) == + ROAD_ACTIVE_TURN_LEFT) { + AddExamFault(43, rtkTime); + } else if (ExamSchemeCrossing(RoadMap, road, x) == + ROAD_ACTIVE_TURN_RIGHT) { + AddExamFault(46, rtkTime); + } + } + if (!(it->second & STOP_CAR) && RoadMap.roads[road].stopLine[x].stopFlag) { + // 涓嶅仠杞︾灜鏈涳紝涓嶅悎鏍� + DEBUG("涓嶅仠杞︾灜鏈�"); + if (ExamSchemeCrossing(RoadMap, road, x) == ROAD_ACTIVE_FORWARD) { + AddExamFault(42, rtkTime); + } else if (ExamSchemeCrossing(RoadMap, road, x) == + ROAD_ACTIVE_TURN_LEFT) { + AddExamFault(44, rtkTime); + } else if (ExamSchemeCrossing(RoadMap, road, x) == + ROAD_ACTIVE_TURN_RIGHT) { + AddExamFault(47, rtkTime); + } } } - if (!(it->second & STOP_CAR) && RoadMap.roads[road].stopLine[x].stopFlag) { - // 涓嶅仠杞︾灜鏈涳紝涓嶅悎鏍� - DEBUG("涓嶅仠杞︾灜鏈�"); - if (RoadMap.roads[road].stopLine[x].active == ROAD_ACTIVE_FORWARD) { - AddExamFault(42, rtkTime); - } else if (RoadMap.roads[road].stopLine[x].active == - ROAD_ACTIVE_TURN_LEFT) { - AddExamFault(44, rtkTime); - } else if (RoadMap.roads[road].stopLine[x].active == - ROAD_ACTIVE_TURN_RIGHT) { - AddExamFault(47, rtkTime); - } - } - RemoveTargetReduceRec(TargetReduceRec, it->first); goto RECHECK; } } + if (RoadMap.calibrate == 1) + return; + RECHECK2: for (auto it = TargetReduceRec2.begin(); it != TargetReduceRec2.end(); ++it) { - int x = it->first; - Line line; - int roadIndex = 0; + int x = it->first; + Line line; + int roadIndex = 0; - for (; roadIndex < RoadMap.roads.size(); ++roadIndex) { - if (RoadMap.roads[roadIndex].id == RoadMap.specialAreas[x].road) - break; - } - - PointF point2 = CalcProjectionWithRoadEdge(RoadMap.roads[roadIndex].leftEdge, - RoadMap.specialAreas[x].area[0]); - MakeLine(&line, &RoadMap.specialAreas[x].area[0], &point2); - - if (CrashTheLine(line, car, CarModelList)) { - if (RoadMap.specialAreas[x].type == ZEBRA_CROSSING && - !(it->second & REDUCE_SPEED)) { - DEBUG("浜鸿閬� 涓嶆寜瑙勫畾鍑忛��"); - AddExamFault(48, rtkTime); - } - if (RoadMap.specialAreas[x].type == BUS_STATION_AREA && - !(it->second & REDUCE_SPEED)) { - DEBUG("鍏氦绔� 涓嶆寜瑙勫畾鍑忛��"); - AddExamFault(50, rtkTime); - } - RemoveTargetReduceRec(TargetReduceRec2, it->first); - goto RECHECK2; - } + for (; roadIndex < RoadMap.roads.size(); ++roadIndex) { + if (RoadMap.roads[roadIndex].id == RoadMap.specialAreas[x].road) + break; } + + PointF point2 = CalcProjectionWithRoadEdge(RoadMap.roads[roadIndex].leftEdge, + RoadMap.specialAreas[x].area[0]); + MakeLine(&line, &RoadMap.specialAreas[x].area[0], &point2); + + if (CrashTheLine(line, car, CarModelList)) { + if (RoadMap.specialAreas[x].type == ZEBRA_CROSSING && + !(it->second & REDUCE_SPEED)) { + DEBUG("浜鸿閬� 涓嶆寜瑙勫畾鍑忛��"); + AddExamFault(48, rtkTime); + } + if (RoadMap.specialAreas[x].type == BUS_STATION_AREA && + !(it->second & REDUCE_SPEED)) { + DEBUG("鍏氦绔� 涓嶆寜瑙勫畾鍑忛��"); + AddExamFault(50, rtkTime); + } + RemoveTargetReduceRec(TargetReduceRec2, it->first); + goto RECHECK2; + } + } } -- Gitblit v1.8.0