Recent Updates

  • Updated on: Sep 11, 2018

    Pneumatics Control Module

    The Pneumatics Control Module (PCM) is a CAN-based device that provides complete control over the compressor and up to 8 solenoids per module. The PCM is integrated into WPILib through a series of classes that make it simple to use. The examples shown here are for Java programs, the C++ classes have the same names except for the method capitalization, following the same conventions as used throughout the rest of WPILib.

    Moving from the old Compressor and Solenoid classes should be fairly easy. The closed loop control of the Compressor and Pressure switch is handled by the PCM hardware and the Solenoids are handled by the upgraded Solenoid class that now controls the solenoid channels on the PCM.

    An additional PCM module can be used where the modules corresponding solenoids are differentiated by the module number in the constructors of the Solenoid and Compressor classes.

  • Often debugging or monitoring the status of a robot envolves writing a number of values to the console and watching them stream by. With SmartDashboard you can put values to a GUI that is automatically constructed based on your program. As values are updated, the corresponding GUI element changes value - there is no need to try to catch numbers streaming by on the screen.

  • Updated on: Sep 11, 2018

    What is NetworkTables

  • Updated on: Sep 11, 2018

    Using Generated Code in a Robot Program

  • Updated on: Jul 31, 2018

    Driver Station Log File Viewer

  • Updated on: Jul 31, 2018

    Driver Station Log File Viewer

    In an effort to provide information to aid in debugging, the FRC Driver Station creates log files of important diagnostic data while running. These logs can be reviewed later using the FRC Driver Station Log Viewer. The Log Viewer can be found via the shortcut installed in the Start menu or in the FRC Driver Station folder in Program Files.

  • Manual FRC 2019 Beta
  • Updated on: Jul 24, 2018

    Alpha Test Info

    Manual FRC 2019 Beta
  • Updated on: Jun 16, 2018

    Scheduling commands

  • Updated on: Jun 16, 2018

    Scheduling commands

    Commands are scheduled to run based on a number of factors such as triggers, default commands when no other running commands require a subsystem, a prior command in a group finishes, button presses, autonomous period starting, etc. Although many commands may be running virtually at the same time, there is only a single thread (the main robot thread). This is to reduce the complexity of synchronization between threads. There are threads that run in the system for systems like PID loops, communications, etc. but those are all self contained with very little interaction requiring complex synchronization. This makes the system much more robust and predictable.

    This is accomplished by a class called Scheduler. It has a run() method that is called periodically (typically every 20ms in response to a driver station update) that tries to make progress on every command that is currently running. This is done by calling the execute() method on the command followed by the isFinished() method. If isFinished() returns true, the command is marked to be removed from execution  on the next pass through the scheduler. So if there are a number of commands all scheduled to run at the same time, then every time the Scheduler.run() method is called, each of the active commands execute() and isFinished() methods are called. This has the same effect as using multiple threads.