A reverse-engineered lightweight FRC Driver Station alternative for Windows, Linux, and macOS.
Download the stable jar from here and run. There are no additional dependencies.
You must have Java (JRE or JDK) 8 or newer installed (download here) and at minimum be running a 64-bit version of one of the following operating systems:
If you do not have Java and/or want a single install/run script, download this script instead and use it to start OpenDS. Use the same script to re-launch OpenDS.
OpenDS is a fully functional FIRST Robotics Competition (FRC) Driver Station alternative for Windows, Linux, and macOS systems. All the features of the official Driver Station are implemented in OpenDS, meaning teams can use it in the place of the official Driver Station when testing robot features away from the competition.
OpenDS is extremely lightweight (about 0.25 MB) and does not require an installation of any kind, unlike the official Driver Station which has a lengthy installation process and heavy install footprint.
NOTE: OpenDS may not be used during FRC-legal competitions as per rules R710 and R901 (previously R66 and R88). OpenDS is intended for testing use only.
Some features of OpenDS can be passed through to the program directly from the command line, without needing to click any part of the GUI. Note that all Boolean type parameters do not require a value to follow the parameter flag.
Parameters can be used as follows: java -jar open-ds.jar [parameters]
The complete reference of current parameters can be found below.
Name | Flag | Datatype | Options |
---|---|---|---|
Alliance Color | --alliance-color | String | Red, Blue |
Alliance Number | --alliance-num | Integer | 1, 2, 3 |
Debug | --debug | Boolean | |
Disable Hotkeys | --disable-hotkeys | Boolean | |
Disable Log File | --disable-log | Boolean | |
Disable Network Tables | --disable-nettables | Boolean | |
Connect to FMS | --fms | Boolean | |
Game Data | --game-data | String | |
Headless | --headless | Boolean | |
Protocol Year | --protocol-year | Integer | [list of supported years] |
Robot Drive Mode | --robot-mode | String | Teleoperated, Autonomous, Test |
Team Number | --team-num | Integer | |
Connect via USB | --usb | Boolean |
The source code for OpenDS is available on GitHub at https://github.com/Boomaa23/open-ds.
OpenDS may be used without restriction for the purpose of testing robots by teams and individuals. Please see the license for further uses.
If you find a bug or issue with OpenDS, please report it on the "Issues" section of the GitHub here.
For protocol changes in future years, OpenDS is easily modifiable. Ports, IP addresses, display layouts, and packet creation/parsing are all re-formattable.
There are three main classes that need to be implemented for a new protocol year:
The SendTag and ReceiveTag classes should be fully updated for the additional years' sent and received (from the perspective of the driver station) tags. Use Null[Send/Receive]Tag if none, or Ref[Send/Receive]Tag.yearOfAction(int year) if it is the same as another year. Consider using the DataBase system for year-centric data storage and identification.
Make sure that naming schemes are followed. Add another integer entry to the array DisplayEndpoint:VALID_PROTOCOL_YEARS when all three main classes have been created. This will allow the selection of the new protocol by the user. Put in decreasing year order.