Complete Rookie Guide

What a new team needs to know: the competition, the hardware, the first programs, and competition day.

This page is for a team that just formed. It covers the competition format, the hardware, the first TeleOp and autonomous programs, and what happens at a tournament. Read it in order or jump to the section you need.

1. The competition

FIRST Tech Challenge is for students in grades 7 through 12. A new game is released each September at kickoff.

This season: BIOBUZZ

The 2026-2027 game is BIOBUZZ presented by RTX, part of the FIRST CANOPY season. It was revealed at kickoff on September 12, 2026.

Two alliances of two teams each play on a field about 144 by 144 inches, made of 36 foam tiles. Robots collect POLLEN and NECTAR, launch them into their alliance’s HIVE, and place them into FLOWERS.

  • Launching enough scoring elements into a CELL tips the HIVE. Each tip scores points and unlocks more NECTAR.
  • Alliances score by placing their NECTAR in each FLOWER before the other alliance.
  • An alliance owns a FLOWER when its NECTAR is the top piece, which also scores.

POLLEN are 3 inch plastic balls.

Match format

A match is:

  • Autonomous, 30 seconds. The robot runs on its own with no driver input.
  • Transition, 8 seconds, between autonomous and TeleOp.
  • Driver-controlled (TeleOp), 2 minutes. Drivers control the robot with gamepads.

The Competition Manual has the full scoring and every rule. Read it before designing anything, the summary above leaves most of it out.

Season timeline

  1. Kickoff, September. The game is revealed and the Competition Manual is published.
  2. Build season. Build, program, and practice. Many regions hold scrimmages.
  3. Qualifiers. Teams play qualification matches, then the top ranked teams pick alliance partners for playoff matches. Winning alliances and award winners advance. Dates vary by region.
  4. Regional or state championships.
  5. FIRST Championship.

2. Roles

  • Drive coach: stands with the drivers and calls strategy during matches.
  • Driver: gamepad1. Drives the robot.
  • Operator: gamepad2. Runs the mechanisms.
  • Programmers: write and test the code.
  • Builders: design and assemble the robot.
  • Documentation: maintain the engineering portfolio, which judges use for awards.

On a small team one person covers several roles. Make sure each one is covered.

3. The Competition Manual

FIRST publishes the Competition Manual at kickoff on ftc-resources.firstinspires.org. Read the robot rules, the field rules, and the scoring section before building anything. Robot size limits, allowed parts, and what counts for points are all in there. An illegal robot fails inspection and cannot play.

FIRST also publishes Team Updates during the season that change the manual, so check for new ones. Questions about the rules go through the official Q&A, which for BIOBUZZ opens September 28, 2026. Your team’s lead coach account submits them.

4. Hardware

Electronics

  • REV Control Hub. Runs the code and connects to the Driver Station over Wi-Fi.
  • REV Driver Hub or an Android phone for the Driver Station.
  • 12 V FTC-legal battery.
  • REV Expansion Hub, optional, for more ports.

Motors and servos

  • Four DC motors with encoders for a mecanum drivetrain. goBILDA Yellow Jacket and REV HD Hex motors are common.
  • Servos for mechanisms.

Sensors

  • Encoders, built into the motors.
  • IMU, built into the Control Hub.
  • A webcam for vision. Optional for a first robot.

Wiring

  • JST VH motor cables and JST PH encoder cables.
  • Servo cables.
  • XT30 battery cable and a power switch.

Structure

  • goBILDA or REV extrusion, brackets, and fasteners.

5. Control Hub ports

  • Motor ports 0-3, JST VH. Each has a matching encoder port next to it.
  • Servo ports 0-5.
  • I2C ports 0-3 for color and distance sensors.
  • Digital ports for touch sensors and limit switches.
  • Analog ports for potentiometers.
  • USB for a webcam.
  • XT30 for battery power.

Mount the hub where it will not be hit and where the ports are reachable.

6. Building the first robot

Build the drivetrain first and get it driving before adding anything else.

Mecanum wheels are the standard choice. Each wheel has rollers at 45 degrees, which lets the robot strafe and rotate in place. Four wheels, one motor each.

  • Viewed from above, the rollers must form an X. If the robot rotates when it should strafe, a wheel is in the wrong corner.
  • Keep the robot low and the weight spread over all four wheels.
  • Leave slack in the motor cables so nothing pulls when the robot moves.

Do not build a large mechanism before the drivetrain is reliable. A robot that drives well and scores a little in TeleOp beats one that does everything and breaks.

7. Wiring

Loose connectors cause more match failures then code does.

  • Use the same device names everywhere: frontLeft, frontRight, backLeft, backRight, slideMotor, and so on.
  • Write down which port each motor and servo is in.
  • Put the power switch between the battery and the hub.
  • Zip tie cables to the frame and keep them away from moving parts.
  • Pull on every connector before every match.

See Wiring and Configuration.

8. Software setup

Code is written in Java in Android Studio.

  1. Install Android Studio.
  2. Clone FtcRobotController.
  3. Open it and wait for the Gradle sync.
  4. Team code goes in the TeamCode module.

Deploy over USB or over the hub’s Wi-Fi. See Android Studio Setup.

Update to the current SDK version each season. Some updates are required to be legal at competition.

9. Robot configuration

The Driver Station stores a configuration that maps names to ports.

  1. In the Driver Station app, open the menu and choose Configure Robot.
  2. Create a new configuration.
  3. For each motor and servo port in use, pick the device type and type the name used in code.
  4. Save and activate it.

The name in the configuration and the string in hardwareMap.get() must match exactly.

10. First TeleOp

package org.firstinspires.ftc.teamcode;

import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
import com.qualcomm.robotcore.hardware.DcMotor;

@TeleOp(name="Drive TeleOp", group="Linear OpMode")
public class DriveTeleOp extends LinearOpMode {

    private DcMotor frontLeftDrive = null;
    private DcMotor backLeftDrive = null;
    private DcMotor frontRightDrive = null;
    private DcMotor backRightDrive = null;

    @Override
    public void runOpMode() {
        frontLeftDrive  = hardwareMap.get(DcMotor.class, "front_left_drive");
        backLeftDrive   = hardwareMap.get(DcMotor.class, "back_left_drive");
        frontRightDrive = hardwareMap.get(DcMotor.class, "front_right_drive");
        backRightDrive  = hardwareMap.get(DcMotor.class, "back_right_drive");

        frontLeftDrive.setDirection(DcMotor.Direction.REVERSE);
        backLeftDrive.setDirection(DcMotor.Direction.REVERSE);
        frontRightDrive.setDirection(DcMotor.Direction.FORWARD);
        backRightDrive.setDirection(DcMotor.Direction.FORWARD);

        telemetry.addData("Status", "Initialized");
        telemetry.update();

        waitForStart();

        while (opModeIsActive()) {
            double max;

            double axial   = -gamepad1.left_stick_y;
            double lateral =  gamepad1.left_stick_x;
            double yaw     =  gamepad1.right_stick_x;

            double frontLeftPower  = axial + lateral + yaw;
            double frontRightPower = axial - lateral - yaw;
            double backLeftPower   = axial - lateral + yaw;
            double backRightPower  = axial + lateral - yaw;

            max = Math.max(Math.abs(frontLeftPower), Math.abs(frontRightPower));
            max = Math.max(max, Math.abs(backLeftPower));
            max = Math.max(max, Math.abs(backRightPower));

            if (max > 1.0) {
                frontLeftPower  /= max;
                frontRightPower /= max;
                backLeftPower   /= max;
                backRightPower  /= max;
            }

            frontLeftDrive.setPower(frontLeftPower);
            frontRightDrive.setPower(frontRightPower);
            backLeftDrive.setPower(backLeftPower);
            backRightDrive.setPower(backRightPower);

            telemetry.addData("Front left/Right", "%4.2f, %4.2f", frontLeftPower, frontRightPower);
            telemetry.addData("Back  left/Right", "%4.2f, %4.2f", backLeftPower, backRightPower);
            telemetry.update();
        }
    }
}

This is the SDK sample BasicOmniOpMode_Linear. Teleop Introduction and Teleop Beginner explain each part.

11. First autonomous

Autonomous is the first 30 seconds. Even driving to a scoring position and parking is worth points. The simplest reliable method is driving by encoder counts.

static final double COUNTS_PER_MOTOR_REV  = 537.7 ;   // goBILDA 5202 312 RPM
static final double DRIVE_GEAR_REDUCTION  = 1.0 ;
static final double WHEEL_DIAMETER_INCHES = 3.78 ;
static final double COUNTS_PER_INCH       = (COUNTS_PER_MOTOR_REV * DRIVE_GEAR_REDUCTION) /
                                            (WHEEL_DIAMETER_INCHES * 3.1415);

public void driveForward(double inches, double speed, double timeoutS) {
    if (opModeIsActive()) {

        frontLeftDrive.setTargetPosition(frontLeftDrive.getCurrentPosition()   + (int)(inches * COUNTS_PER_INCH));
        frontRightDrive.setTargetPosition(frontRightDrive.getCurrentPosition() + (int)(inches * COUNTS_PER_INCH));
        backLeftDrive.setTargetPosition(backLeftDrive.getCurrentPosition()     + (int)(inches * COUNTS_PER_INCH));
        backRightDrive.setTargetPosition(backRightDrive.getCurrentPosition()   + (int)(inches * COUNTS_PER_INCH));

        setAllRunMode(DcMotor.RunMode.RUN_TO_POSITION);

        runtime.reset();
        setAllPower(Math.abs(speed));

        while (opModeIsActive() &&
               (runtime.seconds() < timeoutS) &&
               (frontLeftDrive.isBusy() && frontRightDrive.isBusy())) {
            telemetry.addData("Driving", "%.0f in", inches);
            telemetry.update();
        }

        setAllPower(0);
        setAllRunMode(DcMotor.RunMode.RUN_USING_ENCODER);
    }
}
waitForStart();
driveForward(24, 0.5, 5.0);

Reset the encoders at init with STOP_AND_RESET_ENCODER first. The timeout stops a stalled motor from holding up the rest of the routine. Measure the counts per inch on your own robot. Full details in Encoder Autonomous Introduction.

12. Engineering portfolio

Judged awards are based on an interview and the engineering portfolio, a short document that describes the team and the design process. It should include:

  • Who is on the team and what each person does.
  • What the team decided to focus on after reading the Competition Manual, and why.
  • Design iterations, including ones that did not work and what was learned.
  • Test data.
  • Outreach: events the team ran or attended, who was reached, and what came of it. Several judged awards depend on this, so record it as it happens.

Keep notes from the first meeting. Writing the portfolio the week before a tournament from memory does not work. The Inspire Award, the top award at an event, is based heavily on the portfolio and interview.

13. Competition day

Before

  • Charge the Control Hub, Driver Hub, and at least two batteries.
  • Pack spare parts, a screwdriver set, zip ties, tape and a spare servo.
  • Deploy the code you intend to run and test it that morning.

Inspection

  • Every robot is inspected before it can play. Know your robot’s size and weight and have it inside the limits.

Matches

  • Check the schedule and be at the field early.
  • The drive coach talks, the drivers drive.
  • After each match write down what broke or what did not work.

Between matches

  • Fix things that will cost you a match first. Everything else waits.

Scouting

  • Watch other teams and note what they score reliably. You will use this at alliance selection.

14. More

  • gm0.org: community-maintained guide to FTC hardware, software, and strategy.
  • The FTC Discord for questions.
  • FIRST’s YouTube channel for game reveals and official training.

Pages on this site to read next, in order:

  1. Getting Started
  2. Android Studio Setup
  3. Wiring and Configuration
  4. Motors and Servos
  5. Types of OpModes
  6. Teleop Introduction
  7. Teleop Beginner
  8. Finite State Machines in TeleOp
  9. Encoder Autonomous Introduction
  10. Universal IMU Guide

Engineering Portfolio Review

Share your portfolio with us! We'll provide detailed feedback to help you excel and get an award.

Reminder: Give commenting access to before submitting.