Repository for the 2015-2016 Res-Q Season
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


FTC Android Studio project to create FTC Robot Controller app.

This is the FTC SDK that can be used to create an FTC Robot Controller app, with custom op modes. The FTC Robot Controller app is designed to work in conjunction with the FTC Driver Station app. The FTC Driver Station app is available through Google Play.

To use this SDK, download/clone the entire project to your local computer. Use Android Studio to import the folder ("Import project (Eclipse ADT, Gradle, etc.)").

Documentation for the FTC SDK are included with this repository. There is a subfolder called "doc" which contains several subfolders:

  • The folder "apk" contains the .apk files for the FTC Driver Station and FTC Robot Controller apps.
  • The folder "javadoc" contains the JavaDoc user documentation for the FTC SDK.
  • The folder "tutorial" contains PDF files that help teach the basics of using the FTC SDK.

For technical questions regarding the SDK, please visit the FTC Technology forum:


  • Added Support for Modern Robotics Gyro.
  • The GyroSensor class now supports the MR Gyro Sensor.
  • Users can access heading data (about Z axis)
  • Users can also access raw gyro data (X, Y, & Z axes).
  • Example op mode included.
  • Improved error messages
  • More descriptive error messages for exceptions in user code.
  • Updated DcMotor API
  • Enable read mode on new address in setI2cAddress
  • Fix so that driver station app resets the gamepads when switching op modes.
  • USB-related code changes to make USB comm more responsive and to display more explicit error messages.
  • Fix so that USB will recover properly if the USB bus returns garbage data.
  • Fix USB initializtion race condition.
  • Better error reporting during FTDI open.
  • More explicit messages during USB failures.
  • Fixed bug so that USB device is closed if event loop teardown method was not called.
  • Fixed timer UI issue
  • Fixed duplicate name UI bug (Legacy Module configuration).
  • Fixed race condition in EventLoopManager.
  • Fix to keep references stable when updating gamepad.
  • For legacy Matrix motor/servo controllers removed necessity of appending "Motor" and "Servo" to controller names.
  • Updated HT color sensor driver to use constants from ModernRoboticsUsbLegacyModule class.
  • Updated MR color sensor driver to use constants from ModernRoboticsUsbDeviceInterfaceModule class.
  • Correctly handle I2C Address change in all color sensors
  • Updated/cleaned up op modes.
  • Updated comments in example op mode.
  • Replaced the calls to "setChannelMode" with "setMode" (to match the new of the DcMotor method).
  • Removed op mode.
  • Added op mode (demonstrates how to use MR Gyro Sensor).
  • Added op mode (demonstrates how to use MR Color Sensor).
  • Added op mode (demonstrates how to use HT legacy color sensor).
  • Added (demonstrates how to use legacy Matrix controller).
  • Updated javadoc documentation.
  • Updated release .apk files for Robot Controller and Driver Station apps.

T. Eng November 5, 2015


  • Added support for Legacy Matrix 9.6V motor/servo controller.
  • Cleaned up build.gradle file.
  • Minor UI and bug fixes for driver station and robot controller apps.
  • Throws error if Ultrasonic sensor (NXT) is not configured for legacy module port 4 or 5.

T. Eng October 6, 2015

In this latest version of the FTC SDK (20150803_001) the following changes should be noted:

  • New user interfaces for FTC Driver Station and FTC Robot Controller apps.
  • An init() method is added to the OpMode class.
    • For this release, init() is triggered right before the start() method.
    • Eventually, the init() method will be triggered when the user presses an "INIT" button on driver station.
    • The init() and loop() methods are now required (i.e., need to be overridden in the user's op mode).
    • The start() and stop() methods are optional.
  • A new LinearOpMode class is introduced.
    • Teams can use the LinearOpMode mode to create a linear (not event driven) program model.
    • Teams can use blocking statements like Thread.sleep() within a linear op mode.
  • The API for the Legacy Module and Core Device Interface Module have been updated.
    • Support for encoders with the Legacy Module is now working.
  • The hardware loop has been updated for better performance.

T. Eng August 3, 2015