Skip to content

MARLIN documentation

MARLIN is a robotics platform for building, programming, and competing with student-designed robots. This documentation begins with the HELM Python API: the library student programs use to configure hardware, read controls and sensors, and command robot outputs.

Get started with HELM Browse the API reference

The programming model

A HELM program declares its hardware once, then supplies callbacks for the autonomous and driver-controlled phases of a match:

from helm import IMU, Robot, Thruster

robot = Robot()
robot.configure(
    sensors={"S2": IMU},
    effectors={"A1": Thruster},
)

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

robot.run(autonomous=autonomous)

The HELM extension owns the Controller's USB connection and launches the student script. The Python library communicates with that extension over a local connection:

HELM extension UI
    └─ student Python script
         └─ helm Python API
              └─ local extension connection
                   └─ Controller USB → robot

Student code does not open USB or BLE connections directly.

Start here

Current documentation scope

This site currently documents the student-facing HELM Python API. Detailed extension operation, firmware protocol, and field-management documentation will be added separately.