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.

  • FTC Docs - Programming Resources

    • Official programming information from FTC.

  • Game Manual 1

    • Official rules from Game Manual 1, which outlines the rules regarding robot software in section 7.3.5.

  • FTC SDK Repository

    • Official repository for the FTC Robot Controller app. Teams using Android Studio should fork this repo for development.

  • Game Manual Zero (GM0) - Software

    • Programming information and tutorials from GM0

  • Westside Robotics

    • Information on various programming topics, which are split into separate repositories. Click the Wiki tab in each repo for the information.

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

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 2023-2024 season has a lot of changes to vision! It appears that Vuforia has 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.

TensorFlow

TensorFlow is a software library that uses machine learning to identify objects and patterns in images.

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.