Recent Updates

  • Updated on: Jul 18, 2018

    Creating a new WPILib project in VSCode

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

    Installing VSCode

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

    VSCode Basics and WPILib in VSCode

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

    Driving a robot using Mecanum drive

  • Updated on: Jun 18, 2018

    Driving a robot using Mecanum drive

    Mecanum drive is a method of driving using specially designed wheels that allow the robot to drive in any direction without changing the orientation of the robot. A robot with a conventional drivetrain (all wheels pointing in the same direction) must turn in the direction it needs to drive. A mecanum robot can move in any direction without first turning and is called a holonomic drive.

  • 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.

  • Updated on: Jun 14, 2018

    FRC CAN Addressing

  • Updated on: Jun 14, 2018

    WPILib Drive classes: Drivetrain types