Skip to content

Releases: RoboCup-SPL/GameController

RoboCup 2024

15 Jul 10:21
Compare
Choose a tag to compare

TCM/GSV for German Open 2024

German Open 2024

17 Apr 11:21
Compare
Choose a tag to compare

TCM/GSV for German Open 2024

RoboCup 2022

24 May 07:20
Compare
Choose a tag to compare

This is the GameController that will be used at RoboCup 2022.

Network Interface

RoboCupGameControlData

Compared to 2020/2021,

  • GAMECONTROLLER_STRUCT_VERSION has been set to 14
  • MAX_NUM_PLAYERS has been set to 7
  • COMPETITION_TYPE_* macros have changed to this year's technical challenges
    • COMPETITION_TYPE_CHALLENGE_SHIELD will not be used
  • TeamInfo::messageBudget has been added

In addition, compared to 2019,

  • SET_PLAY_GOAL_FREE_KICK has been renamed to SET_PLAY_GOAL_KICK
  • SET_PLAY_PENALTY_KICK has been added
  • PENALTY_* macros have been adapted to rule changes

RoboCupGameControlReturnData

In order to keep a continuous model of robots in tools such as the TCM despite the new team communication rules, RoboCupGameControlReturnData has been changed to match most of the fields from the SPLStandardMessage. Robots must still unicast it to the GameController host, but the GameController forwards it to all hosts that requested the true game state (such as TCMs) on port 3940.

SPLStandardMessage

The SPLStandardMessage hasn't changed since 2018 except for the (invalid) default values of playerNum, teamNum and fallen, and 7 is a valid player number now.

Dynamic Ball Handling Challenge

The GameController does NOT assist with the scoring of the challenge. It only counts down the time and ejects players that are penalized. According to the rules, it also finishes the challenge when an attacker pushes. In all other cases, the referee must judge whether the challenge can still be completed.

7 vs. 7 Challenge

The hardware penalty limitation is implemented as 2 per half and 3 per game, i.e. a third hardware penalty in the second half is only legal if at least one of them was in the first half.

TCM

Since the TCM visualizes messages from two sources now (SPLStandardMessage and RoboCupGameControlReturnData), there are two numbers (separated by a slash) in the per-robot statistics for number of messages, messages per seconds, and illegal messages (first number is from team messages, second number is from GameController return packets).

GORE 2022

12 Apr 08:30
Compare
Choose a tag to compare

This is the GameController that will be used at GORE_3.

RoboCup 2021

10 Jun 21:37
Compare
Choose a tag to compare

This is the GameController that will be used for the Passing Challenge and 1vs1 Challenge at RoboCup 2021.

RoboCupGameControlData Format

The overall message format is still the same as 2019, however some macros have been added/removed/redefined.

The changes with respect to the 2019 release are:

  • GAMECONTROLLER_STRUCT_VERSION increased from 12 to 13
  • COMPETITION_TYPE_MIXEDTEAM removed
  • COMPETITION_TYPE_1VS1 added
  • COMPETITION_TYPE_PASSING_CHALLENGE added
  • SET_PLAY_GOAL_FREE_KICK renamed to SET_PLAY_GOAL_KICK
  • SET_PLAY_PENALTY_KICK added
  • PENALTY_SPL_KICK_OFF_GOAL removed
    • this changed some of the other penalty macro values
  • PENALTY_SPL_ILLEGAL_DEFENDER renamed to PENALTY_SPL_ILLEGAL_POSITION
  • PENALTY_SPL_ILLEGAL_POSITIONING renamed to PENALTY_SPL_ILLEGAL_POSITION_IN_SET
  • In 1vs1 games (RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1), TeamInfo::penaltyShot indicates whether the team used autonomous calibration (=1) and therefore gets the 1.5 score multiplier or not (=0). This was done in order to avoid making score a float because that would have broken the alignment and binary compatibility.

For those who already had adapted to the 2020 version (which was never officially released), the only changes are:

  • COMPETITION_TYPE_GENERAL_PENALTY_KICK removed
  • COMPETITION_TYPE_1VS1 added
  • COMPETITION_TYPE_PASSING_CHALLENGE added
  • In 1vs1 games (RoboCupGameControlData::competitionType == COMPETITION_TYPE_1VS1), TeamInfo::penaltyShot indicates whether the team used autonomous calibration (=1) and therefore gets the 1.5 score multiplier or not (=0). This was done in order to avoid making score a float because that would have broken the alignment and binary compatibility.

In particular, the version number has not been increased again!

Passing Challenge

The Passing Challenge mode allows to select one team, the other team is automatically set to "Invisibles" and the corresponding panel in the main screen is empty. Since the robots are already put on their starting positions, there is no ready phase, instead it is possible to switch to set immediately. From then on, the game is started as usual with the "Playing" button (the signal is still delayed by 15 seconds). The "+" button in the top left corner can be used to count passes; it does not switch the game state. The referee still needs to manually track the 30 second limit for leaving the red zone.

1vs1

In the start screen, besides selecting both teams, you have to select the checkbox "Uses Autonomous Calibration" below the respective team(s). This way, the GameController calculates and displays the adjusted score.

The main screen displays only the penalties that are possible in this competition. The "Global Game Stuck" button is centered because Global Game Stuck is not called on a specific team in this competition. The "+" button which normally awards a goal only increases the score; the game state is not changed.

The number in parentheses next to the robot name indicates the number of hardware penalties (fallen/inactive and request for pick-up) the robot has left. After more than 3 hardware-related penalties (e.g. on the fourth penalty), the robot is ejected, i.e. its penalty never ends.

Due to the rule that 1vs1 games must always have a winner, the "Finish" button is disabled during the last 10 seconds of the second half if the score is equal. Instead the "+" button next to the remaining time becomes available to extend the game by one minute. After five extensions, the "Finish" button stays available because the rules demand a coin toss then.

Because the team colors depend on the hosting arena and not on the teams playing, the configuration files in this release do not specify team colors. I would advise teams not to rely on TeamInfo::teamColour because every seen robot is an opponent. Still, in order to disambiguate communication between the GameController operator and head referee, it is advantageous for the hosting teams to set their jersey colors in their local copy of the GameController. The relevant file is config/spl_1vs1/teams.cfg in the binary release (in the source code it is located under resources). In each line, you should append ,<home color>,<away color>. Then the left team will always have your home jersey color preselected and the right team the away color.

German Open Replacement Event 2021

02 May 15:35
Compare
Choose a tag to compare

This is the version of the GameController that will be used at the German Open Replacement Event from May 6-9, 2021.