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.

../../../../_images/livewindow.png

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:

Gyro widget with both text and dial visualizations of the current gyro angle. Current Gyro Angle in degrees is -60.9704.

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:

SmartDashboard.putData("Auto Selector", m_selector);
frc::SmartDashboard::PutData("Auto Selector", &m_selector);
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.

../../../../_images/sendable-chooser.png

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:

SmartDashboard.putData("Elevator PID Controller", m_elevatorPIDController);
frc::SmartDashboard::PutData("Elevator PID Controller", &m_elevatorPIDController);
from wpilib import SmartDashboard
SmartDashboard.putData("Elevator PID Controller", elevatorPIDController)

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

PID widget for the Elevator PID Controller. P = 3.0, I = 0.001, D = 0.050, Setpoint = 0.0.

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.

../../../../_images/fms-info.png