We don't run javac or jar directly, as these are made for desktop applications. Instead, we use a build system called gradle. Gradle is a build system used to compile, test, and package apps. It is also used to manage dependencies and run tasks, allowing us to bring in external code and automate routine operations. The control hub runs Android, which is oddly common in the robotics world, but we don't write an entire android app as FIRST has helpfully provided boilerplate code for us. The real app (i.e. the android activity and other app-related code) is stored in FtcRobotController. This project essential wraps around our code and ensures that basic robot functions like telemetry work. The control hub doesn't have a GUI, but many android concepts remain the same. For starters, apps are packaged as apk files, which are then installed on the robot, we do so over adb. adb is a command line tool that allows us to interact with the robot over USB or WIFI.
FtcRobotController project. This is permitted by FIRST, but the benefits of doing this are practically nonexistent. apk, which is then installed on the robot.The web logs should output the SDK version of the control hub on initialization.
local.properties.build.gradle: The main build file for the project. This file is used to configure the project and its subprojects. You can upgrade the Android Gradle Plugin version here.build.dependencies.gradle: A file that contains all of the dependencies for the project. This file is used to keep the build.gradle file clean and storTes all the default FIRST dependencies.build.common.gradle: A file that contains all of the common configurations for the project. This is shared between the eamCode and FtcRobotController projects.settings.gradle: A file that is used to include or exclude subprojects from the build. This file is used to include the TeamCode and FtcRobotController projects in the build. If you want to add more subprojects, you must add a include directive here.TeamCode/build.gradle: The build file for the TeamCode project. This file is used to configure the TeamCode project. Any project specific modifications should be put here.We use the FTC SDK, which is used for controlling the robot and talking to the driver station.
Some FTC SDK APIs, such as the Servo API, are underdeveloped, therefore we use the FTCLib API as a replacement.
ServoEx. Thus, we do not add it as a Gradle dependency anymore.We use OpenCV for the vision challenge via EasyOpenCV.
org.firstinspires.Vision. This makes it so that it might not appear in the gradle files, but it might still be being used.We use this library mainly used for vector math and linear algebra. However, its geometry utilities could be useful for pathfinding.