- FRC Game Manual
- FRC Game Q&A

# Glass Widgets

Specialized widgets are available for certain types that exist in robot code. These include objects that are manually sent over NetworkTables such as `SendableChooser` instances, or hardware that is automatically sent over LiveWindow.

Note

Widget support in Glass is still in its infancy – therefore, there are only a handful of widgets available. This list will grow as development work continues.

Note

A widget can be renamed by right-clicking on its header and specifying a new name.

## Hardware Widgets

Widgets for specific hardware (such as motor controllers) are usually available via LiveWindow. These can be accessed by selecting the NetworkTables menu option, clicking on LiveWindow and choosing the desired widget.

The list of hardware (sent over LiveWindow automatically) that has widgets is below:

- `DigitalInput`

- `DigitalOutput`

- `SpeedController`

- `Gyro`

Here is an example of the widget for gyroscopes:

## Sendable Chooser Widget

The Sendable Chooser widget represents a `SendableChooser` instance from robot code. It is often used to select autonomous modes. Like other dashboards, your `SendableChooser` instance simply needs to be sent using a NetworkTables API. The simplest is to use something like `SmartDashboard`:

JAVA

    SmartDashboard.putData("Auto Selector", m_selector);

C++

    frc::SmartDashboard::PutData("Auto Selector", &m_selector);

PYTHON

    from wpilib import SmartDashboard
    SmartDashboard.putData("Auto Selector", selector)

Note

For more information on creating a `SendableChooser`, please see this document.

The Sendable Chooser widget will appear in the NetworkTables menu and underneath the main table name that the instance was sent over. From the example above, the main table name would be SmartDashboard.

## PID Controller Widget

The PID Controller widget allows you to quickly tune PID values for a certain controller. A `PIDController` instance must be sent using a NetworkTables API. The simplest is to use something like `SmartDashboard`:

JAVA

    SmartDashboard.putData("Elevator PID Controller", m_elevatorPIDController);

C++

    frc::SmartDashboard::PutData("Elevator PID Controller", &m_elevatorPIDController);

PYTHON

    from wpilib import SmartDashboard
    SmartDashboard.putData("Elevator PID Controller", elevatorPIDController)

This allows you to quickly tune P, I, and D values for various setpoints.

## FMSInfo Widget

The FMSInfo widget is created by default when Glass connects to a robot. This widget displays basic information about the robot’s enabled state, whether a Driver Station is connected, whether an FMS is connected, the game-specific data, etc. It can be viewed by selecting the NetworkTables menu item and clicking on FMSInfo.