44#include " software/ai/evaluation/keep_away.h"
55#include " software/ai/evaluation/shot.h"
66#include " software/ai/hl/stp/tactic/chip/chip_fsm.h"
7+ #include " software/ai/hl/stp/tactic/keep_away/keep_away_fsm.h"
78#include " software/ai/hl/stp/tactic/pivot_kick/pivot_kick_fsm.h"
89#include " software/ai/hl/stp/tactic/tactic.h"
910#include " software/ai/passing/pass.h"
@@ -42,13 +43,13 @@ struct AttackerFSM
4243 boost::sml::back::process<PivotKickFSM::Update> processEvent);
4344
4445 /* *
45- * Action that updates the DribbleFSM to keep the ball away
46+ * Action that updates the KeepAwayFSM to keep the ball away
4647 *
4748 * @param event AttackerFSM::Update event
48- * @param processEvent processes the DribbleFSM ::Update
49+ * @param processEvent processes the KeepAwayFSM ::Update
4950 */
5051 void keepAway (const Update& event,
51- boost::sml::back::process<DribbleFSM ::Update> processEvent);
52+ boost::sml::back::process<KeepAwayFSM ::Update> processEvent);
5253
5354 /* *
5455 * Guard that checks if the ball should be kicked, which is when there's a nearby
@@ -60,28 +61,29 @@ struct AttackerFSM
6061 */
6162 bool shouldKick (const Update& event);
6263
63-
6464 auto operator ()()
6565 {
6666 using namespace boost ::sml;
6767
6868 DEFINE_SML_STATE (PivotKickFSM)
69+ DEFINE_SML_STATE (KeepAwayFSM)
6970 DEFINE_SML_STATE (DribbleFSM)
71+
7072 DEFINE_SML_EVENT (Update)
7173
7274 DEFINE_SML_GUARD (shouldKick)
7375 DEFINE_SML_SUB_FSM_UPDATE_ACTION (pivotKick, PivotKickFSM)
74- DEFINE_SML_SUB_FSM_UPDATE_ACTION (keepAway, DribbleFSM )
76+ DEFINE_SML_SUB_FSM_UPDATE_ACTION (keepAway, KeepAwayFSM )
7577
7678 return make_transition_table (
77- // src_state + event [guard] / action = dest_state
7879 *DribbleFSM_S + Update_E[shouldKick_G] / pivotKick_A = PivotKickFSM_S,
79- DribbleFSM_S + Update_E[!shouldKick_G] / keepAway_A,
80+ DribbleFSM_S + Update_E[!shouldKick_G] / keepAway_A = KeepAwayFSM_S,
81+ KeepAwayFSM_S + Update_E[shouldKick_G] / pivotKick_A = PivotKickFSM_S,
82+ KeepAwayFSM_S + Update_E / keepAway_A, KeepAwayFSM_S = DribbleFSM_S,
8083 PivotKickFSM_S + Update_E / pivotKick_A, PivotKickFSM_S = X,
8184 X + Update_E / SET_STOP_PRIMITIVE_ACTION = X);
8285 }
8386
8487 private:
85- // the attacker tactic config
8688 TbotsProto::AiConfig ai_config;
8789};
0 commit comments