Programming

Note

This project is under active development!

This page contains resources for many topics regarding programming in FTC. They are separated by category, use the navigation panel on the left to find what you need!

General Resources

The resources below each cover a wide range of topics.

Programming Tools

FTC has 3 main programming tools for teams: Blocks, OnBot Java, and Android Studio. Resources for each have been separated below.

Blocks

Blocks is a visual programming interface that runs in a web browser. It is targetted towards rookies who prefer to create code visually.

OnBot Java

OnBot Java is a text-based programming interface that runs in a web browser. It is targetted towards rookies who prefer to create code using Java.

Android Studio

Android Studio is an integrated development environment (IDE) that runs on a computer. It is targetted towards those who prefer to create code using Java, and benefit from the advanced features offered by a professional IDE.

Control System

Resources for various core components of the Control System have been separated below.

Telemetry

Telemetry is used to send information from the Robot Controller to the Driver Station.

Gamepads

Gamepads are controllers that plug into the Driver Station, and are typically used to control the robot during TeleOp.

Motors

Motors are electromechanical devices that spin when powered. They’re typically used to drive wheels or move actuators.

Servos

Servos are electromechanical devices that spin when powered. In contrast to motors, they usually have positional feedback control built-in, and are typically used for smaller actuators.

Sensors

Sensors are devices that measure physical properties of an environment. Resources for various sensor types have been separated below.

Encoders

IMU

Inertial measurement units (IMU) are sensors that measure motion. They typically (but not always) include an accelerometer, gyroscope, and magnetometer. The Control Hubs (and older Expansion Hubs) have IMUs built-in

Optical Tracking

  • New Module thanks to Dryw! For a new range of sensors

  • SparkFun Optical Tracking - Thanks Dryw!

    • Empowers you to elevate your robot’s navigation capabilities with exceptional precision and streamlined integration. This compact, all-in-one sensor leverages the power of the PAA5160E1 chip from PixArt Imaging Inc., delivering accurate dual-axis motion data across various hard floor surfaces. But that’s not all! This sensor boasts a powerful built-in 6-axis Inertial Measurement Unit (IMU) and an onboard microcontroller that performs real-time sensor fusion and tracking algorithms

LimeLight

  • LimeLight!

    • Limelight is a plug-and-play smart camera purpose-built for the FIRST. No experience is required - Limelight is easy enough for teams with no vision experience or expert mentors, and powerful enough for experienced teams who need a reliable, competition-ready vision solution.

Vision

Cameras may be attached to robots for more advanced sensing capabilities. General vision resources are linked below, followed by resources for specific vision tools.

Warning

The 2024-2025 season has a lot of changes to vision! It appears that Vuforia and TensorFlow have been removed, and is effectively replaced by EasyOpenCV and AprilTags. The resources below all contain current information, but other resources you find may be outdated or incorrect!

AprilTags

AprilTags are images that can be used for identificaiton and navigation. Software on the Robot Controller automatically identifies the AprilTags, and provides information about them.

OpenCV

OpenCV is a software library used for processing images.

  • EasyOpenCV

    • An implementation of OpenCV for FTC created by OpenFTC. It’s included in the official SDK (v8.2 and later), so there’s no need to install it separately. The ReadMe file contains links to documentation on how to use it.

Camera Controls

Cameras usually include various controls, such as gain and exposure. The resources below include information on how to use these controls.

Other Topics

The resources below are for various topics that don’t fit into any of the above categories.

GitHub

GitHub is a website for storing and managing projects using Git, an industry standard version control tool.

Dashboard

Dashboards are applications that can be used to monitor and control robots from a computer.

  • FTC Dashboard

    • A dashboard created by ACME Robotics. Major features include: dynamically changing variables; exporting telemetry to CSV files; plotting telemtry values on graphs; plotting robot location on field graphics; camera streaming; limited OpMode controls and gamepad support.

Odometry, Control Theory, and Motion Planning

Odometry is using sensor data to estimate the location of a robot. Control theory is using motors and other actuators to control the location of a robot. Motion planning is generating a path for a robot to follow. These 3 concepts are often used together to navigate a robot through the field.

  • Game Manual Zero - Odometry

    • Information from GM0 about odometry.

  • Game Manual Zero - Control Loops

    • Information from GM0 about control theory.

  • CTRL ALT FTC

    • Information from CTRL ALT FTC about control theory.

  • Controls Engineering in FRC

    • A control theory textbook written by Tyler Veness. “Graduate-level control theory for high schoolers”. The title says FRC, but it’s still very relevant for FTC.

  • Road Runner

    • A software library created by ACME Robotics for FTC teams that implements odometry, control theory, and motion planning all in one package. It is typically used for navigation around the field during autonomous.

Power Monitoring

The Rev Control/Expansion Hubs contains several power monitoring features, such as battery voltage and current consumption. The resources below provide information on how to use these features.