Don't Blink LogoFTC Stack

Introduction to Autonomous

Learn the fundamentals of autonomous programming.

Autonomous is the first portion of every FTC match. During this period, the robot must operate entirely on its own without any driver input.

Unlike TeleOp, where the robot continuously reacts to gamepad inputs, an autonomous program follows a predetermined sequence of actions based on sensor data, timers, and control algorithms.

A successful autonomous routine should be:

  • Consistent
  • Accurate
  • Repeatable
  • Easy to modify

How Autonomous Works

An autonomous OpMode generally follows the same structure as any other OpMode.

  1. Initialize hardware.
  2. Wait for the match to begin.
  3. Execute a sequence of actions.
  4. End the routine.

For example:

@Override
public void runOpMode() {

    // Initialize robot

    waitForStart();

    if (isStopRequested()) return;

    // Execute autonomous routine
}

Unlike TeleOp, there is no need to constantly read gamepad inputs. Instead, your code determines exactly what the robot should do and when it should do it.

Building Blocks of Autonomous

Modern FTC autonomous programs are built from several key components.

Motion Control

Mechanisms such as lifts and arms often use PID controllers to accurately reach target positions.

Localization

The robot must estimate where it is on the field using sensors such as encoders and IMUs.

Path Following

Instead of commanding individual motor powers, modern robots follow smooth trajectories generated by libraries like Road Runner or Pedro Pathing.

This Section

The remaining pages introduce the major concepts behind modern autonomous programming.

  • PID Movement explains how to accurately move mechanisms with a feedback controller.
  • Localization & Odometry introduces robot position tracking.
  • Road Runner provides an overview of a veteran FTC path planning library.
  • Pedro Pathing introduces a newer, alternative path-following library.

These pages focus on understanding the concepts rather than replacing the excellent documentation provided by each library.

Was this resource helpful?

On this page

Was this resource helpful?