Skip to content
Work in progress. This library and its docs are new and still changing, and some parts are not yet tested on a real robot. Something wrong or unclear?Tell us (a GitHub issue).

Starter kit: a whole robot program in 30 minutes

Six files that make a complete, competition-ready robot program: one TeleOp for both alliances, an autonomous with a menu, a hardware check, and one place for every setting. Copy them, change names and numbers, and you have a working robot.

Start with the robot in five files instead. Lesson 1 of the tutorials’ main track shows a shorter way: Robot.java, Tunables.java, Controls.java, Actions.java and autos, made from your robot configuration by ./gradlew :sim:newRobot, with ready-made modules (robot module). This starter kit still works and is kept for teams that use it.

Before this: Add it to a project.

Files: examples/.../starter/

# File What it is You change
1 RobotSettings.java drive type, motor names, IMU mounting, autonomous tuning (a RobotConfig, shared by TeleOp and every autonomous) names, numbers
2 Robot.java your mechanisms (lift, claw, intake…) add/remove mechanisms
3 MainTeleOp.java the TeleOp, built on EasyTeleOp: driving, timer cues and tuning menu come with it; the file adds the operator’s buttons button map
4 StarterAuto.java what every autonomous shares nothing
5 AutoScoreAndPark.java one autonomous (copy for more) the steps
6 HardwareCheck.java tests every device nothing
+ ServoFinder.java, MotorFinder.java, FlywheelFinder.java, DriveTuner.java, Characterizer.java finders: measure servo ends, lift limits, flywheel gains, wheel size, how the motors really move (feedforward, simulator), and show the code to copy Characterizer: your lift/arm limits and flywheel names
flowchart LR
    RS["1 RobotSettings"] --> T["3 MainTeleOp"]
    RS --> SA["4 StarterAuto"]
    R["2 Robot"] --> T
    R --> SA
    SA --> A1["5 AutoScoreAndPark"]
    SA --> A2["your next auto"]
    H["6 HardwareCheck"]
  1. Add the library to the robot project: Add it to a project.
  2. Copy the 6 files (and the 5 finder files) into TeamCode/src/main/java/org/firstinspires/ftc/teamcode/ and change the first line of each to package org.firstinspires.ftc.teamcode;. Delete each @Disabled line.
  3. Configure the robot on the Driver Station with the names in RobotSettings and Robot (or change the names in the code to match yours).
  4. Hardware Check (robot on a block): every device listed, every motor turns the right way. Fix directions in RobotSettings / Robot. Write down servo positions.
  5. Robot.java: delete mechanisms you do not have. Find each servo’s and lift’s limits and positions with the Servo Finder and Motor Finder (finders: small OpModes that measure a number and show the code line to copy) and copy the lines they show. Each mechanism type is explained in mechanism.md.
  6. Main TeleOp: drive at the PRACTICE profile’s gentle power (a profile is a set of limits: PRACTICE is gentle for the shop, COMPETITION is full power). It starts robot-centric; Y turns field-centric on. Check every button on the list at the top of the file. Print that list for the drive team.
  7. Tune the lift with the tuning menu (GUIDE button, PRACTICE profile), copy the numbers into Robot.java (tuning guide).
  8. Autonomous: tune the drivetrain with the Drive Tuner finder, set calibrationConfirmed = true, then change AutoScoreAndPark’s steps for your game (easy autos).
  9. Before the event: Profile COMPETITION, testing checklist.

In RobotSettings.drive() use DriveConfig.tank() (4 motors) or DriveConfig.tankTwoMotor(). That is all: MainTeleOp drives arcade style by itself (left stick forward/back, right stick turn; no field-centric). Autonomous: only forward/back moves and turns (move(d, 0 or 180, p), turn, turnTo).