# FtcRobotController: Android Studio SDK for FIRST Tech Challenge robots

> FtcRobotController is the Android Studio workspace used to build the Android application for an FTC competition robot. It suits teams that want to develop Java OpModes locally, while Blocks and OnBot Java users can work without this repository.

**FIRST-Tech-Challenge/FtcRobotController** — FTC Android Studio Workspace for robot programming in Android Studio

- Repository: https://github.com/FIRST-Tech-Challenge/FtcRobotController
- Stars: 1,397 · Forks: 10,856
- Language: Java
- License: BSD-3-Clause-Clear
- Published: 2026-10-16 · Updated: 2026-10-16 · Language: en
- Canonical page: https://hysenlabs.com/projects/first-tech-challenge-ftcrobotcontroller

## Why FtcRobotController exists for FTC Java teams

FtcRobotController solves a specific FTC workflow problem: it provides the Android Studio workspace and source code for the Android app that controls a FIRST Tech Challenge competition robot. It is intended for teams that want to write robot code in Java on a local development computer rather than relying entirely on the online Blocks or OnBot Java tools. The repository is not a general robotics library or a simulator. It is the project structure around the FTC control application, including the application module, team code, samples, Gradle files, and bundled dependencies visible in the repository layout.

The boundary between Android Studio and the online tools matters. The README explicitly says that Blocks and OnBot Java do not require Android Studio. An Android Studio workflow becomes relevant when a team wants source-level Java development, local project editing, or use of the sample OpModes. The README also directs newcomers to the FTC Blocks tutorial first, even when they already know Java. That is a practical warning against treating the SDK as an isolated programming library: robot behavior depends on the FTC control system, its OpMode model, hardware configuration, and the tools connected to the competition environment.

The repository is not archived, and its last push was on 2026-09-12. The release information identifies v12.0 as the current listed release for the BIOBUZZ 2026-2027 season. Maintenance status should therefore be judged from repository activity and release dates, not from a promise of future compatibility.

## FtcRobotController's Android project and robot-code boundary

Based on the repository layout, the project has a `FtcRobotController/` module, a separate `TeamCode/` area, Gradle configuration files, a `gradlew` wrapper, and a `gradle/` directory. The README identifies the main source area as `FtcRobotController/`, while team-owned examples and code belong under `TeamCode/src/main/java/org/firstinspires/ftc/teamcode`. This separation gives the SDK a fixed application shell while allowing competition teams to place their own OpModes in team code.

The documented sample path is `FtcRobotController/src/main/java/org/firstinspires/ftc/robotcontroller/external/samples`. The README says these samples can be copied into the `/teamcode` folder and modified for a team's needs. The `readme.md` in the TeamCode folder explains sample naming conventions and how to copy examples into the team's project space. That is the clearest documented route for getting a working Java example into a new team project without treating an SDK sample as production code.

The SDK's central interaction is with the FTC robot control system. The README does not provide a complete architecture description of sensor drivers, motor control, telemetry, or OpMode dispatch. It does, however, identify AprilTag processing as an important SDK-facing area and documents changes to detection object handling. In v12.0, detections can represent either a standalone tag or a cluster. Applications that receive `AprilTagDetection` objects must distinguish `AprilTagSingleDetection` from `AprilTagClusterDetection` before accessing type-specific elements. This is a source-level API boundary, not just an application setting.

## Installing FtcRobotController with Android Studio

The documented installation path is to download or clone the complete repository, then import the uncompressed folder through Android Studio's "Import project (Eclipse ADT, Gradle, etc.)" workflow. The README requires Android Studio Narwhal 3 Feature Drop or later for this project. For a Git user, the repository gives this command:

```bash
git clone https://github.com/FIRST-Tech-Challenge/FtcRobotController.git
```

After the command completes, the cloned directory should contain the top-level files and folders named in the repository layout, including `FtcRobotController/`, `TeamCode/`, `build.gradle`, `settings.gradle`, and `gradlew`. Android Studio should be pointed at the repository root so it can see the Gradle project rather than treating only one subdirectory as an isolated application.

Teams that do not want a Git checkout can use the repository page's "Download Zip" button or download a `.zip` or `.tar.gz` archive from the Releases section. The Releases page also provides prebuilt APKs, according to the README. A prebuilt APK is different from cloning the source: the README presents it as a downloadable artifact, while Android Studio development requires the project files. The README does not document a separate install command for the APK, so none should be inferred.

For the first real use, start with a sample rather than writing a new OpMode immediately. Locate the samples folder, copy a relevant example into `TeamCode/src/main/java/org/firstinspires/ftc/teamcode`, and follow the TeamCode `readme.md` instructions for naming and placement. The README does not specify a single sample that every robot can run unchanged, because samples must be adapted to the team's hardware and configuration.

## FtcRobotController v12.0 AprilTag cluster compatibility

Version 12.0 contains the most concrete upgrade constraint in the release information. It adds an AprilTag Cluster capability and changes how returned detections are represented. A cluster is a co-planar group of two or more AprilTags whose member positions are defined relative to a common origin. The origin can sit outside the visible tag bounds, which allows a team to define an aiming target that is easier to use. The release notes state that a cluster can provide a full 6DOF pose estimate even when only one member tag is visible, although more visible tags produce a better and more stable estimate.

Legacy AprilTag processing is a genuine failure point. The release notes say that existing OpModes can fail to compile when they use `AprilTagDetection` objects directly in code written for standalone tags. The documented migration pattern checks the runtime type before casting. The repository's updated samples follow this distinction:

```java
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
  }
}
```

The `getCurrentGameTagLibrary()` change also affects code and configuration assumptions. According to the release notes, it now returns BIOBUZZ tags, whose origins are located at the center of the Cell opening. The release text also changes the default preview display for the Origin X, Y, and Z axes. Teams migrating from an older SDK should review every AprilTag path, sample, and assumption about tag coordinates. The README does not describe a compatibility flag for retaining legacy behavior.

## What FtcRobotController does not replace

FtcRobotController is the wrong choice when a team only wants Blocks or OnBot Java. The README removes Android Studio from those workflows, so cloning this repository adds an Android Studio dependency without giving the team a required local Java environment. It is also not a substitute for understanding the FTC control system. A Java program can be syntactically correct while still depending on an incorrect motor mapping, gamepad behavior, hardware configuration, or robot mechanism.

The repository also does not document a production deployment process. It says that Releases contains prebuilt APKs, but it does not explain signing, sideloading policy, device provisioning, or recovery procedures. It does not document a rollback procedure for returning a robot control system to an earlier release. Those omissions matter for competition operations, where a version choice can affect both code compilation and field behavior.

Compared with Blocks and OnBot Java, FtcRobotController offers a different development boundary. Blocks and OnBot Java are the online programming options described by the README. The Android Studio repository is the local project-based route, with team code, Gradle configuration, and source examples in the checkout. Compared with a plain robot library, it supplies the surrounding FTC Android application and its integration points, rather than only isolated hardware APIs. That broader scope increases the number of project files and version-specific details a team must understand.

## Maintenance, releases, and BSD-3-Clause-Clear

The repository is not archived, and its last push was on 2026-09-12. Recent releases are v12.0 on 2026-09-12, v11.2.1 on 2026-07-31, and v11.2 on 2026-07-15. The release notes make upgrade planning more concrete than the README alone: v12.0 introduces a breaking AprilTag processing change, updates the game tag library for BIOBUZZ, and changes some AprilTag preview defaults. An upgrade can therefore involve source edits and behavior review, not merely replacing an APK.

The repository identifies its license as `BSD-3-Clause-Clear`. This is a permissive license family, but teams still need to read the actual `LICENSE` file and review their own compliance obligations. The license identifier alone does not answer questions about embedded dependencies, generated APKs, trademarks, or competition-specific distribution requirements. The README does not provide legal interpretation, so the relevant boundary is the repository license file and any separate FIRST or dependency terms.

For upgrade cost, the strongest documented item is AprilTag code migration. Teams should also expect to review Gradle and Android Studio compatibility because the repository is an Android Studio project and names a minimum Android Studio feature drop. The README does not publish a formal migration guide for every SDK change. Its links to FIRST documentation, Javadoc, the community forum, and the AprilTag cluster documentation are the documented places for additional technical detail.

## Conclusion

FtcRobotController is appropriate for FTC teams that want local Java development in Android Studio and are prepared to import, build, and update an Android robot-control project. Teams using only Blocks or OnBot Java do not need to adopt this repository. Before adopting version 12.0, check whether the robot code processes AprilTag detections, because legacy handling is documented to cause compile errors after the AprilTag cluster change.

## FAQ

### Do I need Android Studio to use FtcRobotController?

No. The README says that programming in Blocks or OnBot Java does not require Android Studio. Android Studio is required for the local Android Studio workspace workflow.

### How do I download FtcRobotController?

You can clone the repository with the documented Git command, use the repository page's Download Zip button, or download a `.zip` or `.tar.gz` archive from Releases. The Releases page also provides prebuilt APKs.

### What should an FTC Java team check before upgrading to v12.0?

Check whether existing OpModes process AprilTag detections as standalone tags. The release notes state that legacy AprilTag OpModes can produce compile errors and document handling for `AprilTagSingleDetection` and `AprilTagClusterDetection`.

## Sources

- [FIRST-Tech-Challenge/FtcRobotController on GitHub](https://github.com/FIRST-Tech-Challenge/FtcRobotController)
- [Issues](https://github.com/FIRST-Tech-Challenge/FtcRobotController/issues)
- [License: BSD-3-Clause-Clear](https://github.com/FIRST-Tech-Challenge/FtcRobotController/blob/master/LICENSE)
- [README](https://github.com/FIRST-Tech-Challenge/FtcRobotController/blob/master/README.md)
- [Releases](https://github.com/FIRST-Tech-Challenge/FtcRobotController/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/first-tech-challenge-ftcrobotcontroller
