3#include "proto/tactic.pb.h"
4#include "shared/constants.h"
5#include "software/ai/hl/stp/tactic/defender/defender_fsm_base.h"
6#include "software/ai/hl/stp/tactic/dribble/dribble_fsm.h"
7#include "software/ai/hl/stp/tactic/tactic.h"
8#include "software/logger/logger.h"
13 class InterceptBallState;
20 Point position_to_block_from;
22 TbotsProto::BallStealMode ball_steal_mode;
31 : pass_defender_config(ai_config.pass_defender_config())
36 DEFINE_TACTIC_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
39 static constexpr double MIN_PASS_SPEED = 0.5;
102 boost::sml::back::process<DribbleFSM::Update> processEvent);
107 using namespace boost::sml;
109 DEFINE_SML_STATE(BlockPassState)
110 DEFINE_SML_STATE(InterceptBallState)
112 DEFINE_SML_EVENT(Update)
124 return make_transition_table(
126 *BlockPassState_S + Update_E[passStarted_G] / interceptBall_A =
127 InterceptBallState_S,
128 BlockPassState_S + Update_E / blockPass_A,
129 InterceptBallState_S + Update_E[ballDeflected_G] / blockPass_A =
131 InterceptBallState_S + Update_E[ballNearbyWithoutThreat_G] /
132 prepareGetPossession_A = DribbleFSM_S,
133 DribbleFSM_S + Update_E[!ballNearbyWithoutThreat_G] / blockPass_A =
135 DribbleFSM_S + Update_E / prepareGetPossession_A,
136 InterceptBallState_S + Update_E / interceptBall_A,
137 X + Update_E / SET_STOP_PRIMITIVE_ACTION = X);
141 Angle pass_orientation;
142 TbotsProto::PassDefenderConfig pass_defender_config;
static constexpr Angle fromDegrees(double deg)
Definition angle.h:408
Definition defender_fsm_base.h:10
Definition dribble_fsm.h:14
Definition pass_defender_fsm.h:18
Definition pass_defender_fsm.h:11
bool passStarted(const Update &event)
Definition pass_defender_fsm.cpp:7
void prepareGetPossession(const Update &event, boost::sml::back::process< DribbleFSM::Update > processEvent)
Definition pass_defender_fsm.cpp:117
void interceptBall(const Update &event)
Definition pass_defender_fsm.cpp:57
bool ballDeflected(const Update &event)
Definition pass_defender_fsm.cpp:29
bool ballNearbyWithoutThreat(const Update &event)
Definition pass_defender_fsm.cpp:110
PassDefenderFSM(const TbotsProto::AiConfig &ai_config)
Definition pass_defender_fsm.h:30
void blockPass(const Update &event)
Definition pass_defender_fsm.cpp:40