Skip to content

Competition vocabulary

At an event, officials use words that also appear in your code, such as Match, Alliance, and Driver Controlled Period. A few others look like your code but mean something else. This page connects each term to the part of MARLIN it maps onto, so you know what is being asked of your program.

It is not a replacement for the official game manual.

A Match is one full period of gameplay.

For Link Lockdown, a Match is three minutes of playtime:

PartDurationIn MARLIN code
Autonomous Period20 secondsautonomous(robot)
Driver Controlled Period2 minutes 40 secondsdriver(robot)

The two phases are separated by a pause of no fixed length, which does not count towards playtime. Your code does not run during it.

The exact game rules, scoring rules, and competition rules come from the game manual. MARLIN only provides the programming interface for responding to these phases.

An Alliance is the side you play on. Every Match has one red Alliance and one blue Alliance. The number of Teams on it depends on the kind of Match:

Match typeYour AllianceRobots in the Pool
Qualificationyou and a partner Team4
Eliminationjust your Team2

This matters for your code, and it is the part teams most often forget:

A Qualification Match is played 2-v-2, and every Team plays at least six of them. They decide your ranking, and your ranking decides your seed for the Elimination Bracket.

An Elimination Match is played 1-v-1 between the top 16 Teams, single elimination. Your program does not change between the two kinds of Match. The phases and callbacks are identical. The Pool is less crowded, and the Anchorage holds one Robot instead of three.

See Competition format for seeding, ranking, and replay rules.

The Autonomous Period is the first part of the Match. During this phase, the robot should act from software and sensors, not from driver joystick input.

In MARLIN, this corresponds to the autonomous callback:

def autonomous(robot):
while robot.running:
...

The Driver Controlled Period is the second part of the Match. During this phase, your program usually reads controller input and commands the robot in response.

In MARLIN, this corresponds to the driver callback:

def driver(robot):
while robot.running:
...

Some robotics systems call this “teleop.” MARLIN uses Driver Controlled Period or driver everywhere: in the docs, in the extension, and on the pool dashboard the officials run.

The Controller is the device connected to the laptop over USB. It reports button and joystick state and relays commands between the laptop and the Robot Brain.

In Python, controller input is available through:

robot.controller

The Robot Brain is the robot-side electronics and firmware that receives commands and reports robot status. Your Python program does not talk to the Robot Brain directly. The MARLIN extension and the Controller handle that path.

The Alliance Station is the poolside area where Drive Team Members operate during a Match. It is not the same thing as the driver station setting in the extension, which is the slot your laptop registers in (Red 1, Red 2, Blue 1, Blue 2).

There are two slots per colour because Qualification Matches are 2-v-2: one slot for you and one for your partner. In an Elimination Match only one slot per colour is used. Set the slot the officials give you; the pool server uses it to decide which laptop it is talking to.

This matters for programming because match operation is intentionally separated from robot code:

  • your code responds to the current match phase
  • the extension and the pool server decide which phase is running
  • E-Stop is not controlled by your Python program.

The game manual uses Disablement for a safety penalty where a team is not allowed to operate its robot for the remainder of a Match.

A Disablement is enforced verbally, not in software. The Head Referee tells you to put your controller down. Non-compliance with Referee instructions may result in disqualification at the Match or event.

MARLIN also exposes E-Stop state:

if robot.estopped:
...

Your program can read this state, but cannot trigger or clear E-Stop programmatically. Emergency and pool safety controls live outside your Python code.

For a primer on general game rules, refer to the Game Manual section.