17 class KickOffWallState;
18 class AlignPlacementState;
27 DEFINE_PLAY_UPDATE_STRUCT_WITH_CONTROL_AND_COMMON_PARAMS
73 void retreat(
const Update& event);
146 using namespace boost::sml;
148 DEFINE_SML_STATE(StartState)
149 DEFINE_SML_STATE(KickOffWallState)
150 DEFINE_SML_STATE(AlignPlacementState)
151 DEFINE_SML_STATE(PlaceBallState)
152 DEFINE_SML_STATE(WaitState)
153 DEFINE_SML_STATE(RetreatState)
154 DEFINE_SML_EVENT(Update)
169 return make_transition_table(
171 *StartState_S + Update_E[!shouldKickOffWall_G] / alignPlacement_A =
172 AlignPlacementState_S,
173 StartState_S + Update_E[shouldKickOffWall_G] = KickOffWallState_S,
174 KickOffWallState_S + Update_E[!kickDone_G && shouldKickOffWall_G] /
175 kickOffWall_A = KickOffWallState_S,
176 KickOffWallState_S + Update_E[kickDone_G] = KickOffWallState_S,
177 KickOffWallState_S + Update_E[!kickDone_G] = AlignPlacementState_S,
178 AlignPlacementState_S + Update_E[shouldKickOffWall_G] = KickOffWallState_S,
179 AlignPlacementState_S + Update_E[!alignDone_G] / alignPlacement_A =
180 AlignPlacementState_S,
181 AlignPlacementState_S + Update_E[alignDone_G] = PlaceBallState_S,
182 PlaceBallState_S + Update_E[!ballPlaced_G] / placeBall_A = PlaceBallState_S,
183 PlaceBallState_S + Update_E[ballPlaced_G] / startWait_A = WaitState_S,
184 WaitState_S + Update_E[!waitDone_G] = WaitState_S,
185 WaitState_S + Update_E[waitDone_G] = RetreatState_S,
186 RetreatState_S + Update_E[retreatDone_G && ballPlaced_G] = X,
187 RetreatState_S + Update_E[ballPlaced_G] / retreat_A = RetreatState_S);
191 TbotsProto::AiConfig ai_config;
192 std::shared_ptr<WallKickoffTactic> pivot_kick_tactic;
193 std::shared_ptr<PlaceBallTactic> place_ball_tactic;
194 std::shared_ptr<MoveTactic> align_placement_tactic;
195 std::shared_ptr<MoveTactic> retreat_tactic;
196 std::vector<std::shared_ptr<PlaceBallMoveTactic>> move_tactics;
199 constexpr static double const WALL_KICKOFF_VELOCITY_M_PER_S = 3.0;
200 constexpr static double const RETREAT_DISTANCE_METERS = 0.6;
201 constexpr static double const PLACEMENT_DIST_THRESHOLD_METERS = 0.15;
202 constexpr static double const BALL_IS_PLACED_WAIT_S = 3.0;