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:
- What is MARLIN?
- Install MARLIN
- Write your first program
- Run it with the extension. Do this early, so you can test everything that follows
- Learn Python basics (skip if you already know Python)
- Build a complete robot program
- Learn the MARLIN API
- 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.