| | |
| | | static double DistanceOfTire2Edge(const Polygon *map, const car_model *car); |
| | | static bool ExitTestArea(const Polygon *map, const car_model *car); |
| | | |
| | | void StartSAS(int index, int moveDirect, const struct RtkTime *rtkTime) |
| | | void StartSAS(int index, const Polygon *map, const car_model *car, int moveDirect, const struct RtkTime *rtkTime) |
| | | { |
| | | double yawEdge = YawOf(map->point[8], map->point[0]); |
| | | |
| | | if (moveDirect < 0 || DeltaYaw(car->yaw, yawEdge) >= 90.0) { |
| | | testing = false; |
| | | return; |
| | | } |
| | | |
| | | DEBUG("进入坡起项目"); |
| | | |
| | | testing = true; |
| | | mapIndex = index; |
| | | prevMoveDirect = moveDirect; |
| | |
| | | |
| | | int TestSAS(const Polygon *map, const car_model *car, const car_model *carPrev, double speed, int moveDirect, const struct RtkTime *rtkTime) |
| | | { |
| | | if (!testing) |
| | | return 0; |
| | | |
| | | if (CrashRedLine(map, car)) { |
| | | // 车轮压线,不合格 |
| | | if (!occurCrashRedLine) { |
| | |
| | | |
| | | if (ExitTestArea(map, car)) { |
| | | // 驶离测试区 |
| | | if (!stopCar) { |
| | | // 不停车直接离开 |
| | | AddExamFault(10103, rtkTime); |
| | | } |
| | | testing = false; |
| | | } |
| | | |