From 11d67882395d26f25212aa072c39dfec2040eb6c Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Sun, 5 Jan 2025 02:20:23 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88?= =?UTF-8?q?=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crane_msgs/msg/analysis/PlaySituation.msg | 8 ++++++++ utility/crane_msg_wrappers/src/play_situation_wrapper.cpp | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/crane_msgs/msg/analysis/PlaySituation.msg b/crane_msgs/msg/analysis/PlaySituation.msg index aabbb35d..3068709f 100755 --- a/crane_msgs/msg/analysis/PlaySituation.msg +++ b/crane_msgs/msg/analysis/PlaySituation.msg @@ -56,6 +56,14 @@ uint8 OUR_INPLAY = 51 uint8 THEIR_INPLAY = 52 uint8 AMBIGUOUS_INPLAY = 53 +uint8 STOP_PRE_OUR_PENALTY_PREPARATION = 60 +uint8 STOP_PRE_THEIR_PENALTY_PREPARATION = 61 +uint8 STOP_PRE_OUR_KICKOFF_PREPARATION = 62 +uint8 STOP_PRE_THEIR_KICKOFF_PREPARATION = 63 +# +uint8 STOP_PRE_OUR_BALL_PLACEMENT = 64 +uint8 STOP_PRE_THEIR_BALL_PLACEMENT = 65 + uint32 stage uint32 command_raw diff --git a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp index ad4ae9fa..81fb5514 100644 --- a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp +++ b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp @@ -60,7 +60,13 @@ static std::map situation_command_map = { CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, INPLAY), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, OUR_INPLAY), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, THEIR_INPLAY), - CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, AMBIGUOUS_INPLAY)}; + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, AMBIGUOUS_INPLAY), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_PENALTY_PREPARATION), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_PENALTY_PREPARATION), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_KICKOFF_PREPARATION), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_KICKOFF_PREPARATION), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_BALL_PLACEMENT), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_BALL_PLACEMENT)}; auto PlaySituationWrapper::update(const crane_msgs::msg::PlaySituation & msg) -> void { From b1e998b9eb84dce74d0eaaec42337ca185cf6490 Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Sun, 5 Jan 2025 11:31:10 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=E9=9D=9E=E6=8E=A8=E5=A5=A8=E3=81=A7?= =?UTF-8?q?=E4=BD=BF=E3=82=8F=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=84?= =?UTF-8?q?INDIRECT=5FFREE=E3=82=A4=E3=83=99=E3=83=B3=E3=83=88=E9=96=A2?= =?UTF-8?q?=E9=80=A3=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crane_msgs/msg/analysis/PlaySituation.msg | 6 ++---- crane_play_switcher/src/play_switcher.cpp | 14 +++++--------- crane_robot_skills/src/attacker.cpp | 1 - crane_robot_skills/src/ball_nearby_positioner.cpp | 2 -- crane_speaker/src/crane_speaker_node.cpp | 2 -- .../src/play_situation_wrapper.cpp | 2 -- 6 files changed, 7 insertions(+), 20 deletions(-) diff --git a/crane_msgs/msg/analysis/PlaySituation.msg b/crane_msgs/msg/analysis/PlaySituation.msg index 3068709f..0a6300a4 100755 --- a/crane_msgs/msg/analysis/PlaySituation.msg +++ b/crane_msgs/msg/analysis/PlaySituation.msg @@ -8,7 +8,6 @@ # 13 : OUR_PENALTY_PREPARATION # 14 : OUR_PENALTY_START # 15 : OUR_DIRECT_FREE -# 16 : OUR_INDIRECT_FREE # 17 : OUR_TIMEOUT # 18 : OUR_GOAL # 19 : OUR_BALL_PLACEMENT @@ -18,7 +17,6 @@ # 23 : THEIR_PENALTY_PREPARATION # 24 : THEIR_PENALTY_START # 25 : THEIR_DIRECT_FREE -# 26 : THEIR_INDIRECT_FREE # 27 : THEIR_TIMEOUT # 28 : THEIR_GOAL # 29 : THEIR_BALL_PLACEMENT @@ -33,7 +31,7 @@ uint8 OUR_KICKOFF_START = 12 uint8 OUR_PENALTY_PREPARATION = 13 uint8 OUR_PENALTY_START = 14 uint8 OUR_DIRECT_FREE = 15 -uint8 OUR_INDIRECT_FREE = 16 +# uint8 OUR_INDIRECT_FREE = 16 現在は非推奨(使われていない) # uint8 OUR_TIMEOUT = 17 use halt # uint8 OUR_GOAL = 18 use halt uint8 OUR_BALL_PLACEMENT = 19 @@ -43,7 +41,7 @@ uint8 THEIR_KICKOFF_START = 22 uint8 THEIR_PENALTY_PREPARATION = 23 uint8 THEIR_PENALTY_START = 24 uint8 THEIR_DIRECT_FREE = 25 -uint8 THEIR_INDIRECT_FREE = 26 +# uint8 THEIR_INDIRECT_FREE = 26 現在は非推奨(使われていない) # uint8 THEIR_TIMEOUT = 27 use halt # uint8 THEIR_GOAL = 28 use halt uint8 THEIR_BALL_PLACEMENT = 29 diff --git a/crane_play_switcher/src/play_switcher.cpp b/crane_play_switcher/src/play_switcher.cpp index 0a3e6e1c..0100de70 100644 --- a/crane_play_switcher/src/play_switcher.cpp +++ b/crane_play_switcher/src/play_switcher.cpp @@ -106,7 +106,7 @@ void PlaySwitcher::referee_callback(const robocup_ssl_msgs::msg::Referee & msg) inplay_command_info.reason = "RAWコマンド変化&FORCE_START:強制的にINPLAYに突入"; } else { //-----------------------------------// - // その他:HALT/STOP/KICKOFF/PENALTY/DIRECT/INDIRECT/PLACEMENT + // その他:HALT/STOP/KICKOFF/PENALTY/DIRECT/PLACEMENT //-----------------------------------// // raw command -> crane command std::map command_map; @@ -121,7 +121,6 @@ void PlaySwitcher::referee_callback(const robocup_ssl_msgs::msg::Referee & msg) CMD_MAPPING(is_yellow, PREPARE_KICKOFF, KICKOFF_PREPARATION) CMD_MAPPING(is_yellow, PREPARE_PENALTY, PENALTY_PREPARATION) CMD_MAPPING(is_yellow, DIRECT_FREE, DIRECT_FREE) - CMD_MAPPING(is_yellow, INDIRECT_FREE, INDIRECT_FREE) CMD_MAPPING(is_yellow, BALL_PLACEMENT, BALL_PLACEMENT) next_play_situation = command_map[msg.command]; @@ -137,14 +136,13 @@ void PlaySwitcher::referee_callback(const robocup_ssl_msgs::msg::Referee & msg) if ( play_situation_msg.command == PlaySituation::THEIR_KICKOFF_START or play_situation_msg.command == PlaySituation::THEIR_DIRECT_FREE or - play_situation_msg.command == PlaySituation::THEIR_INDIRECT_FREE or // 敵PKのINPLAYはOUR_PENALTY_STARTとして実装しているのでINPLAY遷移はしない // play_situation_msg.command == PlaySituation::THEIR_PENALTY_START or play_situation_msg.command == PlaySituation::OUR_KICKOFF_START or - play_situation_msg.command == PlaySituation::OUR_DIRECT_FREE or + play_situation_msg.command == PlaySituation::OUR_DIRECT_FREE // 味方PKのINPLAYはOUR_PENALTY_STARTとして実装しているのでINPLAY遷移はしない - // play_situation_msg.command == PlaySituation::OUR_PENALTY_START or - play_situation_msg.command == PlaySituation::OUR_INDIRECT_FREE) { + // play_situation_msg.command == PlaySituation::OUR_PENALTY_START + ) { if (0.05 <= (last_command_changed_state.ball_position - world_model->ball.pos).norm()) { next_play_situation = PlaySituation::INPLAY; inplay_command_info.reason = @@ -166,9 +164,7 @@ void PlaySwitcher::referee_callback(const robocup_ssl_msgs::msg::Referee & msg) inplay_command_info.reason = "INPLAY判定:敵キックオフから10秒経過"; } // フリーキックからN秒経過(N=5 @DivA, N=10 @DivB) - if ( - play_situation_msg.command == PlaySituation::THEIR_DIRECT_FREE or - play_situation_msg.command == PlaySituation::THEIR_INDIRECT_FREE) { + if (play_situation_msg.command == PlaySituation::THEIR_DIRECT_FREE) { if (30.0 <= (now() - last_command_changed_state.stamp).seconds()) { next_play_situation = PlaySituation::INPLAY; inplay_command_info.reason = diff --git a/crane_robot_skills/src/attacker.cpp b/crane_robot_skills/src/attacker.cpp index 74fc1cff..0d8e988e 100644 --- a/crane_robot_skills/src/attacker.cpp +++ b/crane_robot_skills/src/attacker.cpp @@ -31,7 +31,6 @@ Attacker::Attacker(RobotCommandWrapperBase::SharedPtr & base) auto game_command = world_model()->play_situation.getSituationCommandID(); if ( game_command == crane_msgs::msg::PlaySituation::OUR_DIRECT_FREE || - game_command == crane_msgs::msg::PlaySituation::OUR_INDIRECT_FREE || game_command == crane_msgs::msg::PlaySituation::OUR_KICKOFF_START) { auto best_receiver = selectPassReceiver(); forced_pass_receiver_id = best_receiver->id; diff --git a/crane_robot_skills/src/ball_nearby_positioner.cpp b/crane_robot_skills/src/ball_nearby_positioner.cpp index 71b712e2..e1bdf277 100644 --- a/crane_robot_skills/src/ball_nearby_positioner.cpp +++ b/crane_robot_skills/src/ball_nearby_positioner.cpp @@ -30,8 +30,6 @@ Status BallNearByPositioner::update() switch (situation) { case crane_msgs::msg::PlaySituation::THEIR_DIRECT_FREE: return 0.5; - case crane_msgs::msg::PlaySituation::THEIR_INDIRECT_FREE: - return 0.5; case crane_msgs::msg::PlaySituation::STOP: return 0.5; case crane_msgs::msg::PlaySituation::THEIR_BALL_PLACEMENT: diff --git a/crane_speaker/src/crane_speaker_node.cpp b/crane_speaker/src/crane_speaker_node.cpp index fee98c7b..80ef688a 100644 --- a/crane_speaker/src/crane_speaker_node.cpp +++ b/crane_speaker/src/crane_speaker_node.cpp @@ -20,14 +20,12 @@ map play_situation_map = { {crane_msgs::msg::PlaySituation::OUR_PENALTY_PREPARATION, "味方PK準備"}, {crane_msgs::msg::PlaySituation::OUR_PENALTY_START, "味方PK開始"}, {crane_msgs::msg::PlaySituation::OUR_DIRECT_FREE, "味方フリーキック"}, - {crane_msgs::msg::PlaySituation::OUR_INDIRECT_FREE, "味方インダイレクトフリーキック"}, {crane_msgs::msg::PlaySituation::OUR_BALL_PLACEMENT, "味方ボールプレイスメント"}, {crane_msgs::msg::PlaySituation::THEIR_KICKOFF_PREPARATION, "敵キックオフ準備"}, {crane_msgs::msg::PlaySituation::THEIR_KICKOFF_START, "敵キックオフ開始"}, {crane_msgs::msg::PlaySituation::THEIR_PENALTY_PREPARATION, "敵PK準備"}, {crane_msgs::msg::PlaySituation::THEIR_PENALTY_START, "敵PK開始"}, {crane_msgs::msg::PlaySituation::THEIR_DIRECT_FREE, "敵フリーキック"}, - {crane_msgs::msg::PlaySituation::THEIR_INDIRECT_FREE, "敵インダイレクトフリーキック"}, {crane_msgs::msg::PlaySituation::THEIR_BALL_PLACEMENT, "敵ボールプレイスメント"}, {crane_msgs::msg::PlaySituation::OUR_INPLAY, "味方ボール"}, {crane_msgs::msg::PlaySituation::THEIR_INPLAY, "敵ボール"}, diff --git a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp index 81fb5514..5b072e7f 100644 --- a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp +++ b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp @@ -52,8 +52,6 @@ static std::map situation_command_map = { CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, THEIR_PENALTY_START), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, OUR_DIRECT_FREE), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, THEIR_DIRECT_FREE), - CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, OUR_INDIRECT_FREE), - CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, THEIR_INDIRECT_FREE), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, OUR_BALL_PLACEMENT), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, THEIR_BALL_PLACEMENT), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, INJECTION), From b4baf24fc8d60f76f71ac8417d3a88e9825d6bde Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Sun, 5 Jan 2025 11:31:58 +0900 Subject: [PATCH 3/4] =?UTF-8?q?STOP=E3=81=AE=E5=A0=B4=E5=90=88=E5=88=86?= =?UTF-8?q?=E3=81=91=E3=82=92game=20controller=E3=81=AE=E5=AE=9F=E8=A3=85?= =?UTF-8?q?=E3=82=92=E8=A6=8B=E3=81=AA=E3=81=8C=E3=82=89=E8=AA=BF=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crane_msgs/msg/analysis/PlaySituation.msg | 22 ++++++++++++++++--- .../src/play_situation_wrapper.cpp | 5 +++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/crane_msgs/msg/analysis/PlaySituation.msg b/crane_msgs/msg/analysis/PlaySituation.msg index 0a6300a4..8e027314 100755 --- a/crane_msgs/msg/analysis/PlaySituation.msg +++ b/crane_msgs/msg/analysis/PlaySituation.msg @@ -54,13 +54,29 @@ uint8 OUR_INPLAY = 51 uint8 THEIR_INPLAY = 52 uint8 AMBIGUOUS_INPLAY = 53 + +# STOPの場合分け +# 参考:https://github.com/RoboCup-SSL/ssl-game-controller/blob/master/internal/app/statemachine/change_gameevent.go#L329 + +# DEFENDER_IN_DEFENSE_AREAの後のSTOP uint8 STOP_PRE_OUR_PENALTY_PREPARATION = 60 uint8 STOP_PRE_THEIR_PENALTY_PREPARATION = 61 + +# 得点後のSTOP uint8 STOP_PRE_OUR_KICKOFF_PREPARATION = 62 uint8 STOP_PRE_THEIR_KICKOFF_PREPARATION = 63 -# -uint8 STOP_PRE_OUR_BALL_PLACEMENT = 64 -uint8 STOP_PRE_THEIR_BALL_PLACEMENT = 65 + +# 以下のいずれかのイベント後のSTOP。ボールプレイスメントが挟まるかも +# BALL_LEFT_FIELD_GOAL_LINE / BALL_LEFT_FIELD_TOUCH_LINE / AIMLESS_KICK +# ATTACKER_TOO_CLOSE_TO_DEFENSE_AREA / BOT_PUSHED_BOT / BOT_HELD_BALL_DELIBERATELY +# BOT_TIPPED_OVER / BOT_DROPPED_PARTS / KEEPER_HELD_BALL / BOUNDARY_CROSSING +# BOT_DRIBBLED_BALL_TOO_FAR / ATTACKER_DOUBLE_TOUCHED_BALL / PENALTY_KICK_FAILED +# INVALID_GOAL +uint8 STOP_PRE_OUR_DIRECT_FREE = 64 +uint8 STOP_PRE_THEIR_DIRECT_FREE = 65 + +# NO_PROGRESS_IN_GAME / TOO_MANY_ROBOTS イベント後のSTOP +uint8 STOP_PRE_FORCE_START = 66 uint32 stage diff --git a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp index 5b072e7f..02a4dd3a 100644 --- a/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp +++ b/utility/crane_msg_wrappers/src/play_situation_wrapper.cpp @@ -63,8 +63,9 @@ static std::map situation_command_map = { CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_PENALTY_PREPARATION), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_KICKOFF_PREPARATION), CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_KICKOFF_PREPARATION), - CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_BALL_PLACEMENT), - CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_BALL_PLACEMENT)}; + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_OUR_DIRECT_FREE), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_THEIR_DIRECT_FREE), + CMD_STRING_MAPPING(crane_msgs::msg::PlaySituation, STOP_PRE_FORCE_START)}; auto PlaySituationWrapper::update(const crane_msgs::msg::PlaySituation & msg) -> void { From efec56c285298c3a3a049e51e3279e3a6d097828 Mon Sep 17 00:00:00 2001 From: Kotaro Yoshimoto Date: Sun, 5 Jan 2025 19:11:51 +0900 Subject: [PATCH 4/4] =?UTF-8?q?STOP=E3=81=AE=E5=A0=B4=E5=90=88=E5=88=86?= =?UTF-8?q?=E3=81=91=E3=82=92=E7=B5=84=E3=81=BF=E8=BE=BC=E3=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crane_play_switcher/src/play_switcher.cpp | 34 +++++++++++++++++++ .../config/normal.yaml | 14 ++++++++ .../config/play_situation/PRE_KICK_OFF.yaml | 7 ++++ 3 files changed, 55 insertions(+) create mode 100644 session/crane_session_controller/config/play_situation/PRE_KICK_OFF.yaml diff --git a/crane_play_switcher/src/play_switcher.cpp b/crane_play_switcher/src/play_switcher.cpp index 0100de70..2de2c18a 100644 --- a/crane_play_switcher/src/play_switcher.cpp +++ b/crane_play_switcher/src/play_switcher.cpp @@ -104,6 +104,40 @@ void PlaySwitcher::referee_callback(const robocup_ssl_msgs::msg::Referee & msg) // FORCE_STARTはインプレイをONにするだけ next_play_situation = PlaySituation::INPLAY; inplay_command_info.reason = "RAWコマンド変化&FORCE_START:強制的にINPLAYに突入"; + } else if (msg.command == Referee::COMMAND_STOP) { + //-----------------------------------// + // STOP + //-----------------------------------// + static std::map stop_command_map = [&]() { +#define NEXT_CMD_MAPPING(is_yellow, NEXT_RAW_CMD, CMD) \ + if (is_yellow) { \ + command_map[Referee::COMMAND_##NEXT_RAW_CMD##_YELLOW] = {PlaySituation::STOP_PRE_OUR_##CMD}; \ + command_map[Referee::COMMAND_##NEXT_RAW_CMD##_BLUE] = {PlaySituation::STOP_PRE_THEIR_##CMD}; \ + } else { \ + command_map[Referee::COMMAND_##NEXT_RAW_CMD##_YELLOW] = {PlaySituation::STOP_PRE_THEIR_##CMD}; \ + command_map[Referee::COMMAND_##NEXT_RAW_CMD##_BLUE] = {PlaySituation::STOP_PRE_OUR_##CMD}; \ + } + std::map command_map; + bool is_yellow = msg.yellow.name == team_name; + NEXT_CMD_MAPPING(is_yellow, PREPARE_PENALTY, PENALTY_PREPARATION); + NEXT_CMD_MAPPING(is_yellow, PREPARE_KICKOFF, KICKOFF_PREPARATION); + NEXT_CMD_MAPPING(is_yellow, DIRECT_FREE, DIRECT_FREE); + +#undef NEXT_CMD_MAPPING + + command_map[Referee::COMMAND_FORCE_START] = {PlaySituation::STOP_PRE_FORCE_START}; + + return command_map; + }(); + + if ( + not msg.next_command.empty() && + stop_command_map.find(msg.next_command.front()) != stop_command_map.end()) { + next_play_situation = stop_command_map.find(msg.next_command.front())->second; + inplay_command_info.reason = "RAWコマンド変化 & STOP:STOPの場合分け"; + } else { + next_play_situation = PlaySituation::STOP; + } } else { //-----------------------------------// // その他:HALT/STOP/KICKOFF/PENALTY/DIRECT/PLACEMENT diff --git a/session/crane_session_controller/config/normal.yaml b/session/crane_session_controller/config/normal.yaml index c21310bd..5bd8ed11 100644 --- a/session/crane_session_controller/config/normal.yaml +++ b/session/crane_session_controller/config/normal.yaml @@ -3,6 +3,20 @@ events: session: HALT - event: STOP session: STOP + - event: STOP_PRE_OUR_KICKOFF_PREPARATION + session: PRE_KICK_OFF + - event: STOP_PRE_THEIR_KICKOFF_PREPARATION + session: PRE_KICK_OFF + - event: STOP_PRE_OUR_PENALTY_PREPARATION + session: OUR_PENALTY_KICK + - event: STOP_PRE_THEIR_PENALTY_PREPARATION + session: THEIR_PENALTY_KICK + - event: STOP_PRE_OUR_DIRECT_FREE + session: STOP + - event: STOP_PRE_THEIR_DIRECT_FREE + session: STOP + - event: STOP_PRE_FORCE_START + session: STOP - event: THEIR_KICKOFF_PREPARATION session: formation - event: THEIR_KICKOFF_START diff --git a/session/crane_session_controller/config/play_situation/PRE_KICK_OFF.yaml b/session/crane_session_controller/config/play_situation/PRE_KICK_OFF.yaml new file mode 100644 index 00000000..9b3ff470 --- /dev/null +++ b/session/crane_session_controller/config/play_situation/PRE_KICK_OFF.yaml @@ -0,0 +1,7 @@ +name: PRE_KICK_OFF +description: PRE_KICK_OFF +sessions: + - name: goalie_skill + capacity: 1 + - name: formation + capacity: 20