Исправление потенциальных ошибок перемещения

This commit is contained in:
VladislavOstapov 2023-01-28 14:34:36 +03:00
parent 9a206925c5
commit bcb42cce82

View File

@ -240,29 +240,19 @@ void scheduler_main()
// логика для того, чтобы роботы не столкнулись в начале // логика для того, чтобы роботы не столкнулись в начале
if (robot1.dx.current_zone < robot1_border) { if (robot1.dx.current_zone < robot1_border) {
if (robot1_code.PC < 0) {
robot2_lock_zone = -1; robot2_lock_zone = -1;
robot1_lock_zone = robot1_border; robot1_lock_zone = robot1_border;
if (robot1_code.PC < 0) {
robot1_code.barrel_id = -1; robot1_code.barrel_id = -1;
robot1_code.code[0] = ROBOT_CMD_DOWN(); robot1_code.code[0] = ROBOT_CMD_DOWN();
robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot1_border + 2); robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot1_border + 2);
robot1_code.code[2] = ROBOT_CMD_END(); robot1_code.code[2] = ROBOT_CMD_END();
robot1_code.PC = 0; robot1_code.PC = 0;
} }
} else if (robot2.dx.current_zone < ZONE_DEGREASING) {
// начальная позиция робота 1 - обезжир
robot2_lock_zone = ZONE_DEGREASING;
if (robot2_code.PC < 0) {
robot2_code.barrel_id = -1;
robot2_code.code[0] = ROBOT_CMD_DOWN();
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING);
robot2_code.code[2] = ROBOT_CMD_END();
robot2_code.PC = 0;
}
} else if (robot2.dx.current_zone > robot2_border) { } else if (robot2.dx.current_zone > robot2_border) {
// это уже граница робота 2 // это уже граница робота 2
robot2_lock_zone = robot2_border - 2;
if (robot2_code.PC < 0) { if (robot2_code.PC < 0) {
robot2_lock_zone = robot2_border - 2;
robot2_code.barrel_id = -1; robot2_code.barrel_id = -1;
robot2_code.code[0] = ROBOT_CMD_DOWN(); robot2_code.code[0] = ROBOT_CMD_DOWN();
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot2_border - 2); robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot2_border - 2);
@ -287,6 +277,17 @@ void scheduler_main()
// и отдельно для второго (только если не в ночном режиме) // и отдельно для второго (только если не в ночном режиме)
if (robot2_code.PC < 0) { if (robot2_code.PC < 0) {
if (robot2.dx.current_zone < ZONE_DEGREASING) {
// начальная позиция робота 1 - обезжир
robot2_lock_zone = ZONE_DEGREASING;
if (robot2_code.PC < 0) {
robot2_code.barrel_id = -1;
robot2_code.code[0] = ROBOT_CMD_DOWN();
robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING);
robot2_code.code[2] = ROBOT_CMD_END();
robot2_code.PC = 0;
}
} else {
for (short i = 0; i < BARRELS_COUNT; i++) { for (short i = 0; i < BARRELS_COUNT; i++) {
// для каждой задачи: // для каждой задачи:
tasks[i].start_zone = barrels[i].zone; tasks[i].start_zone = barrels[i].zone;
@ -305,3 +306,4 @@ void scheduler_main()
} }
} }
} }
}