Recent Updates

  • Updated on: Oct 24, 2014

    SmartDashboard namespace

    SmartDashboard uses NetworkTables to send data between the robot and the Dashboard (Driver Station) computer. NetworkTables sends data as name, value pairs, like a distributed hashtable between the robot and the computer. When a value is changed in one place, its value is automatically updated in the other place. This mechanism and a standard set of name (keys) is how data is displayed on the SmartDashboard.

    There is a hierarchical structure in the name space creating a set of tables and subtables. SmartDashboard data is in the SmartDashboard subtable and LiveWindow data is in the LiveWindow subtable as shown below.

    For informational purposes the names and values can be displayed using the TableViewer application that is installed in the same location as the SmartDashboard. It will display all the NetworkTable keys and values as they are updated.

  • You can change the type of widget that displays values with the SmartDashboard. The allowable widgets depend on the type of the value being displayed.

  • Updated on: Oct 24, 2014

    C++ WPILib API Documentation

  • Updated on: Sep 27, 2014

    Using the CAN subsystem with the RoboRIO

    Using CAN with the RoboRIO has many advantages over previous connection methods between the robot controller and peripheral devices.

    1. CAN connections are through a single wire that is daisy-chained between all the devices so home run wiring isn't required.
    2. Since this is protocol-based signaling the devices can be smart and accept higher level commands besides start, stop and set speed.
    3. Devices can report status back to the robot controller making it possible to have much better control algorithms with devices that use CAN.

    There are a number of CAN devices supported in the FRC control system:

    1. Jaguar speed controllers
    2. CAN-Talon speed controllers
    3. The Power Distribution Panel (PDP)
    4. The Pneumatics Control Module (PCM)

    The devices are typically connected to the RoboRIO CAN bus using twisted pair wiring (except the Jaguar which uses modular phone-style connectors).

  • Updated on: Sep 12, 2014

    Displaying LiveWindow values

    Typically LiveWindows are displayed as part of the automatically generated RobotBuilder code. You may also display LiveWindow values by writing the code yourself and adding it to your robot program. LiveWindow will display values grouped in subsystems. This is a convenient method of displaying whether they are actual command based program subsystems or just a grouping that you decide to use in your program.

  • If you are using the command-based programming features of WPILib, you will find that they are very well integrated with SmartDashboard. It can help diagnose what the robot is doing at any time and it gives you control and a view of what's currently running.

  • Updated on: Sep 12, 2014

    Testing commands

    Commands represent robot behaviors such as moving an elevator to a position, collecting balls, shooting, or other tasks. It is desirable to test commands on the robot as they are written before combining them into more complex commands or incorporating them into other parts of the robot program. With a single line of code you can display commands on the SmartDashboard that appear as buttons that run the commands when pressed. This makes robot debugging a much simpler process than before.

  • Each value displayed with SmartDashboard has a a set of properties that effect the way it's displayed.

  • Updated on: Sep 12, 2014

    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 (4 or six wheels) 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.

    Manual RobotBuilder
  • A common use case is to have a joystick that should drive some actuators that are part of a subsystem. The problem is that the joystick is created in the OI class and the motors to be controlled are in the subsystem. The idea is to create a command that, when scheduled, reads input from the joystick and calls a method that is created on the subsystem that drives the motors.

    In this example a drive base subsystem is shown that is operated in tank drive using a pair of joysticks.

    Manual RobotBuilder