Don't Blink LogoFTC Stack

State Machines

Learn how state machines organize complex robot behavior.

A state machine is a way to organize a program by dividing behavior into different states.

Instead of writing one long sequence of instructions, the robot is always in a specific state and decides when to transition.

For example:

enum State {
    INTAKING,
    DRIVING,
    SHOOTING,
    PARKED
}

The robot might follow this flow:

DRIVING
   ↓
Target found
   ↓
SHOOTING
   ↓
Finished scoring
   ↓
PARKED

Why Use State Machines?

State machines solve many problems with sequential code.

They allow robots to:

  • Pause and resume actions
  • React to sensors
  • Handle unexpected situations
  • Manage complex autonomous routines

Instead of:

drive();
shoot();
park();

You can think:

If driving is complete:
    switch to shooting

If shooting is complete:
    switch to parking

FTC Examples

State machines are commonly used for:

Autonomous routines

START
 ↓
MOVE_TO_GOAL
 ↓
SCORE
 ↓
PARK

Mechanisms

IDLE
 ↓
INTAKE_ACTIVE
 ↓
GAME_PIECE_DETECTED
 ↓
READY_TO_SCORE

State Machine Libraries

While you can build a state machine yourself using enums and switch statements, many teams choose to use a library that simplifies the process.

One popular option is StateFactory, which provides a structured way to define states and transitions without writing all of the boilerplate yourself.

State machines are one of the first major steps toward writing scalable robot software.

Was this resource helpful?

On this page

Was this resource helpful?