Skip to content

MARLIN documentation

MARLIN is a robotics platform for building, programming, and competing with robots. You write Python code, run it from VS Code, and drive a real robot through a Controller connected to your laptop.

Install MARLIN What is MARLIN? Write your first program Operate the extension

Start here

If this is your first time using MARLIN as a student, follow these in order:

  1. What is MARLIN?
  2. Install MARLIN
  3. Write your first program
  4. Run it with the extension. Do this early, so you can test everything that follows
  5. Learn Python basics (skip if you already know Python)
  6. Build a complete robot program
  7. Learn the MARLIN API
  8. Read the game manual

After that, use the guide pages, examples, and reference when you need them.

Choose your path

I am... Start with Then read
New to MARLIN What is MARLIN? Install MARLIN, Your first program
Writing robot code Complete robot program Examples, MARLIN API guide, API reference
Running code from VS Code Operate the extension Extension UI tour, Troubleshooting
Running the Pool Pool management Driver-station setup and match-flow sections

What a MARLIN program looks like

Most of the time, you only need to know how to write a MARLIN Python program: declare your hardware, read controller/sensor state, and command effectors.

from marlin import Robot, Thruster, IMU

THRUSTER = "M1"
IMU_PORT = "S1"

robot = Robot()
robot.configure(
    sensors={IMU_PORT: IMU},
    effectors={THRUSTER: Thruster},
)

def autonomous(robot):
    while robot.running:
        robot.thruster(THRUSTER).set_duty(30)

robot.run(autonomous=autonomous)

Main sections

Section Use it for
Getting started Understanding the system, installing MARLIN, and writing your first small program
Running your code Using the VS Code extension to run and stop programs; read this early
Python basics Learning the Python language features that MARLIN programs are built from
MARLIN API guide Understanding configuration, callbacks, sensors, controller input, and effectors
Examples A complete robot program built step by step, plus copyable patterns
API reference Exact classes, methods, and properties
Game manual The Link Lockdown game, and how a competition is run
Troubleshooting Fixing setup and runtime problems
Pool management Running MARLIN PMS: the pool dashboard and match controls

If you want the bigger picture

MARLIN keeps your laptop in the loop while the robot runs. The VS Code extension launches your program, owns the Controller USB connection, and passes state and commands between your code and the robot.

flowchart LR
    program["Your Python program"]
    api["marlin Python API"]
    extension["MARLIN VS Code extension"]
    controller["Controller\nUSB serial"]
    robot["Robot\nBluetooth (BLE) link"]

    program <--> api
    api <--> extension
    extension <--> controller
    controller <--> robot

You do not need this architecture view to write your first program, but it is useful when debugging or trying to understand why the extension has to stay open. See How MARLIN works for the detailed version.

Event staff

The pool-management documentation is separated because it is for game officials and event staff, not normal robot programming. See Pool management if you are running a pool server or operating matches.

Current status

MARLIN software and competition rules may be subject to future updates. The API and competition rules detailed only apply to the 2026 Link Lockdown MARLIN competition season.