A library for FIRST Robotics Competition robots that makes it easier to write and test your robot code.
Java Other
Latest commit dc1914a Jun 14, 2017 @rhauch rhauch committed on GitHub Merge pull request #112 from rothso/switchreactor-patch
Fix SwitchReactor's onUntriggeredSubmit
Failed to load latest commit information.
ant Removed the non-test related Ant targets Jan 3, 2017
ide-config Initial commit with a completely refactored framework inspired by the… May 22, 2015
libs Added support for automated continuous integration using Travis-CI.org Oct 19, 2015
strongback-examples Issue 80 - Added library support for the navX-MXP Jan 3, 2017
strongback-testing fixed mock solenoid retract method Jan 18, 2017
strongback-tests Corrected checkTolerance and fixed initTable in SoftwarePIDController Feb 6, 2017
strongback-tools Issue 72: Corrected the data logging and decoding Mar 5, 2016
strongback Fix SwitchReactor's onUntriggeredSubmit Jun 14, 2017
templates NewProject command automatically looks for and adds Strongback user l… Oct 18, 2015
.gitignore Issue 80 - Added library support for the navX-MXP Jan 3, 2017
.travis.yml Corrected Ant distribution filename Feb 8, 2017
CONTRIBUTING.md Added CONTRIBUTING.md file with instructions for contributing code Jan 4, 2017
CONTRIBUTORS.txt Released 2017.2.0 Feb 11, 2017
COPYRIGHT.txt Prepare for 2017.1.0 release and removed use of deprecated APIs Jan 3, 2017
LICENSE.txt Initial commit with a completely refactored framework inspired by the… May 22, 2015
README.md Merge pull request #88 from rhauch/2017-beta Jan 7, 2017
build-common.xml Issue 80 - Added library support for the navX-MXP Jan 3, 2017
build.properties Released 2017.2.0 Feb 11, 2017
build.xml Correctly download and use 3rd party dependencies Jan 6, 2017
dependencies.xml Create Ant-based build system Oct 16, 2015
strongback.properties Create Ant-based build system Oct 16, 2015


MIT License Build Status User chat Developer chat Google Group Stack Overflow

Copyright Strongback Authors. Licensed under the MIT License.

Using Strongback

Our Using Strongback online book has all the information you need to download and start using Strongback on your FRC robot, and the library is available on our releases page. Our overview presentation is an alternative introduction that touches on all the major features.

If you have questions or want to get involved in the project, post to our online discussion forums.

What is Strongback?

Strongback is a new open source software library that makes your robot code lighter and stronger. You use it along with the WPILib library on your FIRST Robotics Competition robot's RoboRIO, but Strongback's APIs and functionality mean you need less code to do more. Plus, Strongback makes it easier for you to test your code without robot hardware and can record real-time data while you operate your robot for later post-processing.

  • Testable - Test more of your robot code on development machines without requiring any real robot hardware.
  • Simple API - Uses powerful language features of Java 8 to reduce and simplify code while retaining flexibility.
  • Hardware abstractions - Abstractions for common actuators, sensors, user controls, and other devices make it easy to use hardware implementations on the real robot and mock implementations for testing.
  • Execution framework - Run multiple functions on a fixed schedule on a separate thread. Very precise and accurate timing is suitable for control systems.
  • Command framework - An improved, simplified, and testable command framework that reliably executes commands on a very consistent schedule.
  • Data and event recorder - Record in real time the input and output signals from the RoboRIO, button presses, changes in command state, and other robot-specific events. Post-process the data off-robot (or in the future do it in real time).
  • Logging - Simple extendable framework to log messages at different levels.
  • Uses WPILib - Uses the WPILib classes underneath for safety and consistency.

Building locally

If you want to build Strongback locally, you will need to have installed JDK 1.8, Eclipse Mars (version 4.5.0 or later), Ant 1.10.0 or later, and Git 2.2.1 or later. Then, use Git to clone this repository (or your GitHub fork). Before importing into Eclipse, build the code and run the unit tests using Ant:

$ ant test

This will download the appropriate version of WPILib and install it into the libs directory, and then compile all the code and run the unit tests. Once this works, you know your environment is set up correctly, and you can proceed to import the projects into your Eclipse workspace and view or make changes to the library and/or tests using Eclipse. At any time, you can run Ant to compile, test, or create distribution files. For help with Ant, run ant help to see the available targets and their descriptions.

If you have any problems getting this far, please check our developers discussion forum to see if others are having similar problems. If you see no relevant discussion, post a question with the details about your platform, the versions of the tools, what you are trying to do, and what result you are getting.


To release a new version of Strongback:

  1. Change the strongback.properties file to reference the correct version number, and commit that to the repository.
  2. Build the distribution by running ant release and verifying it completed correctly.
  3. Go to the Strongback releases page and draft a new release, filling in the correct release candidate version number as the tag (e.g., v2017.1.0.RC1 for "release candidate 1") and giving an appropriate release title (e.g., 2017.1.0.RC1) and description, and uploading the ZIP and compressed TAR file in the build directory. Then check "This is a pre-release" and press "Publish Release".
  4. Notify the developer forum so that other community members can test the release candidate by downloading and unpacking the pre-release distribution into their local home directory, using it in one or more robot codebases, and verifying the robots behave as expected. Each community member that tests it locally should respond to your forum post with their results.
  5. If the pre-release distribution has problems that need to be fixed, they should be reported, fixed, and merged into the correct branch, and then go to Step 3 using a new pre-release tag (e.g., v2017.1.0.RC2) and title (e.g., 2017.1.0.RC2).
  6. When enough community members have verified the pre-release distribution is acceptable, go to the Strongback releases page and create a new release with the same tag as the pre-release, but with the appropriate release tag (e.g., v2017.1.0), title (e.g., 2017.1.0) and description. Do not check "This is a pre-release" and press "Publish Release".