Skip to main content

Environment Messages

State

this message contains 3 property:

PropertyDescriptionValues
agent_typeIndicates the type of the connected agent whether it is player, coach, or trainer.PlayerT, CoachT, TrainerT
world_modelContains the information of the field environment that the agent received from the RCSSServer and parsed by the helios-base. More information is provided in the WorldModel section.-
full_world_modelContains the information of the field environment that the agent received from the RCSSServer and parsed by the helios-base. More information is provided in the WorldModel section.-

the difference between world_model and the full_world_model is that the full_world_model contains the information of all the objects in the field, while the world_model contains the information of the objects that are in the agent's view. Note that the world_model information is noisy and may not be accurate while the full_world_model is accurate.

In the defualt config of the RCSSServer, the agent only recieves the world_model information; however, by changing the config file, the agent can recieve the full_world_model information too. Although the agent revieves the full_world_model information, the full state data will be stored in the world_model property. To recieve both world_model and full_world_model information, the agent should change the player.conf file in the proxy base.

TODO the property of the player.conf for recieving the full_world_model

WorldModel

The WorldModel type contains the following information:

PropertyDescription
intercept_tableContains the data of the important players that can intercept the ball. In here we explain more about this data.
our_team_nameThe name of the team that the agent is playing for.
their_team_nameThe name of the opponent team.
our_sideThe side of the field that the agent is playing for. The value can be LEFT, RIGHT, or UNKNOWN.
last_set_play_start_timeThe time that the last set play (Game Type) started.
selfThe information of the agent itself, such as the uniform number, the position, the velocity, etc. In the Self section, we explain more about this data.
ballThe information of the ball, such as the position, the velocity, etc. In the Ball section, we explain more about this data.
teammates*This property is a list of the Players that contains the information of the teammates. In the Player section, we explain more about this data.
opponents*This property is a list of the Players that contains the information of the opponents. In the Player section, we explain more about this data.
unknownsThis property is a list of the Players that contains the information of the unknown players. Unknown players are the ones that the agent did not receive any information about the uniform number and the side of them. In the Player section, we explain more about this data.
our_players_dict*This property is a dictionary that contains the information of the teammates. The key of the dictionary is the uniform number of the player. Note that if the agent does not have any data about a player, the player will not be in the dictionary (check for the null). In the Player section, we explain more about this data.
their_players_dict*This property is a dictionary that contains the information of the opponents. The key of the dictionary is the uniform number of the player. Note that if the agent does not have any data about a player, the player will not be in the dictionary (check for the null). In the Player section, we explain more about this data.
our_goalie_uniform_numberThe uniform number of the goalie of the agent's team.
their_goalie_uniform_numberThe uniform number of the goalie of the opponent's team.
offside_line_xThe x position of the offside line.
ofside_line_x_countThe number of cycles that passed of the offside line calculation.
kickable_teammate_idThe uniform number of the teammate that the agent can kick the ball to.
kickable_opponent_idThe uniform number of the opponent that the agent can kick the ball to.
last_kick_sideThe side that the last kick was done. The value can be LEFT, RIGHT, or UNKNOWN.
last_kicker_uniform_numberThe uniform number of the player that kicked the ball last time.
cycleThe current cycle of the game.
stoped_cycleThe cycle that the game stopped. The stopped cycle increase when the game cycle is not updated. This happens when the games stops for some game modes.
game_mode_typeThe current mode of the game. This value can be PlayOn, BeforeKickOff, etc. We will explain more about this in the GameModeType section.
left_team_scoreThe score of the left team.
right_team_scoreThe score of the right team.
is_our_set_playIndicates whether the agent's team is in the set play mode. It means if the agent's team should kick the ball for the current game mode.
is_their_set_playIndicates whether the opponent's team is in the set play mode. It means if the opponent's team should kick the ball for the current game mode.
our_team_scoreThe score of the agent's team.
their_team_scoreThe score of the opponent's team.
is_penalty_kick_modeIndicates whether the game is in the penalty kick mode.
helios_home_positionsThe position of the players based on the defined formations in the src/formtaions-dt directory. The position of the players is calculated based on the position of the ball and the formation of the team. This position is calculated by the base and is stored in this dictionary. The key of the dictionary is the uniform number of the player and the value is the position of the player.

*: TODO

InterceptTable

The InterceptTable type contains the following information:

PropertyDescription
self_reach_stepsThe number of cycles that the agent can reach the ball.
first_teammate_reach_stepsThe number of cycles that the first teammate can reach the ball. Note that the agent is not considered as a teammate.
second_teammate_reach_stepsThe number of cycles that the second teammate can reach the ball. Note that the agent is not considered as a teammate.
first_opponent_reach_stepsThe number of cycles that the first opponent can reach the ball.
second_opponent_reach_stepsThe number of cycles that the second opponent can reach the ball.
first_teammate_idThe uniform number of the first teammate that can intercept the ball.
second_teammate_idThe uniform number of the second teammate that can intercept the ball.
first_opponent_idThe uniform number of the first opponent that can intercept the ball.
second_opponent_idThe uniform number of the second opponent that can intercept the ball.
self_intercept_infoTODO?!

Self

The Self type contains the following information:

PropertyDescription
positionThe position of the agent.
seen_positionThe position of the agent that the agent saw.
heard_positionThe position of the agent that the agent heard.
velocityThe velocity of the agent.
seen_velocityThe velocity of the agent that the agent saw.
pos_countThe number of cycles that passed since the agent's position was updated.
seen_pos_countThe number of cycles that passed since the agent's seen position was updated. TODO ?!(Correct?)
heard_pos_countThe number of cycles that passed since the agent's heard position was updated. TODO ?!(Correct?)
vel_countThe number of cycles that passed since the agent's velocity was updated.
seen_vel_countThe number of cycles that passed since the agent's seen velocity was updated. TODO ?!(Correct?)
ghost_countTODO ?!
idTODO?!
sideThe side of the agent. The value can be LEFT, RIGHT, or UNKNOWN.
uniform_numberThe uniform number of the agent.
uniform_number_countThe number of cycles that passed since the agent's uniform number was updated.
is_goalieIndicates whether the agent is the goalie of the team.
body_directionThe direction of the agent's body.
body_direction_countThe number of cycles that passed since the agent's body direction was updated.
face_directionThe direction of the agent's face. This value is the direction that the agent is looking at and it is global, not relative to the player's body.
face_direction_countThe number of cycles that passed since the agent's face direction was updated.
point_to_directionThe direction that the agent is pointing to. Check the PointToDirection section for more information.
point_to_direction_countThe number of cycles that passed since the agent's point to direction was updated.
is_kickingIndicates whether the agent is kicking the ball.
dist_from_ballThe distance of the agent from the ball.
angle_from_ballThe angle of the agent from the ball. This value is relative to the agent's body. (TODO CHECK)
ball_reach_stepsThe number of cycles that the agent can reach the ball.
is_tacklingIndicates whether the agent is tackling.
relative_neck_directionThe direction of the agent's neck relative to the agent's body. It's the value of the face direction relative to the body direction.
staminaThe stamina of the agent.
is_kickableIndicates whether the agent can kick the ball.
catch_probabilityThe probability of the agent to catch the ball. Catching the ball is for the goalie.
tackle_probabilityThe probability of the agent to tackle the opponent. (TODO CHECK)
foul_probabilityThe probability of the agent to foul the opponent while tackling. (TODO CHECK)
view_widthThe width of the agent's view. This value can be NARROW, NORMAL, or WIDE.
type_idThe player type id of the agent. This value is explained in the PlayerType section.
kick_rateThe rate of the agent to kick the ball. This value is calculated based on the player type and the position of the ball relative to the agent's position and body.

Player

The Player type contains the following information:

PropertyDescription
positionThe position of the player.
seen_positionThe position of the player that the agent saw.
heard_positionThe position of the player that the agent heard.
velocityThe velocity of the player.
seen_velocityThe velocity of the player that the agent saw.
pos_countThe number of cycles that passed since the player's position was updated.
seen_pos_countThe number of cycles that passed since the player's seen position was updated. TODO ?!(Correct?)
heard_pos_countThe number of cycles that passed since the player's heard position was updated. TODO ?!(Correct?)
vel_countThe number of cycles that passed since the player's velocity was updated.
seen_vel_countThe number of cycles that passed since the player's seen velocity was updated. TODO ?!(Correct?)
ghost_countTODO ?!
dist_from_selfThe distance of the player from the agent.
angle_from_selfThe angle of the player from the agent. This value is relative to the agent's body. (TODO CHECK)
idTODO?!
sideThe side of the player. The value can be LEFT, RIGHT, or UNKNOWN.
uniform_numberThe uniform number of the player.
uniform_number_countThe number of cycles that passed since the player's uniform number was updated.
is_goalieIndicates whether the player is the goalie of the team.
body_directionThe direction of the player's body.
body_direction_countThe number of cycles that passed since the player's body direction was updated.
face_directionThe direction of the player's face. This value is the direction that the player is looking at and it is global, not relative to the player's body.
face_direction_countThe number of cycles that passed since the player's face direction was updated.
point_to_directionThe direction that the player is pointing to. Check the PointToDirection section for more information.
point_to_direction_countThe number of cycles that passed since the player's point to direction was updated.
is_kickingIndicates whether the player is kicking the ball.
dist_from_ballThe distance of the player from the ball.
angle_from_ballThe angle of the player from the ball. This value is relative to the player's body. (TODO CHECK)
ball_reach_stepsThe number of cycles that the player can reach the ball.
is_tacklingIndicates whether the player is tackling.
type_idThe player type id of the player. This value is explained in the PlayerType section.

GameModeType

The GameModeType is an enum that contains the following values:

PropertyDescription
BeforeKickOffThe game mode that the game is before the kick-off.
TimeOverThe game mode that the time is over. (TODO CHECK)
PlayOnThe game mode that the game is playing.
KickOff_The game mode that the game is in the kick-off mode.
KickIn_The game mode that the game is in the kick-in mode.
FreeKick_The game mode that the game is in the free-kick mode.
CornerKick_The game mode that the game is in the corner-kick mode.
GoalKick_The game mode that the game is in the goal-kick mode. (TODO CHECK?)
AfterGoal_The game mode that the game is after the goal.
OffSide_The game mode that the game is in the offside mode.
PenaltyKick_The game mode that the game is in the penalty-kick mode.
FirstHalfOverThe game mode that the first half is over.
PauseThe game mode that the game is paused. (TODO CHECK)
HumanThe game mode that the game is in the human mode. (TODO CHECK)
FoulCharge_The game mode that the game is in the foul-charge mode.
FoulPush_TODO
FoulMultipleAttacker_-
FoulBallOut_-
BackPass_-
FreeKickFault_-
CatchFault_-
IndFreeKick_-
PenaltySetup_-
PenaltyReady_-
PenaltyTaken_-
PenaltyMiss_-
PenaltyScore_-
IllegalDefense_-
PenaltyOnfield_-
PenaltyFoul_-
GoalieCatch_-
ExtendHalf-
MODE_MAX-

Agent Actions

After receiving the State message, the agent should send a list of actions to the base so the base can execute them and send them to the RCSSServer. The PlayerActions message contains a list of Action.

This list should only contains one Body Action and several other actions. By Body Action, we mean the actions that are related to the agent's body, such as Dash, Turn, Kick, Tackle, Catch, and Move. The agent can only do these actions once in a cycle. The other actions, such as TurnNeck, ChangeView, Say, PointTo, and AttentionTo can be done multiple times in a cycle. The agent can only do each type of action once in a cycle. For example, the agent can only do one Dash action in a cycle, while it can ChangeView, Say, and TurnNeck in that cycle. Note that the agent cannot do the second type actions more than once in a cycle.

In addition to that, the agent can send the some debug actions to the base. These actions are Log and DebugClient. These actions are useful when you are using the soccerwindow2 as the monitor. These actions are for the debug tools of this application.

Low-Level Actions

High-Level Actions

Action

The action contains only one action; however, this action can be one of the following actions:

  • Dash
  • Turn
  • Kick
  • Tackle
  • Catch
  • Move
  • TurnNeck
  • ChangeView
  • Say
  • PointTo
  • PointToOf
  • AttentionTo
  • AttentionToOf
  • Log
  • DebugClient
  • Body_GoToPoint
  • Body_SmartKick
  • Bhv_BeforeKickOff
  • Bhv_BodyNeckToBall
  • Bhv_BodyNeckToPoint
  • Bhv_Emergency
  • Bhv_GoToPointLookBall
  • Bhv_NeckBodyToBall
  • Bhv_NeckBodyToPoint
  • Bhv_ScanField
  • Body_AdvanceBall
  • Body_ClearBall
  • Body_Dribble
  • Body_GoToPointDodge
  • Body_HoldBall
  • Body_Intercept
  • Body_KickOneStep
  • Body_StopBall
  • Body_StopDash
  • Body_TackleToPoint
  • Body_TurnToAngle
  • Body_TurnToBall
  • Body_TurnToPoint
  • Focus_MoveToPoint
  • Focus_Reset
  • Neck_ScanField
  • Neck_ScanPlayers
  • Neck_TurnToBallAndPlayer
  • Neck_TurnToBallOrScan
  • Neck_TurnToBall
  • Neck_TurnToGoalieOrScan
  • Neck_TurnToLowConfTeammate
  • Neck_TurnToPlayerOrScan
  • Neck_TurnToPoint
  • Neck_TurnToRelative
  • View_ChangeWidth
  • View_Normal
  • View_Synch
  • View_Wide
  • HeliosGoalie
  • HeliosGoalieMove
  • HeliosGoalieKick
  • HeliosShoot
  • HeliosChainAction
  • HeliosBasicOffensive
  • HeliosBasicMove
  • HeliosSetPlay
  • HeliosPenalty
  • HeliosCommunicaion