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¶
- Get started builds a complete autonomous and driver program.
- Hardware configuration explains ports, sensor and effector declarations, and PID gains.
- Match lifecycle explains callbacks, phases, and
robot.running. - API reference lists every supported public class and enum.
- Troubleshooting covers common setup and runtime errors.
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.