This repository contains the public FTC SDK for the BIOBUZZ (2026-2027) competition season.
Welcome!
This GitHub repository contains the source code that is used to build an Android app to control a FIRST Tech Challenge competition robot. To use this SDK, download/clone the entire project to your local computer.
Requirements
To use this Android Studio project, you will need Android Studio Narwhal 3 Feature Drop or later.
To program your robot in Blocks or OnBot Java, you do not need Android Studio.
Getting Started
If you are new to robotics or new to the FIRST Tech Challenge, then you should consider reviewing the FTC Blocks Tutorial to get familiar with how to use the control system:
If you are an Android Studio programmer, there are several ways to download this repo. Note that if you use the Blocks or OnBot Java Tool to program your robot, then you do not need to download this repository.
If you are a git user, you can clone the most current version of the repository:
Or, if you prefer, you can use the "Download Zip" button available through the main repository page. Downloading the project as a .ZIP file will keep the size of the download manageable.
You can also download the project folder (as a .zip or .tar.gz archive file) from the Downloads subsection of the Releases page for this repository.
The Releases page also contains prebuilt APKs.
Once you have downloaded and uncompressed (if needed) your folder, you can use Android Studio to import the folder ("Import project (Eclipse ADT, Gradle, etc.)").
Getting Help
User Documentation and Tutorials
FIRST maintains online documentation with information and tutorials on how to use the FIRST Tech Challenge software and robot control system. You can access this documentation using the following link:
Note that the online documentation is an "evergreen" document that is constantly being updated and edited. It contains the most current information about the FIRST Tech Challenge software and control system.
Javadoc Reference Material
The Javadoc reference documentation for the FTC SDK is now available online. Click on the following link to view the FTC SDK Javadoc documentation as a live website:
This project contains a large selection of Sample OpModes (robot code examples) which can be cut and pasted into your /teamcode folder to be used as-is, or modified to suit your team's needs.
The readme.md file located in the /TeamCode/src/main/java/org/firstinspires/ftc/teamcode folder contains an explanation of the sample naming convention, and instructions on how to copy them to your own project space.
Release Information
Version 12.0 (20260907-090034)
Breaking Changes
The new AprilTag Cluster capability breaks legacy AprilTag OpModes resulting in compile errors for software that uses AprilTagDetection objects in both Android Studio and OnBot Java.
Legacy AprilTag OpModes must be updated to check whether the returned AprilTag is a cluster or singleton,
and cast the returned detection into the correct type to access its elements. See below:
Old method for AprilTag processing
for (AprilTagDetection detection : currentDetections) {
// Do single Tag processing here
}
New method for AprilTag Singleton/Cluster processing
for (AprilTagDetection detection : currentDetections) {
if (detection instanceof AprilTagSingleDetection) {
AprilTagSingleDetection singleDet = (AprilTagSingleDetection) detection;
// Do single Tag processing here
} else {
AprilTagClusterDetection clusterDet = (AprilTagClusterDetection) detection;
// Do cluster Tag processing here
}
}
Clusters are co-planar groups of two or more AprilTags wherein the position of each member tag is defined relative to a common origin
This origin may be placed outside the bounds of the tags themselves to provide a more suitable "aiming" target
Clusters are resilient to partial occlusion. Full 6DOF pose can be estimated from a cluster even if only a single member tag is visible. Of course, the more tags that are visible, the better and more stable the pose estimate will be
All AprilTag samples have been updated to differentiate between standalone tags and clusters
Enhancements
Adds a tree view for robot configurations issue 1821
Gamepad indicators on the Driver Station are now colored orange if the respective gamepads are connected to the Android generic gamepad driver instead of the Driver Station's usermode USB driver
Updated AprilTag Library for BIOBUZZ. Notably, getCurrentGameTagLibrary() now returns BIOBUZZ tags.
In BIOBUZZ, the Origin of each cluster is located in the center of the Cell opening for easy aiming.
The Origin X,Y & Z Axes are now displayed by default on the preview image.
Unfortunately, since BIOBUZZ AprilTags move, they are not suitable for absolute Field Localization.
Supports OctoQuad MK2 firmware v3.1.0, which adds diagnostics parameters for the IMU and MCU uptime
Bug Fixes
Fixes issue 2078 where battery
voltage was not updated on driver station if OpMode did not send any telemetry.
Version 11.2.1 (20260724-093406)
Bug Fixes
Fixes issue 2099. Gradle and the AGP are now updated to 9.1 and 8.13.2 respectively.
Version 11.2 (20260707-102819)
Breaking Changes
Gradle is upgraded to v9.1 and the Android Gradle Plugin is updated to v8.13.2. AGP v8.13.2 requires Android Studio Narwhal 3 Feature Drop or later. Earlier versions of Android Studio will fail to sync the project. Older versions of Android Studio may prompt the user to downgrade AGP. Do not do this. Gradle v9.1 removed support for features that older versions of the AGP use. Updating Gradle fixes a Windows 11 problem some teams may encounter if they have agressive security software installed on their machine. For more context see this Gradle issue
Enhancements
New type of OpMode is now available. (@Utility)
Utility opmodes that are not disabled will show up in the Utility menu (requires 11.2 or later DS and RC)
TestHardware Utility now available
It allows you to test all servos, CR servos, motors, Color sensors, distance sensors, touch sensors, IMUs, webcams, and analog sensors in the config
TestGamepad Utility now available
It allows you to see the results of your two gamepads to make sure it is what you expect and find problems with your gamepads.
Adds methods to PwmControl interface to allow you to setPulseWidth and getPulseWidth
Both of these are in microseconds (uSeconds)
This is an ADVANCED feature. There is not a supporting sample.
NOTE: You may see a slight difference since the hardware is not accurate to the microsecond
Adds ability to set UVC camera "quirks" from user code to control compatibility flags used inside the low level UVC driver. Addresses issue 1428
Changes Apriltag Axis Display order on camera preview screen, to reflect updated Z axis direction.
The Driver Station app init button has a light teal background with the word init if
the driver station and robot controller are connected and have the same team number
there is at least one gamepad attached
the timer is enabled (for an Autonomous OpMode)
Bug Fixes
Fixes issue 1949 overwriting the group with the default group when registering a OpMode with OpModeManager.register(OpModeMeta name, Class clazz)
Fixes issue mentioned in 1890 where if
for a servo you change the direction or scaleRange and send the same setPosition that was sent
before, then it wouldn't update the servo.
Fixes an issue where Self-Inspect doesn't flag a driver station using -RC in it's name. The message is now:
The team numbers in the robot controller and driver station names do not match, or a device name is invalid. Refer to the FTC Competition Manual for device naming rules.
Version 11.1 (20251231-104637)
Enhancements
Gamepad triggers can now be accessed as booleans and have edge detection supported.
GoBildaPinpointDriver now supports Pinpoint v2 functionality
Adds webcam calibrations for goBILDA's USB camera.
Bug Fixes
Fixes issue 1654 in GoBildaPinpointDriver that caused error if resolution was set in other than MM
Fixes possible race condition issue 1884 on Driver Station startup when Driver Station name doesn't match the Robot Controller name.
Fixes issue 1863 - Incorrect package paths in samples.
Fixes an issue where an OnBotJava filename that begins with a lowercase character would fail to properly rename the file if the user tried to rename it so that it begins with an uppercase character.
Version 11.0 (20250827-105138)
Enhancements
OnBotJava now has the concept of a project. A project is a collection of related files. A project may be chosen by selecting 'Example Project'
from the 'File type:' dropdown. Doing so will populate the dropdown to the immediate right with
a list of projects to choose from.
When selecting a project all of the related files appear in