Get desktop application:
View/edit binary Protocol Buffers messages
Division denotes the current division, which influences some rules
GameEvent contains exactly one game event Each game event has optional and required fields. The required fields are mandatory to process the event. Some optional fields are only used for visualization, others are required to determine the ball placement position. If fields are missing that are required for the ball placement position, no ball placement command will be issued. Fields are marked optional to make testing and extending of the protocol easier. An autoRef should ideally set all fields, except if there are good reasons to not do so.
Used in:
, ,A globally unique id of the game event.
The type of the game event.
The origins of this game event. Empty, if it originates from game controller. Contains autoRef name(s), if it originates from one or more autoRefs. Ignored if sent by autoRef to game controller.
Unix timestamp in microseconds when the event was created.
the event that occurred
Ball out of field events (stopping)
replaced by ready_to_continue flag
obsolete
replaced by the meta-information in the possible_goal event
obsolete
rule removed
obsolete
obsolete
can not be used as long as autoRefs do not judge pushing
rule removed
the referee msg already indicates this
the ball left the field via goal line and a team committed an aimless kick
Used in:
the team that last touched the ball
the bot that last touched the ball
the location where the ball left the field [m]
the location where the ball was last touched [m]
an attacker touched the ball multiple times when it was not allowed to
Used in:
the team that found guilty
the bot that touched the ball twice
the location of the ball when it was first touched [m]
an attacker was located too near to the opponent defense area during stop or free kick
Used in:
the team that found guilty
the bot that is too close to the defense area
the location of the bot [m]
the distance [m] of the bot to the penalty area
the location of the ball at the moment when this foul occurred [m]
an attacker touched the ball inside the opponent defense area
Used in:
the team that found guilty
the bot that is inside the penalty area
the location of the bot [m]
the distance [m] that the bot is inside the penalty area
an attacker touched the opponent robot inside defense area
Used in:
the team that found guilty
the bot that touched the opponent robot
the bot of the opposite team that was touched
the location of the contact point between both bots [m]
the ball left the field normally
Used in:
the team that last touched the ball
the bot that last touched the ball
the location where the ball left the field [m]
two robots crashed into each other with similar speeds
Used in:
the bot of the yellow team
the bot of the blue team
the location of the crash (center between both bots) [m]
the calculated crash speed [m/s] of the two bots
the difference [m/s] of the velocity of the two bots
the angle [rad] in the range [0, π] of the bot velocity vectors an angle of 0 rad ( 0°) means, the bots barely touched each other an angle of π rad (180°) means, the bots crashed frontal into each other
two robots crashed into each other and one team was found guilty to due significant speed difference
Used in:
the team that caused the crash
the bot that caused the crash
the bot of the opposite team that was involved in the crash
the location of the crash (center between both bots) [m]
the calculated crash speed vector [m/s] of the two bots
the difference [m/s] of the velocity of the two bots
the angle [rad] in the range [0, π] of the bot velocity vectors an angle of 0 rad ( 0°) means, the bots barely touched each other an angle of π rad (180°) means, the bots crashed frontal into each other
a bot dribbled to ball too far
Used in:
the team that found guilty
the bot that dribbled too far
the location where the dribbling started [m]
the location where the maximum dribbling distance was reached [m]
a bot dropped parts
Used in:
the team that found guilty
the bot that dropped the parts
the location where the parts were dropped [m]
the location of the ball at the moment when this foul occurred [m]
a bot held the ball for too long
Used in:
the team that found guilty
the bot that holds the ball
the location of the ball [m]
the duration [s] that the bot hold the ball
a bot interfered the ball placement of the other team
Used in:
the team that found guilty
the bot that interfered the placement
the location of the bot [m]
a bot kicked the ball too fast
Used in:
the team that found guilty
the bot that kicked too fast
the location of the ball at the time of the highest speed [m]
the absolute initial ball speed (kick speed) [m/s]
was the ball chipped?
a bot pushed another bot over a significant distance
Used in:
the team that pushed the other team
the bot that pushed the other bot
the bot of the opposite team that was pushed
the location of the push (center between both bots) [m]
the pushed distance [m]
bots are being substituted by a team
Used in:
the team that substitutes robots
a bot tipped over
Used in:
the team that found guilty
the bot that tipped over
the location of the bot [m]
the location of the ball at the moment when this foul occurred [m]
a bot moved too fast while the game was stopped
Used in:
the team that found guilty
the bot that was too fast
the location of the bot [m]
the bot speed [m/s]
a robot chipped the ball over the field boundary out of the playing surface
Used in:
the team that has too many robots
the location of the ball [m]
A challenge flag, requested by a team previously, is flagged
Used in:
the team that requested the challenge flag
A challenge, flagged recently, has been handled by the referee
Used in:
the team that requested the challenge flag
the challenge was accepted by the referee
the ball entered the goal, but was initially chipped
Used in:
the team that tried to shoot the goal
the bot that kicked the ball
the location where the ball entered the goal [m]
the location where the ball was kicked [m]
the maximum height [m] of the ball, before it entered the goal and since the last kick [m]
a defender other than the keeper was fully located inside its own defense and touched the ball
Used in:
the team that found guilty
the bot that is inside the penalty area
the location of the bot [m]
the distance [m] from bot case to the nearest point outside the defense area
a defender other than the keeper was partially located inside its own defense area and touched the ball
Used in:
the team that found guilty
the bot that is partially inside the penalty area
the location of the bot
the distance [m] that the bot is inside the penalty area
the location of the ball at the moment when this foul occurred [m]
a bot of the defending team got too close to the kick point during a free kick
Used in:
the team that was found guilty
the bot that violates the distance to the kick point
the location of the bot [m]
the distance [m] from bot to the kick point (including the minimum radius)
An emergency stop, requested by team previously, occurred
Used in:
the team that substitutes robots
A foul for excessive bot substitutions
Used in:
the team that substitutes robots
a team shot a goal
Used in:
the team that scored the goal
the team that shot the goal (different from by_team for own goals)
the bot that shot the goal
the location where the ball entered the goal [m]
the location where the ball was kicked (for deciding if this was a valid goal) [m]
the maximum height the ball reached during the goal kick (for deciding if this was a valid goal) [m]
number of robots of scoring team when the ball entered the goal (for deciding if this was a valid goal)
The UNIX timestamp [μs] when the scoring team last touched the ball
An additional message with e.g. a reason for invalid goals
the ball entered the goal directly during an indirect free kick
Used in:
the team that tried to shoot the goal
the bot that kicked the ball - at least the team must be set
the location where the ball entered the goal [m]
the location where the ball was kicked [m]
a keeper held the ball in its defense area for too long
Used in:
the team that found guilty
the location of the ball [m]
the duration [s] that the keeper hold the ball
timeout waiting for the attacking team to perform the free kick
Used in:
the team that that should have kicked
the location of the ball [m]
the time [s] that was waited
a team collected multiple yellow cards
Used in:
the team that received multiple yellow cards
a team collected multiple fouls, which results in a yellow card
Used in:
the team that collected multiple fouls
the list of game events that caused the multiple fouls
a team failed to place the ball multiple times in a row
Used in:
the team that failed multiple times
game was stuck
Used in:
the location of the ball
the time [s] that was waited
the penalty kick failed (by time or by keeper)
Used in:
the team that last touched the ball
the location of the ball at the moment of this event [m]
an explanation of the failure
ball placement failed
Used in:
the team that failed
the remaining distance [m] from ball to placement position
the distance [m] of the nearest own robot to the ball
a team successfully placed the ball
Used in:
the team that did the placement
the time [s] taken for placing the ball
the distance [m] between placement location and actual ball position
the distance [m] between the initial ball location and the placement position
both teams are prepared - all conditions are met to continue (with kickoff or penalty kick)
Used in:
the time [s] taken for preparing
a team has too many robots on the field
Used in:
the team that has too many robots
number of robots allowed at the moment
number of robots currently on the field
the location of the ball at the moment when this foul occurred [m]
Used in:
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by GC
triggered by autoRef
triggered by human ref
triggered by human ref
triggered by human ref
triggered by human ref
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by autoRef
triggered by GC
triggered by autoRef
triggered by GC
triggered by GC
triggered by autoRef
triggered by autoRef
triggered by GC and autoRef
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by GC
triggered by human ref
triggered by human ref
a team was found guilty for major unsporting behavior
Used in:
the team that found guilty
an explanation of the situation and decision
a team was found guilty for minor unsporting behavior
Used in:
the team that found guilty
an explanation of the situation and decision
List of matching proposals
Used in:
Unique ID of this group
The proposed game events
Whether the proposal group was accepted
MatchType is a meta information about the current match for easier log processing
Used in:
not set
match is part of the group phase
match is part of the elimination phase
a friendly match, not part of a tournament
Move robot with global velocity
Used in:
Velocity on x-axis of the field [m/s]
Velocity on y-axis of the field [m/s]
Angular velocity counter-clockwise [rad/s]
Move robot with local velocity
Used in:
Velocity forward [m/s] (towards the dribbler)
Velocity to the left [m/s]
Angular velocity counter-clockwise [rad/s]
Move robot with wheel velocities
Used in:
Velocity [m/s] of front right wheel
Velocity [m/s] of back right wheel
Velocity [m/s] of back left wheel
Velocity [m/s] of front left wheel
Used in:
Custom config for specific simulators (the protobuf files are managed by the simulators)
Each UDP packet contains one of these messages.
Used in:
A random UUID of the source that is kept constant at the source while running If multiple sources are broadcasting to the same network, this id can be used to identify individual sources
The match type is a meta information about the current match that helps to process the logs after a competition
The UNIX timestamp when the packet was sent, in microseconds. Divide by 1,000,000 to get a time_t.
The number of microseconds left in the stage. The following stages have this value; the rest do not: NORMAL_FIRST_HALF NORMAL_HALF_TIME NORMAL_SECOND_HALF EXTRA_TIME_BREAK EXTRA_FIRST_HALF EXTRA_HALF_TIME EXTRA_SECOND_HALF PENALTY_SHOOTOUT_BREAK If the stage runs over its specified time, this value becomes negative.
The number of commands issued since startup (mod 2^32).
The UNIX timestamp when the command was issued, in microseconds. This value changes only when a new command is issued, not on each packet.
Information about the two teams.
Information about the direction of play. True, if the blue team will have it's goal on the positive x-axis of the ssl-vision coordinate system. Obviously, the yellow team will play on the opposite half.
The command that will be issued after the current stoppage and ball placement to continue the game.
The time in microseconds that is remaining until the current action times out The time will not be reset. It can get negative. An autoRef would raise an appropriate event, if the time gets negative. Possible actions where this time is relevant: * free kicks * kickoff, penalty kick, force start * ball placement
A message that can be displayed to the spectators, like a reason for a stoppage.
These are the "fine" states of play on the field.
Used in:
All robots should completely stop moving.
Robots must keep 50 cm from the ball.
A prepared kickoff or penalty may now be taken.
The ball is dropped and free for either team.
The yellow team may move into kickoff position.
The blue team may move into kickoff position.
The yellow team may move into penalty position.
The blue team may move into penalty position.
The yellow team may take a direct free kick.
The blue team may take a direct free kick.
The yellow team may take an indirect free kick.
The blue team may take an indirect free kick.
The yellow team is currently in a timeout.
The blue team is currently in a timeout.
The yellow team just scored a goal. For information only. Deprecated: Use the score field from the team infos instead. That way, you can also detect revoked goals.
The blue team just scored a goal. See also GOAL_YELLOW.
Equivalent to STOP, but the yellow team must pick up the ball and drop it in the Designated Position.
Equivalent to STOP, but the blue team must pick up the ball and drop it in the Designated Position.
The coordinates of the Designated Position. These are measured in millimetres and correspond to SSL-Vision coordinates. These fields are always either both present (in the case of a ball placement command) or both absent (in the case of any other command).
Used in:
These are the "coarse" stages of the game.
Used in:
The first half is about to start. A kickoff is called within this stage. This stage ends with the NORMAL_START.
The first half of the normal game, before half time.
Half time between first and second halves.
The second half is about to start. A kickoff is called within this stage. This stage ends with the NORMAL_START.
The second half of the normal game, after half time.
The break before extra time.
The first half of extra time is about to start. A kickoff is called within this stage. This stage ends with the NORMAL_START.
The first half of extra time.
Half time between first and second extra halves.
The second half of extra time is about to start. A kickoff is called within this stage. This stage ends with the NORMAL_START.
The second half of extra time.
The break before penalty shootout.
The penalty shootout.
The game is over.
Information about a single team.
Used in:
The team's name (empty string if operator has not typed anything).
The number of goals scored by the team during normal play and overtime.
The number of red cards issued to the team since the beginning of the game.
The amount of time (in microseconds) left on each yellow card issued to the team. If no yellow cards are issued, this array has no elements. Otherwise, times are ordered from smallest to largest.
The total number of yellow cards ever issued to the team.
The number of timeouts this team can still call. If in a timeout right now, that timeout is excluded.
The number of microseconds of timeout this team can use.
The pattern number of this team's goalkeeper.
The total number of countable fouls that act towards yellow cards
The number of consecutive ball placement failures of this team
Indicate if the team is able and allowed to place the ball
The maximum number of bots allowed on the field based on division and cards
The team has submitted an intent to substitute one or more robots at the next chance
Indicate if the team reached the maximum allowed ball placement failures and is thus not allowed to place the ball anymore
The team is allowed to substitute one or more robots currently
The number of bot substitutions left by the team in this halftime
The number of microseconds left for current bot substitution
Full command for a single robot
Used in:
Id of the robot
Movement command
Absolute (3 dimensional) kick speed [m/s]
Kick angle [degree] (defaults to 0 degrees for a straight kick)
Dribbler speed in rounds per minute [rpm]
Command from the connected client to the simulator
Used in:
Control the robots
Response to RobotControl from the simulator to the connected client
Used in:
List of errors, like using unsupported features
Feedback of the robots
Feedback from a robot
Used in:
Id of the robot
Has the dribbler contact to the ball right now
Custom robot feedback for specific simulators (the protobuf files are managed by the simulators)
RobotId is the combination of a team and a robot id
Used in:
,the robot number
the team that the robot belongs to
Movement limits for a robot
Used in:
Max absolute speed-up acceleration [m/s^2]
Max angular speed-up acceleration [rad/s^2]
Max absolute brake acceleration [m/s^2]
Max angular brake acceleration [rad/s^2]
Max absolute velocity [m/s]
Max angular velocity [rad/s]
Wrapper for different kinds of movement commands
Used in:
Move with wheel velocities
Move with local velocity
Move with global velocity
Specs of a robot
Used in:
Id of the robot
Robot radius [m]
Robot height [m]
Robot mass [kg]
Max linear kick speed [m/s] (unset = unlimited)
Max chip kick speed [m/s] (unset = unlimited)
Distance from robot center to dribbler [m] (implicitly defines the opening angle and dribbler width)
Movement limits
Wheel angle configuration
Custom robot spec for specific simulators (the protobuf files are managed by the simulators)
Robot wheel angle configuration all angles are relative to looking forward, all wheels / angles are clockwise
Used in:
Angle front right [rad]
Angle back right [rad]
Angle back left [rad]
Angle front left [rad]
Fixed-Loss model for chipped balls. Uses fixed damping factors for xy and z direction per hop.
Used in:
Chip kick velocity damping factor in XY direction for the first hop
Chip kick velocity damping factor in XY direction for all following hops
Chip kick velocity damping factor in Z direction for all hops
Two-Phase model for straight-kicked balls. There are two phases with different accelerations during the ball kicks: 1. Sliding 2. Rolling The full model is described in the TDP of ER-Force from 2016, which can be found here: https://ssl.robocup.org/wp-content/uploads/2019/01/2016_ETDP_ER-Force.pdf
Used in:
Ball sliding acceleration [m/s^2] (should be negative)
Ball rolling acceleration [m/s^2] (should be negative)
Fraction of the initial velocity where the ball starts to roll
Used in:
Used in:
,Used in:
Represents a field marking as a circular arc segment represented by center point, a start angle, an end angle, and an arc thickness.
Used in:
Name of this field marking.
Center point of the circular arc.
Radius of the arc.
Start angle in counter-clockwise order.
End angle in counter-clockwise order.
Thickness of the arc.
The type of this shape
Represents a field marking as a line segment represented by a start point p1, and end point p2, and a line thickness. The start and end points are along the center of the line, so the thickness of the line extends by thickness / 2 on either side of the line.
Used in:
Name of this field marking.
Start point of the line segment.
End point of the line segment.
Thickness of the line segment.
The type of this shape
Used in:
,Used in:
Used in:
,Used in:
Used in:
Used in:
Request from the team to the simulator
The simulation step [s] to perform
An optional simulator command
An optional robot control command
Response to last SimulationSyncRequest
List of detection frames for all cameras with the state after the simulation step in the request was performed
An optional robot control response
Command from the connected client to the simulator
Used in:
Control the simulation
Configure the simulation
Change the simulator configuration
Used in:
Update the geometry
Update the robot specs
Update realism configuration
Change the vision publish port
Control the simulation
Used in:
Teleport the ball
Teleport robots
Change the simulation speed
Errors in the simulator
Used in:
,Unique code of the error for automatic handling on client side
Human readable description of the error
Response of the simulator to the connected client
List of errors, like using unsupported features
Team is either blue or yellow
Used in:
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,team not set
yellow team
blue team
Teleport the ball to a new location and optionally set it to some velocity
Used in:
x-coordinate [m]
y-coordinate [m]
z-coordinate (height) [m]
Velocity in x-direction [m/s]
Velocity in y-direction [m/s]
Velocity in z-direction [m/s]
Teleport the ball safely to the target, for example by moving robots out of the way in case of collision and set speed of robots close-by to zero
Adapt the angular ball velocity such that the ball is rolling
Teleport a robot to some location and give it a velocity
Used in:
Robot id to teleport
x-coordinate [m]
y-coordinate [m]
Orientation [rad], measured from the x-axis counter-clockwise
Global velocity [m/s] towards x-axis
Global velocity [m/s] towards y-axis
Angular velocity [rad/s]
Robot should be present on the field? true -> robot will be added, if it does not exist yet false -> robot will be removed, if it is present
A vector with two dimensions
Used in:
, , , , , , , , , , , , , , , , , , , , , , , , , , ,A 2D float vector.
Used in:
,A vector with three dimensions
Used in:
Used in:
Used in:
Used in:
Used in: