Skip to content

RoboCup 2021

Compare
Choose a tag to compare
@ahasselbring ahasselbring released this 10 Jun 21:37

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.