From c9642b15fdaf2af15340e6b8a1a3da8c20bcf789 Mon Sep 17 00:00:00 2001 From: Luuk Date: Mon, 24 Jun 2024 17:22:55 +0200 Subject: [PATCH] Change our formation during kickoffs --- .../stp/computations/PositionComputations.cpp | 13 +------ .../referee_specific/KickOffThemPrepare.cpp | 38 +++++++++---------- .../referee_specific/KickOffUsPrepare.cpp | 13 ++++--- 3 files changed, 27 insertions(+), 37 deletions(-) diff --git a/roboteam_ai/src/stp/computations/PositionComputations.cpp b/roboteam_ai/src/stp/computations/PositionComputations.cpp index a0165550e..5ff11a5ab 100644 --- a/roboteam_ai/src/stp/computations/PositionComputations.cpp +++ b/roboteam_ai/src/stp/computations/PositionComputations.cpp @@ -161,13 +161,6 @@ std::vector PositionComputations::determineWallPositions(const rtt::Fie wallLine.end = intersectionOther.value(); } } - // if (wallLine.length() == 0) { - // RTT_WARNING("Wall line length is 0"); - // double lineX = field.leftDefenseArea.right(); - // double lineYTop = field.playArea.top(); - // double lineYBottom = field.playArea.bottom(); - // wallLine = LineSegment({lineX, lineYBottom}, {lineX, lineYTop}); - // } size_t defendersCount = static_cast(amountDefenders); int i = 1; @@ -517,11 +510,7 @@ void PositionComputations::calculateInfoForFormationOurSide(std::unordered_map, rtt::ai::constants::MAX_ROBOT_COUNT>{ // Roles is we play 6v6 std::make_unique("keeper"), - std::make_unique("formation_back_0"), - std::make_unique("formation_mid_0"), + std::make_unique("waller_0"), + std::make_unique("waller_1"), + std::make_unique("waller_2"), std::make_unique("formation_front_0"), - std::make_unique("formation_back_1"), - std::make_unique("formation_mid_1"), - // Additional roles if we play 11v11 std::make_unique("formation_front_1"), - std::make_unique("formation_back_2"), - std::make_unique("formation_mid_2"), std::make_unique("formation_front_2"), - std::make_unique("formation_mid_3"), + // Additional roles if we play 11v11 + std::make_unique("formation_front_3"), + std::make_unique("formation_front_4"), + std::make_unique("formation_front_5"), + std::make_unique("formation_front_6"), }; } @@ -42,23 +42,23 @@ Dealer::FlagMap KickOffThemPrepare::decideRoleFlags() const noexcept { Dealer::DealerFlag keeperFlag(DealerFlagTitle::KEEPER); flagMap.insert({"keeper", {DealerFlagPriority::KEEPER, {keeperFlag}}}); - flagMap.insert({"formation_back_0", {DealerFlagPriority::HIGH_PRIORITY, {}}}); - flagMap.insert({"formation_back_1", {DealerFlagPriority::HIGH_PRIORITY, {}}}); - flagMap.insert({"formation_back_2", {DealerFlagPriority::HIGH_PRIORITY, {}}}); - flagMap.insert({"formation_mid_0", {DealerFlagPriority::LOW_PRIORITY, {}}}); - flagMap.insert({"formation_mid_1", {DealerFlagPriority::LOW_PRIORITY, {}}}); - flagMap.insert({"formation_mid_2", {DealerFlagPriority::LOW_PRIORITY, {}}}); - flagMap.insert({"formation_mid_3", {DealerFlagPriority::LOW_PRIORITY, {}}}); - flagMap.insert({"formation_front_0", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); - flagMap.insert({"formation_front_1", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); - flagMap.insert({"formation_front_2", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); + flagMap.insert({"waller_0", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); + flagMap.insert({"waller_1", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); + flagMap.insert({"waller_2", {DealerFlagPriority::LOW_PRIORITY, {}}}); + flagMap.insert({"formation_front_0", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_1", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_2", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_3", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_4", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_5", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_6", {DealerFlagPriority::HIGH_PRIORITY, {}}}); return flagMap; } void KickOffThemPrepare::calculateInfoForRoles() noexcept { + PositionComputations::calculateInfoForDefendersAndWallers(stpInfos, roles, field, world, true); PositionComputations::calculateInfoForFormationOurSide(stpInfos, roles, field, world); - stpInfos["formation_front_0"].setPositionToMoveTo(Vector2(-0.73, 0)); } const char* KickOffThemPrepare::getName() const { return "Kick Off Them Prepare"; } diff --git a/roboteam_ai/src/stp/plays/referee_specific/KickOffUsPrepare.cpp b/roboteam_ai/src/stp/plays/referee_specific/KickOffUsPrepare.cpp index 7a2bb4771..2977cf0ec 100644 --- a/roboteam_ai/src/stp/plays/referee_specific/KickOffUsPrepare.cpp +++ b/roboteam_ai/src/stp/plays/referee_specific/KickOffUsPrepare.cpp @@ -19,16 +19,16 @@ KickOffUsPrepare::KickOffUsPrepare() : Play() { // Roles is we play 6v6 std::make_unique("keeper"), std::make_unique("kicker"), - std::make_unique("formation_mid_0"), + std::make_unique("waller_0"), + std::make_unique("waller_1"), std::make_unique("formation_front_0"), std::make_unique("formation_front_1"), std::make_unique("formation_front_2"), // Additional roles if we play 11v11 - std::make_unique("formation_back_0"), - std::make_unique("formation_back_1"), std::make_unique("formation_front_3"), std::make_unique("formation_front_4"), std::make_unique("formation_front_5"), + std::make_unique("formation_front_6"), }; } @@ -46,20 +46,21 @@ Dealer::FlagMap KickOffUsPrepare::decideRoleFlags() const noexcept { flagMap.insert({"keeper", {DealerFlagPriority::KEEPER, {keeperFlag}}}); flagMap.insert({"kicker", {DealerFlagPriority::REQUIRED, {kickerFlag, detectionFlag}}}); - flagMap.insert({"formation_back_0", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); - flagMap.insert({"formation_back_1", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); - flagMap.insert({"formation_mid_0", {DealerFlagPriority::LOW_PRIORITY, {}}}); + flagMap.insert({"waller_0", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); + flagMap.insert({"waller_1", {DealerFlagPriority::MEDIUM_PRIORITY, {}}}); flagMap.insert({"formation_front_0", {DealerFlagPriority::HIGH_PRIORITY, {}}}); flagMap.insert({"formation_front_1", {DealerFlagPriority::HIGH_PRIORITY, {}}}); flagMap.insert({"formation_front_2", {DealerFlagPriority::HIGH_PRIORITY, {}}}); flagMap.insert({"formation_front_3", {DealerFlagPriority::HIGH_PRIORITY, {}}}); flagMap.insert({"formation_front_4", {DealerFlagPriority::HIGH_PRIORITY, {}}}); flagMap.insert({"formation_front_5", {DealerFlagPriority::HIGH_PRIORITY, {}}}); + flagMap.insert({"formation_front_6", {DealerFlagPriority::LOW_PRIORITY, {}}}); return flagMap; } void KickOffUsPrepare::calculateInfoForRoles() noexcept { + PositionComputations::calculateInfoForDefendersAndWallers(stpInfos, roles, field, world, true); PositionComputations::calculateInfoForFormationOurSide(stpInfos, roles, field, world); // The "kicker" will go to the ball