Overview of software used

Table of contents

Core software components

This is a list of the most important software that should be installed on any computer that is to be used to control and/or program the robot. A list of some of the software components used can be read here.

FRC Game Tools

A package of required components for use at FRC competitions. Full list of components available here.

Installation Download

FRC Driver Station

This app is used to communicate with and operate the robot. Drivers can enable/disable the robot, change its mode, diagnose connection and controller info, and view robot logs. It requires administrative permissions and gives the user a UAC prompt when opening. It is also required at competitions, as it is the only application allowed to communicate with the robot during FRC competitions.

Documentation

roboRIO Imaging Tool

Used to image a roboRIO 1. However, we use a roboRIO 2 so this tool is not required (see Imaging your roboRIO 2) It can, however, be used to set the team number of both a roboRIO 1 and roboRIO2

Documentation

WPILib

A package of required software for controlling a robot when using the Java or C++ programming language. Full list of components available here.

Installation Documentation

API Reference Documentation is available for:

Visual Studio Code

The IDE used for programming the robot. Installs a separate copy of VS Code separate from the one that’s already installed on your computer. The difference is that it has the necessary extensions for robot code development, these being WPILib and Java/C++/Python extensions.

Documentation (from WPILib) Documentation (official)

Question: Why does WPILib install a separate copy of VS Code?

  • Official answer: “The offline installer sets up a separate copy of VS Code for WPILib development, even if you already have VS Code on your machine. This is done because some of the settings that make the WPILib setup work may break existing workflows if you use VS Code for other projects.”
  • Real answer: The people who make WPILib are too lazy to figure out how to use VS Code’s Profiles feature. If you don’t want to have multiple copies of VS Code on your computer, you can install the VS Code extensions into a separate profile on your main copy of VS Code by manually extracting and installing the extensions. See below for info on how to do that.
How to install WPILib extensions into main copy of VS Code
  1. Download and mount the WPILib ISO file as normal
  2. Extract the artifacts ZIP file named WPILib_Windows-XXXX.X.X-artifacts.zip (where the X’s are replaced with the WPILib version number). You will need to extract it to a different directory on your computer, as you cannot extract it to the mounted disk.
  3. In the extracted folder, navigate to the vsCodeExtensions folder. Note this location for later.
  4. In VS Code, create a new profile by running the Profiles: New Profile... command. Name it WPILib, give it an icon, and optionally copy from another profile (like the Default profile) so that your settings, keyboard shortcuts, and themes are kept. Then, click the Create button.
  5. Wait for VS Code to create the profile. Depending on whether or not you are copying from another profile, this may take a while.
  6. Install the WPILib extensions by running the Extensions: Install from VSIX... command, navigating to the vsCodeExtensions folder you found earlier, selecting all of the files inside it, and clicking Install.
  7. After the extensions are installed, you may need to restart VS Code by running the Developer: Reload Window command.

WPILib Tools

These are separate apps that are installed to your computer. They can be launched by finding where the app is located on your computer, or using the WPILib: Start Tool command in VS Code. Below is a list of all the different tools and what they’re used for.

Dashboards

Apps that are used to read data from the robot. For more info, see Choosing a Dashboard

  • SmartDashboard - (Driver Dashboard) Simplest dashboard that allows you to quickly log data values without using something archaic like System.out.println(). If you’ve ever used variables in Scratch before, SmartDashboard looks and behaves somewhat similarly to its variable monitors. Most (if not all) of the other dashboards on this list are able to view data from SmartDashboard via the NetworkTables API. Therefore, it’s arguably important to learn how to use SmartDashboard first.
  • Shuffleboard - (Driver/Programming Dashboard) A more modern and advanced dashboard. This app is best used to display important information about the robot to the driver; for example, whether the robot’s Swerve Drive is driving robot-orientated or field-orientated. It does this by viewing data from SmartDashboard (via NetworkTables).
  • Elastic - (Driver Dashboard) An alternative dashboard that serves the same purpose as Shuffleboard. It views data from SmartDashboard (via NetworkTables).
  • Glass - (Programming Dashboard) A dashboard built using the ImGui GUI library. It looks and works similarly to the Sim GUI when running robot simulations. It can be used to view data from SmartDashboard (via NetworkTables) in a more modern and advanced interface.
  • AdvantageScope - (Programming Dashboard) An advanced yet intuitive dashboard that has different specialized tabs that allow programmers to analyze data points about a robot during operation or afterwards. It can connect to several data sources, including:
    • NetworkTables - The API used by SmartDashboard
    • AdvantageKit - A bit more involved to set up, but it does have many benefits if your programmers need an in-depth way to analyze everything about the robot.
    • And a few more, which you can see in list located here.
Other Utilities

Various apps used for miscellaneous tasks. Some of their functionality may be available in the aforementioned dashboards.

  • RobotBuilder - A utility that can be used to make planning the robot easier. It can generate robot code, wiring diagrams, and more. It is used to plan the robot and its subsystems.
  • OutlineViewer - A utility used to view and modify the contents of the NetworkTables API. It is used for debugging purposes.
  • PathWeaver - A utility used to generate trajectories that control how the robot moves in Autonomous mode.
  • SysId - A utility that is used for System Identification. Basically, this tool accurately calculate exactly how much voltage is required to power a motor for simple motor setups, elevators, and arms. If this is too complicated, tried and true trial-and-error can get the trick done.
  • Data Log Tool - A utility used to download log files off of the roboRIO via SSH. It is a SFTP client.
    • Alternatives: You can download logs using AdvantageScope (read here).
  • roboRIO Team Number Setter - A simple utility that can be used to set the team number on a roboRIO, reboot a roboRIO, and enable/disable a roboRIO’s configuration webpage. That’s it.
    • Alternatives: You can set a roboRIO’s team number using the roboRIO Imaging Tool (read here)
  • WPIcal - A utility used to calibrate AprilTags on the field.

3rd party libraries

Although the breadth of WPILib is huge, it (obviously) can’t support managing 3rd party devices. Therefore, these 3rd party companies create software libraries that can be installed and supplement WPILib when programming.

Libraries can be installed by finding them in the “Available Dependencies” list under the “WPILib Vendor Dependencies” tab on VS Code. For more information, read 3rd Party Libraries.

Below is a list of libraries that we commonly use:

  • REVLib
  • CTRE-Phoenix (v6)
  • Studica

REVLib

Used to read data from and control certain REV Robotics devices.

Documentation

API Reference Documentation is available for:

Notably, we use REVLib for the following devices:

CTRE-Phoenix (v6)

Used to read data from and control certain CTRE Phoenix devices

Documentation API Documentation

API Reference Documentation is available for:

Notably, we use CTRE-Phoenix (v6) for the following devices:

Studica

Used to read data from and control certain Studica devices

Offline Installation for Java

API Reference Documentation is available for:

There is no comprehensive documentation, so you’ll just have to use these API reference docs.

Notably, we use Studica for the following devices:

Hardware utility software

This is a list of helpful software that are used to manage physical hardware from different companies. Listed here are the hardware utility software for REV Robotics, CTR Electronics (Phoenix Tuner X), and Studica/Kauai Labs.

REV Hardware Client

A utility app used to manage REV devices. It can update firmware for REV devices, manage configuration stored on those devices, and test a device while providing feedback via data and graphs (available via the Telemetry Tab)

Installation Documentation

Notably, we use REV Hardware Client for the following devices:

Phoenix Tuner X

A utility app for managing CTR Electronics devices. It can update firmware, manage configuration stored on those devices, test a device, and view data and graphs about a device.

Installation is available on:

Microsoft Store Google Play Store Apple App Store ($3.99)

I imagine the version on the Apple App Store is paid is because of Apple’s Developer Program that costs $99 annually. Just use the free versions for Windows and Android devices.

Documentation

Notably, we use Phoenix Tuner X for the following devices:

Studica Hardware Manager

A utility app that can be used to configure and update Studica devices.

For some reason, there is… LITERALLY no info about this software on the Internet. I’m not even sure how I found it (that’s a lie, I found it in the repository below). I’m not sure if this is unreleased beta software or something… but it’s VERY strange.

What’s also strange is that it appears to be an Electron app that—for some really strange reason—displays a website that is viewable at localhost:3000! Now I’ve never created an Electron app, but I know that there’s something really wrong here.

Direct download Repository

Documentation is located in-app under the “Help and Support” tab.

Alternatives:

Notably, we use Studica Hardware Manager for the following devices:

Supplemental software components

There are some software components that may not necessarily fit in any of the aforementioned categories or you may not end up using at all. They are listed here for breadth.

Microsoft Visual C++

Microsoft Visual C++ (MSVC) is used when building projects with WPILib. Yes, it is also used for Java projects. You can read more info about this topic here.

If you get an error complaining about an invalid MSVC runtime version and you’ve exhausted your options in the aforementioned documentation page, try installing the MSVC Redistributable and see if that fixes your problems.

Installation

You will probably install the version for x64 architecture. If you’re running 32-bit Windows, you’ll want the version for x86 architecture.

balenaEtcher

This is an app used to flash image files onto hardware devices like flash drives and SD cards. In the context of FRC, it is used to flash the firmware for the roboRIO onto a microSD card. The guide for doing this is available here.

Installation