WestlakeLEARN
FTC / Java

First Tech Challenge

FTC / Java

01 · Java for FTC2/3
  • OpMode Anatomy and Hello Robot
  • Variables, Math, and Decisions
  • Methods, Classes, and Robot Helpers
02 · FTC Hardware Essentials
  • Hardware Map and RobotHardware
  • Motors, Servos, and Sensors
  • IMU, Encoders, and Bulk Caching
03 · TeleOp and Mecanum
  • Robot-Centric Mecanum Drive
  • Field-Centric Driving
  • Driver Ergonomics and Safe TeleOp
04 · Subsystems and Commands
  • Subsystem Lifecycle
  • Enums and Finite State Machines
  • Command-Based OpModes
05 · From Timed Steps to Actions
  • Timed and Encoder Autonomous
  • Autonomous State Machines
  • Actions and Sequencing
06 · PID and Feedforward
  • PID Basics
  • Feedforward and PIDF
  • Dashboard Tuning Workflow
07 · Motion Profiling
  • Motion Profile Concepts
  • Implementing a Profiled Mechanism
  • Testing Profiles and Failure Modes
08 · OpenCV and AprilTags
  • VisionPortal Camera Setup
  • OpenCV Color and Region Processors
  • AprilTags and Field Pose
09 · Setup and Tuning
  • Road Runner 1.0 Install and Drive Class
  • Feedforward Tuning
  • Localization and Validation
10 · Trajectories, Actions, and MeepMeep
  • Action Builder and Trajectories
  • MeepMeep Preview
  • Full Road Runner Autonomous
11 · Git, Debugging, and Competition Readiness
  • Git Workflow for FTC Teams
  • Telemetry-First Debugging
  • Competition Readiness Checklist
12 · Driver Control
  • Driver Control
13 · Autonomous Build
  • Simple Autonomous
14 · Debugging
  • Debugging with Telemetry

01 / Java for FTC

Variables, Math, and Decisions

Use numbers, booleans, if statements, and loops for robot behavior.

50 minFoundationsJava for FTC

You will

  1. 01Choose useful types for robot values.
  2. 02Clamp and scale joystick input safely.
  3. 03Use if statements for driver modes and safety rules.

Why Variables, Math, and Decisions matters

This lesson is part of the Java foundation, so the emphasis should be on how a small language feature becomes a robot habit. Students should leave understanding the syntax, but more importantly they should understand what the robot will do differently because that syntax exists. Keep the focus on readable values, predictable flow, and code that another teammate can safely modify later.

Starting point

Robot code is mostly values changing over time

Joystick axes, motor power, sensor distance, encoder position, and button state are all variables. Good FTC programmers name those values clearly and transform them one step at a time so debugging stays possible.

Decisions should protect the robot

If statements are not just syntax practice. They choose slow mode, prevent mechanisms from moving past limits, and make autonomous routines exit before they damage hardware.

Build path

Have students make one small edit, run it, observe telemetry, and explain the result before moving on. This is slower than pasting a large example, but it builds the debugging discipline they will need once hardware is involved.

For this specific lesson, students should first restate the goal in robot terms, then identify the value or behavior they expect to observe, then run the smallest test that proves the idea. The lesson should feel like a guided lab: predict, run, observe, explain, and only then extend.

ScaledDriveInput.java · Java

double drive = -gamepad1.left_stick_y;
double turn = gamepad1.right_stick_x;
boolean slowMode = gamepad1.left_bumper;

double scale = slowMode ? 0.35 : 0.85;
double leftPower = (drive + turn) * scale;
double rightPower = (drive - turn) * scale;

leftPower = Math.max(-1.0, Math.min(1.0, leftPower));
rightPower = Math.max(-1.0, Math.min(1.0, rightPower));

Debugging and failure modes

Most failures at this level come from hidden assumptions: a value has the wrong sign, a method runs at the wrong time, a variable is scoped where later code cannot see it, or a class is named differently than its file. The lesson should train students to check the smallest claim first instead of rewriting the whole OpMode.

Practice

Add a slow mode to a starter drive OpMode, then print the raw joystick values, scale, and final powers to telemetry.

Checks

  • Slow mode visibly reduces robot speed.
  • Motor power never exceeds -1.0 to 1.0.
  • Telemetry shows raw and processed values separately.

Check your understanding

Module check

Why clamp motor power before sending it to hardware?

0 of 1 answered

References

FIRST FTC DocsOfficial FTC SDK and robot programming documentation.Game Manual 0Community FTC programming, control, and robot design reference.Learn Java for FTCFTC-focused Java fundamentals by Alan G. Smith.

Finished reading?

Mark this lesson complete.

You'll move on to “Methods, Classes, and Robot Helpers” next.

OpMode Anatomy and Hello RobotMethods, Classes, and Robot Helpers