SmartDashboard Namespace
SmartDashboard 使用 NetworkTables 在机器人和仪表板(驱动站)计算机之间发送数据。NetworkTables 以名称、值对的形式发送数据,就像机器人和计算机之间的分布式哈希表。当一个值在一个位置更改时,它的值在另一个位置自动更新。这种机制和一组标准的名称(键)是如何在 SmartDashboard 上显示数据的。
名称空间中有一个层次结构,用于创建一组表和子表。SmartDashboard 数据位于 SmartDashboard 子表中,LiveWindow 数据位于 LiveWindow 子表中,如下所示。
为了提供信息,可以使用安装在与SmartDashboard相同位置的OutlineViewer应用程序显示名称和值。它将显示更新后的所有NetworkTables键和值。
智能仪表盘数据集
SmartDashboard 值是用以 ``SmartDashboard/` `开头的键名创建的。使用OutlineViewer 查看的上述值与放入 SmartDashboard 的数据相对应,其中包含以下语句:
chooser = new SendableChooser();
chooser.setDefaultOption("defaultAuto", new AutonomousCommand());
chooser.addOption("secondAuto", new AutonomousCommand());
chooser.addOption("thirdAuto", new AutonomousCommand());
SmartDashboard.putData("Chooser", chooser);
SmartDashboard.putNumber("Arm position in degrees", 52.0);
SmartDashboard.putString("Program Version", "V1.2");
The Arm position
is created with the putNumber()
call. The AutonomousCommand
is written with a putData("Autonomous Command", command)
that is not shown in the above code fragment. The chooser is created as a SendableChooser
object and the string value, Program Version
is created with the putString()
call.
智能仪表盘显示
上一步的代码生成如下所示的表值和如下所示的SmartDashboard显示。这些数字对应于前面步骤中显示的NetworkTables变量。
LiveWindow Data Values
LiveWindow 数据按子系统自动分组。当机器人处于测试模式(在驱动站上设置)时,可以在 SmartDashboard 中查看数据。如果您没有编写基于指令的程序,仍然可以通过指定子系统名称将传感器和执行器分组以便于查看。在上面的显示中,您可以在 SmartDashboard 上看到测试模式下的键名称和结果输出。所有字符串以 ``/LiveWindow` `开头,然后是子系统名称,然后是用于显示每个元素的一组值。生成此 LiveWindow 显示的代码如下所示:
drivetrainLeft = new PWMVictorSPX(1);
drivetrainLeft.setName("Drive train", "Left");
drivetrainRight = new PWMVictorSPX(1);
drivetrainRight.setName("Drive train", "Right";
drivetrainRobotDrive = new DifferentialDrive(drivetrainLeft, drivetrainRight);
drivetrainRobotDrive.setSafetyEnabled(false);
drivetrainRobotDrive.setExpiration(0.1);
drivetrainUltrasonic = new AnalogInput(3);
drivetrainUltrasonic.setName("Drive train", "Ultrasonic");
elevatorMotor = new PWMVictorSPX(6);
elevatorMotor.setName("Elevator", "Motor");
elevatorPot = new AnalogInput(4);
elevatorPot.setName("Elevator", "Pot");
wristPot = new AnalogInput(2);
wristPot.setName("Wrist", "Pot");
wristMotor = new PWMVictorSPX(3);
wristMotor.setName("Wrist", "Motor");
clawMotor = new PWMVictorSPX(5);
clawMotor.setName("Claw", "Motor");
不仅显示与执行器对应的值,还可以在 Test 模式下使用 SmartDashboard 中创建的滑块进行设置。