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.
-
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
-
Information on various programming topics, which are split into separate repositories. Click the Wiki tab in each repo for the information.
-
A great way built by our own Graden to teach teams how to get started on Android Studio!
-
FTC simulator to be able to learn and test and drive code! Amazing resource
-
FTC Team #8367, who have created a number of tools and resources for FTC teams.
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.
-
Official Blocks tutorial from FTC.
Blocks YouTube Tutorial Playlist
Official Blocks video tutorials from FTC.
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.
FTC Docs - OnBot Java Tutorial
Official OnBot Java tutorial from FTC.
FTC SDK - Java Example OpModes
Official example OpModes from FTC.
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.
FTC Docs - Android Studio Tutorial
Official Android Studio tutorial from FTC.
FTC SDK - Java Example OpModes
Official example OpModes from FTC.
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.
-
Information from GM0 about telemtry.
Gamepads
Gamepads are controllers that plug into the Driver Station, and are typically used to control the robot during TeleOp.
-
Information from GM0 about gamepads.
Motors
Motors are electromechanical devices that spin when powered. They’re typically used to drive wheels or move actuators.
FTC Docs - Motor Tutorials (Blocks) (OnBot Java) (Android Studio)
Official information from FTC about motors.
-
Information from GM0 about motors.
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.
FTC Docs - Servo Tutorials (Blocks) (OnBot Java) (Android Studio)
Official information from FTC about servos.
-
Information from GM0 about servos.
Sensors
Sensors are devices that measure physical properties of an environment. Resources for various sensor types have been separated below.
Encoders
-
Information from GM0 about 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
FTC Docs - Universal IMU Interface
Official information from FTC about IMUs.
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 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!
FTC Docs - VisionPortal Overview
Official information from FTC about vision.
Vision Processing with SDK v8.2+
Presentation by Dryw Wade on vision processing with the latest updates for the CENTERSTAGE season.
OpenCV
OpenCV is a software library used for processing images.
-
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.
FTC Docs - VisionPortal Camera Controls
Official information from FTC about camera 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.
FTC Docs - Fork and Clone from GitHub
Official GitHub tutorial from FTC.
-
Presentation by Dryw Wade on how to use GitHub, tailored towards FTC teams.
Dashboard
Dashboards are applications that can be used to monitor and control robots from a computer.
-
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.
-
Information from GM0 about odometry.
Game Manual Zero - Control Loops
Information from GM0 about control theory.
-
Information from CTRL ALT FTC about control theory.
-
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.
-
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.
Westside Robotics - Power Monitoring
Information from Westside Robotics about power monitoring with the Rev Control/Expansion Hubs.