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.

Match

A Match is one full period of gameplay.

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

Part Duration In MARLIN code
Autonomous Period 20 seconds autonomous(robot)
Driver Controlled Period 2 minutes 40 seconds driver(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.

Alliance

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 type Your Alliance Robots in the Pool
Qualification you and a partner Team 4
Elimination just your Team 2

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

You are not alone during your own Autonomous Period

In a Qualification Match, your partner's Robot is in the Pool running its own autonomous routine at the same time as yours. Neither program can see the other, and neither can coordinate with it.

A 20-second auton that assumes an empty Pool will eventually meet a partner doing the same thing. Driving a fixed path across the middle is the usual way to hit this. Keep autonomous routines to your own side of the Pool where you can, and expect to be bumped.

Qualification Match

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.

Elimination Match

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.

Autonomous Period

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:
        ...

Driver Controlled Period

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.

Controller

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

Robot brain

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.

Alliance Station

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. See Pool management for how stations are registered.

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.

Disablement and E-Stop

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, and you do. There is no per-team disable button, and nothing in your program can detect that you have been Disabled.

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.