Options for Programming#

There are three recommended options for teams to use when programming a robot to do various tasks: Blocks, OnBot Java, and Android Studio.

Blocks#

The Blocks Programming Tool is a simple way to code simple actions for the robot. It has a colorful and lego-like design and includes sounds of block pieces of snapping together.

Using a device and a robot controller phone, connect your device to the phone’s Wi-Fi by clicking the three dots in the top right of the RC and select “Program & Manage”. This will display the WiFi SSID and password for you to connect to. Go onto your browser (preferably Chrome, though other modern browser will likely work) and enter the address shown on the RC.

Advantages#

  • Good for beginners: one of the easiest and simplest options to use.

  • Easy to set up: requires a device (laptop, chromebook, tablet) and a phone in the Program & Manage screen

  • Programs can be saved directly to the phone

    • Changes can be made quickly

  • Doesn’t require an external Wi-Fi connection

Disadvantages#

  • Not recommended if you’re already familiar with some type of programming

    • Primarily a teaching tool for people with no programming experience

  • This will change your primary Wi-Fi network to the Robot Controller’s Direct Wi-Fi network, and as such, you will be unable to access the internet while connected to this particular network.

    • Teams can get around this by purchasing an external Wi-Fi module that allows computers to run 2 Wi-Fi networks at once.

  • Sacrifices flexibility and application for simplicity

  • Don’t ever use it on a phone, unless you’re out of options. (Not phone-friendly)

    • You may make a bigger mess if you try to.

OnBot Java#

OnBot Java uses a similar method of using a browser to code and save directly to the phone. The difference being that a programming language called Java is used instead.

Advantages#

  • Recommended if you’re learning or have learned some programming, even better if you know a little Java.

  • Greater flexibility than Blocks

  • There are a lot more resources available in case you need help

  • More applicable to the real-world than Blocks

  • Maintains most of the advantages of Blocks

Disadvantages#

  • Connecting to the robot controller’s Wi-Fi network will prevent you from using anything on the internet including video tutorials and online communication

  • Using external libraries is difficult and borderline impossible

  • Steeper learning curve than Blocks

Android Studio#

Android Studio is a comprehensive Integrated Development Environment (IDE) that uses Java to program the phones. Instead of using a browser to upload code, Android Studio will compile your Robot Controller code into a .apk file (an app installer), and install that on the phone.

Advantages#

  • Recommended if you’re learning or have learned some programming, even better if you know a little Java.

  • Much greater flexibility than Blocks.

  • Much easier to integrate libraries like EasyOpenCV, FTC Dashboard, FTCLib, and Road Runner.

  • Can use plugins like Road Runner.

  • Can use either a USB connection to the RC phone, or a wireless connection to upload code.

    Note

    Deploy times can be sped up by using OpenRC Turbo.

  • Can debug in real-time

  • Many resources for Java, Android Studio, and IDEA

  • Can use other programming languages

Disadvantages#

  • Connecting to the robot controller’s Wi-Fi network will prevent you from using anything on the internet including video tutorials and online communication, unless you have a second Wifi adapter (cheap and easy)

  • Relatively easy setup process, but time consuming and is a hefty install (3GB of files between Android Studio, ftc_app, and other libraries)

  • Issues can be difficult to diagnose and solve

Other Programming Languages#

Kotlin#

Kotlin is a relatively new and rapidly growing programming language from Jetbrains, the creator of the IntelliJ IDE, which Android Studio is based off. Kotlin was made to be completely compatible with Java but be easier to work with. Google recently announced it as an official Android language, then announced they are going “Kotlin first” but still keeping Java support.

Advantages#

  • Concise, readable, easy to edit code

    • Easy to write as it takes much less code to do the same thing

  • Both optional type inference and a stronger type system than Java

  • Null safety

  • Thread safety

  • Functional programming

  • Seamless integration with Java code and libraries

  • Very easy to transition from Java

Disadvantages#

  • Not widely used in FTC® yet

  • New and has fewer community resources for training

  • Not recommended for programmers who need large amounts of help from other teams

C and C++#

C and C++ are native programming languages compatible with Android. Very few teams have used C++. This is typically used for only part of the code, with the majority being Java or Kotlin.

Advantages#

  • Fast execution for extremely resource-intensive applications.

  • Supports more libraries

Disadvantages#

  • Rarely needed

  • Very difficult to set up

  • Difficult to debug code

  • Very few teams can help you

  • Very few online resources