def __init__(self): self.ball = Ball() self.field = Field(self.ball) self.referee = None self.our_team_color = None self.enemy_team_color = None self.blue_team = None self.yellow_team = None self.friends = None self.enemies = None self.delta_t = None self.cmd = None self._create_teams() self.update = self._update if ConfigService().config_dict["IMAGE"]["kalman"] == "true": self.update = self._kalman_update
def setUp(self): config_service = ConfigService().load_file("config/sim_standard.cfg") self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW_TEAM)) self.game_state.set_reference(game_world) self.game_state.game.ball.set_position(Position(100, 0), 0)
def setUp(self): # ToDo : Use mock instead of actual objects self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW_TEAM)) self.game.set_our_team_color(TeamColor.YELLOW_TEAM) self.game_state.set_reference(game_world) self.player_id = 1 # random integer
def __init__(self, terrain_type="sim"): self.ball = Ball() self.field = Field(self.ball, terrain_type) self.referee = None self.our_team_color = None self.enemy_team_color = None self.blue_team = Team(TeamColor.BLUE_TEAM, type="friend") self.yellow_team = Team(TeamColor.YELLOW_TEAM, type="enemi") self.friends = None self.enemies = None self.delta_t = None self.cmd = None
def setUp(self): config_service = ConfigService().load_file("config/sim_standard.cfg") self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW_TEAM)) self.game_state.set_reference(game_world) self.game_state.game.friends.players[0].update( Pose(Position(-4450, 0), 0)) self.tactic1 = GoalKeeper(self.game_state, 0) self.tactic2 = Stop(self.game_state, 1) self.node1 = Node(self.tactic1) self.node2 = Node(self.tactic2) self.vertex1 = Vertex(0, foo) self.vertex2 = Vertex(1, foo2)
def setUp(self): self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW)) self.game_state.set_reference(game_world) self.game_state.game.friends.players[0].pose = Pose( Position(-4450, 0), 0) self.tactic1 = GoalKeeper( self.game_state, self.game_state.game.friends.players[A_GOAL_PLAYER_ID]) self.tactic2 = Stop(self.game_state, self.game_state.game.friends.players[A_PLAYER_ID]) self.node1 = Node(self.tactic1) self.node2 = Node(self.tactic2) self.vertex1 = Vertex(0, foo) self.vertex2 = Vertex(1, foo2) self.a_player = OurPlayer(TeamColor.BLUE, 0)
def setUp(self): self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW)) self.game_state.set_reference(game_world) self.game_state = GameState() self.empty_graph = Graph() self.graph1 = Graph() self.a_player = OurPlayer(TeamColor.YELLOW, A_PLAYER_ID) self.tactic1 = Stop(self.game_state, self.a_player) self.tactic2 = GoToPositionNoPathfinder(self.game_state, self.a_player, Pose(Position(500, 0), 0)) self.node1 = Node(self.tactic1) self.node2 = Node(self.tactic2) self.vertex1 = Vertex(1, foo) self.graph1.add_node(self.node1) self.graph1.add_node(self.node2) self.graph1.add_vertex(0, 1, foo)
def setUp(self): config_service = ConfigService().load_file("config/sim_standard.cfg") self.game_state = GameState() self.game = Game() self.game.set_referee(Referee()) self.game.ball = Ball() game_world = ReferenceTransferObject(self.game) game_world.set_team_color_svc(TeamColorService(TeamColor.YELLOW_TEAM)) self.game_state.set_reference(game_world) self.game_state = GameState() self.empty_graph = Graph() self.graph1 = Graph() self.tactic1 = Stop(self.game_state, 1) self.tactic2 = GoToPositionNoPathfinder(self.game_state, 0, Pose(Position(500, 0), 0)) self.node1 = Node(self.tactic1) self.node2 = Node(self.tactic2) self.vertex1 = Vertex(1, foo) self.graph1.add_node(self.node1) self.graph1.add_node(self.node2) self.graph1.add_vertex(0, 1, foo)
class Game: def __init__(self): self.ball = Ball() self.field = Field(self.ball) self.referee = None self.our_team_color = None self.enemy_team_color = None self.blue_team = None self.yellow_team = None self.friends = None self.enemies = None self.delta_t = None self.cmd = None self._create_teams() self.update = self._update if ConfigService().config_dict["IMAGE"]["kalman"] == "true": self.update = self._kalman_update def set_referee(self, p_referee): self.referee = p_referee def _create_teams(self): cfg = ConfigService() if cfg.config_dict["GAME"]["our_color"] == "blue": self.our_team_color == TeamColor.BLUE self.blue_team = OurTeam(TeamColor.BLUE) self.friends = self.blue_team self.yellow_team = Team(TeamColor.YELLOW) self.enemies = self.yellow_team elif cfg.config_dict["GAME"]["our_color"] == "yellow": self.our_team_color == TeamColor.YELLOW self.yellow_team = OurTeam(TeamColor.YELLOW) self.friends = self.yellow_team self.blue_team = Team(TeamColor.BLUE) self.enemies = self.blue_team else: raise ValueError("Config file contains wrong colors!") def update_game_state(self, referee_command): # TODO: Réviser code, ça semble louche # TODO: remove or change completly! WHAT IS THIS??? MGL 2017/05/14 blue_team = referee_command.teams[0] self.blue_team.score = blue_team.goalie_count yellow_team = referee_command.teams[0] self.yellow_team.score = yellow_team.goalie_count # Commented out since it is not used MGL 2017/01/07 # command = Referee.Command(referee_command.command.name) # self.referee.command = command def _update(self, vision_frame: messages_robocup_ssl_wrapper_pb2, delta: float) -> None: self.delta_t = delta # print(delta) self._update_ball(vision_frame, delta) self._update_players(vision_frame, delta) def _kalman_update(self, vision_frame: List, delta: float) -> None: self.delta_t = delta self.kalman_update_ball(vision_frame) self.kalman_update_players(vision_frame) def is_team_yellow(self): return self.our_team_color == TeamColor.YELLOW def _update_ball(self, vision_frame, delta): try: ball_position = Position(vision_frame.detection.balls[0].x, vision_frame.detection.balls[0].y, vision_frame.detection.balls[0].z) self.field.move_ball(ball_position, delta) except IndexError: pass # print("Ball not found") def _update_players(self, vision_frame, delta): blue_team = vision_frame.detection.robots_blue yellow_team = vision_frame.detection.robots_yellow self._update_players_of_team(blue_team, self.blue_team, delta) self._update_players_of_team(yellow_team, self.yellow_team, delta) def kalman_update_ball(self, vision_frame): self.ball.kalman_update(vision_frame["ball"], self.delta_t) def kalman_update_players(self, vision_frame): for i in range(PLAYER_PER_TEAM): self.blue_team.update_player(i, vision_frame["blues"][i], self.delta_t) self.yellow_team.update_player(i, vision_frame["yellows"][i], self.delta_t) @staticmethod def _update_players_of_team(players, team, delta): for player in players: player_position = Position(player.x, player.y, player.height) player_pose = Pose(player_position, player.orientation) team.update_player(player.robot_id, player_pose, delta)
class Game: def __init__(self, terrain_type="sim"): self.ball = Ball() self.field = Field(self.ball, terrain_type) self.referee = None self.our_team_color = None self.enemy_team_color = None self.blue_team = Team(TeamColor.BLUE_TEAM, type="friend") self.yellow_team = Team(TeamColor.YELLOW_TEAM, type="enemi") self.friends = None self.enemies = None self.delta_t = None self.cmd = None def set_command(self, cmd): for commands in cmd: self.friends.update_player_command(commands.player.id, commands) def set_referee(self, p_referee): self.referee = p_referee def set_our_team_color(self, p_our_team_color): assert isinstance(p_our_team_color, TeamColor), \ "The color of any team must be a TeamColor enum!" self.our_team_color = p_our_team_color self._adjust_teams_color() def set_enemy_team_color(self, p_enemy_team_color): assert isinstance(p_enemy_team_color, TeamColor), \ "The color of any team must be a TeamColor enum!" self.our_team_color = p_enemy_team_color def update_game_state(self, referee_command): # TODO: Réviser code, ça semble louche blue_team = referee_command.teams[0] self.blue_team.score = blue_team.goalie_count yellow_team = referee_command.teams[0] self.yellow_team.score = yellow_team.goalie_count # Commented out since it is not used MGL 2017/01/07 # command = Referee.Command(referee_command.command.name) # self.referee.command = command def update(self, vision_frame: messages_robocup_ssl_wrapper_pb2, delta: float): self.delta_t = delta # print(delta) self._update_ball(vision_frame, delta) self._update_players(vision_frame, delta) def update_kalman(self, vision_frame: List, delta: float): self.delta_t = delta self.kalman_update_ball(vision_frame, delta) self.kalman_update_players(vision_frame, delta) def is_team_yellow(self): return self.our_team_color == TeamColor.YELLOW_TEAM def _adjust_teams_color(self): if self.our_team_color == TeamColor.YELLOW_TEAM: self.friends = self.yellow_team self.enemies = self.blue_team elif self.our_team_color == TeamColor.BLUE_TEAM: self.friends = self.blue_team self.enemies = self.yellow_team else: raise ValueError("Can't adjust the teamscolor in Game object!") def _update_ball(self, vision_frame, delta): try: ball_position = Position(vision_frame.detection.balls[0].x, vision_frame.detection.balls[0].y, vision_frame.detection.balls[0].z) self.field.move_ball(ball_position, delta) except IndexError: pass # print("Ball not found") def _update_players(self, vision_frame, delta): blue_team = vision_frame.detection.robots_blue yellow_team = vision_frame.detection.robots_yellow self._update_players_of_team(blue_team, self.blue_team, delta) self._update_players_of_team(yellow_team, self.yellow_team, delta) def kalman_update_ball(self, vision_frame, delta): kalman_list = [] for c in vision_frame: kalman_list.append(c["ball"]) self.ball.kalman_update(kalman_list, delta) def kalman_update_players(self, vision_frame, delta): kalman_blue = [[] for i in range(0, 5)] kalman_yellow = [[] for i in range(0, 5)] for c in vision_frame: for i in range(0, 5): kalman_blue[i].append(c["blues"][i]) kalman_yellow[i].append(c["yellows"][i]) for i in range(0, 5): self.blue_team.kalman_update(i, kalman_blue[i], delta) self.yellow_team.kalman_update(i, kalman_yellow[i], delta) @staticmethod def _update_players_of_team(players, team, delta): for player in players: player_position = Position(player.x, player.y, player.height) player_pose = Pose(player_position, player.orientation) team.update_player(player.robot_id, player_pose, delta)