显示来自机器人的数据

您的机器人可以在诸如遥测阶段和自动阶段模式之类的常规操作模式下显示数据,但是当机器人切换到“测试”模式时,您还可以显示状态并操作所有机器人子系统。默认情况下,启动Shuffleboard时,您会看到两个标签,一个用于遥测姐阶段 / 自动阶段,另一个用于测试模式。如下面的图片所示,当前选择的选项卡带有下划线。

通常,调试或监视机器的状态需要将许多数值写入控制台,并观察它们的流向。使用Shuffleboard,您可以将数值放到基于程序自动构建的GUI中。随着数值的更新,相应的GUI元素也会更改值-无需尝试捕获屏幕上流式传输的数字。

在正常操作模式下显示数值(自动阶段或遥测阶段)

protected void execute() {
   SmartDashboard.putBoolean("Bridge Limit", bridgeTipper.atBridge());
   SmartDashboard.putNumber("Bridge Angle", bridgeTipper.getPosition());
   SmartDashboard.putNumber("Swerve Angle", drivetrain.getSwerveAngle());
   SmartDashboard.putNumber("Left Drive Encoder", drivetrain.getLeftEncoder());
   SmartDashboard.putNumber("Right Drive Encoder", drivetrain.getRightEncoder());
   SmartDashboard.putNumber("Turret Pot", turret.getCurrentAngle());
   SmartDashboard.putNumber("Turret Pot Voltage", turret.getAverageVoltage());
   SmartDashboard.putNumber("RPM", shooter.getRPM());
}
frc::SmartDashboard::PutBoolean("Bridge Limit", bridgeTipper.AtBridge());
frc::SmartDashboard::PutNumber("Bridge Angle", bridgeTipper.GetPosition());
frc::SmartDashboard::PutNumber("Swerve Angle", drivetrain.GetSwerveAngle());
frc::SmartDashboard::PutNumber("Left Drive Encoder", drivetrain.GetLeftEncoder());
frc::SmartDashboard::PutNumber("Right Drive Encoder", drivetrain.GetRightEncoder());
frc::SmartDashboard::PutNumber("Turret Pot", turret.GetCurrentAngle());
frc::SmartDashboard::PutNumber("Turret Pot Voltage", turret.GetAverageVoltage());
frc::SmartDashboard::PutNumber("RPM", shooter.GetRPM());
from wpilib import SmartDashboard

SmartDashboard.putBoolean("Bridge Limit", bridgeTipper.atBridge())
SmartDashboard.putNumber("Bridge Angle", bridgeTipper.getPosition())
SmartDashboard.putNumber("Swerve Angle", drivetrain.getSwerveAngle())
SmartDashboard.putNumber("Left Drive Encoder", drivetrain.getLeftEncoder())
SmartDashboard.putNumber("Right Drive Encoder", drivetrain.getRightEncoder())
SmartDashboard.putNumber("Turret Pot", turret.getCurrentAngle())
SmartDashboard.putNumber("Turret Pot Voltage", turret.getAverageVoltage())
SmartDashboard.putNumber("RPM", shooter.getRPM())

您可以通过简单地为类型调用正确的方法,包括数据的名称和值,将布尔值,数字值或字符串值写入Shuffleboard,而无需其他代码。

  • 字符类型,例如char,int,long,float或double调用SmartDashboard.putNumber(“ dashboard-name”,value)。

  • 字符串类型调用SmartDashboard.putString(“ dashboard-name”,value)

  • 布尔类型调用SmartDashboard.putBoolean(“ dashboard-name”,value)

更改数据的显示类型

根据发送到Shuffleboard的值的数据类型,您通常可以更改显示格式。在前面的示例中,您可以看到数字值显示为十进制数字,更好地表示角度的刻度盘以及转塔电位计的电压视图。要设置显示类型,请在图块上单击鼠标右键,然后选择“显示为…”。您可以从弹出菜单的列表中选择显示类型。

在测试模式下显示数据

您可以将代码添加到程序中,让机器人在处于“测试”模式时显示传感器和执行器的值。只要机器人不在现场,都可以从机器操控台中进行选择。显示这些值的代码由RobotBuilder自动生成或手动添加到您的程序中,并在下一篇文章中进行介绍。测试模式旨在验证机器人上传感器和执行器的正确操作。此外,它还可以用于从电位计等传感器获取设定值,以及在代码中调整PID回路。

设定测试模式

通过单击“测试”按钮并在机械手上设置“启用”,在机器操控台中启用测试模式。执行此操作时,Shuffleboard将显示由子系统组织的程序所使用的任何执行器和传感器的状态。

从 Sources 中获取数据

通常 NetworkTables 数据会自动出现在其中一个选项卡上,您只需重新排列和使用该数据。有时您可能想要恢复从选项卡中意外删除的值或显示不属于 SmartDashboard / NetworkTables 键的值。对于这些情况,可以将值从窗口左侧的 Sources 下的 NetworkTables 视图拖到窗格上。选择要显示的值并将其拖到窗格中,它将使用该数据类型的默认小部件类型自动创建。

备注

有时左边的Sources视图不可见——可以拖动选项卡窗格和源之间的分隔符,这样源就不可见了。如果发生这种情况,将光标移到左边边缘,寻找调整大小的分隔符光标,然后左键单击并拖出视图。在下面的两张图片中,你可以看到点击和拖动的位置,完成后的分割线如图2所示。