模拟特定的用户界面元素

WPILib扩展了机器人仿真功能,以引入图形用户界面(GUI)组件。 这使团队可以轻松地可视化其机器人的输入和输出。

备注

模拟 GUI 在许多方面与:ref:Glass <docs/software/dashboards/glass/introduction:Introduction to Glass> 非常相似。下面的一些页面将链接到 Glass 部分,这些部分描述了两种 GUI 的共同元素。

运行GUI

通过 VS Code 运行模拟

You can simply launch the GUI via the Simulate Robot Code command palette option.

Picking Sim GUI simulation extension

And the Sim GUI option should popup in a new dialog and will be selected by default. Press Ok. This will now launch the Simulation GUI.

模拟GUI

警告

You may see a run button next to the WPILib button. This button does not set up simulation appropriately and should not be used. Instead, the menu item shown above WPILib: Simulate Robot Code should be used.

Run button to the left of the WPIlib Button

使用GUI

学习布局

有标签的模拟GUI

默认情况下,模拟GUI 上会显示以下项目:

  1. 机器人状态-这是机器人的当前状态或“模式”。 你可以单击标签来更改模式,就像在普通Driver Station上一样。

  2. 计时 - 显示机器人计时器的值并允许操纵计时。

  3. 系统操纵杆-这是当前连接到系统的操纵杆列表。

  4. FMS - This is used for simulating many of the common FMS systems.

  5. NetworkTables - 显示已发布到 NetworkTables 的数据。

  6. 操纵杆-这是可以直接从机器人代码中拉出的操纵杆。

  7. 其他设备 - 这包括不属于任何其他类别的设备,例如部件套件中包含的 ADXRS450 陀螺仪或支持模拟的第三方设备。

可以从硬件菜单添加以下项目,但默认情况下不显示。

  1. Addressable LEDs - 这显示了由“AddressableLED”类控制的 LED。

  2. 模拟输入-包括通常使用roboRIO上的** ANALOG IN **连接器的任何设备,例如任何基于模拟的陀螺仪。

  3. ** DIO -(Digital Input Output 数字输入输出)这包括使用roboRIO上的 DIO **连接器的所有设备。

  4. ** Encoders **-这将显示扩展或使用Encoder类的所有实例化设备。

  5. PDPs - 显示配电面板对象。

  6. PWM Outputs - This is a list of instantiated PWM devices. This will appear as many devices as you instantiate in robot code, as well as their outputs.

  7. 继电器-这包括任何继电器设备。 这包括VEX Spike继电器。

  8. 螺线管-这是“已连接”螺线管的列表。当你创建电磁对象并推动输出时,此处显示这些。

将系统操纵杆添加到操纵杆

要从系统操纵杆列表中添加操纵杆,只需在“系统操纵杆”菜单下单击并拖动显示的操纵杆到“操纵杆”菜单。

将操纵杆从系统操纵杆拖动到操纵杆

备注

FRC | reg | Driver Station对连接的游戏手柄进行特殊映射,并且WPILib仿真器默认不会“映射”这些手柄。 您可以通过按“操纵杆”菜单下的“映射手柄”开关来打开此行为。

将键盘用作操纵杆

您可以通过单击并拖动键盘项目之一(例如键盘 0)来将键盘添加到系统操纵杆列表中,就像上面的操纵杆一样。要编辑键盘设置,请转到菜单栏中的 DS 项,然后选择键盘 0 设置。这允许您控制哪个键盘按钮控制哪个轴。这是如何使键盘类似于 Xbox 控制器(使用轴 1 和 4)上的分体式街机驱动器的常见示例:

如何配置键盘使其类似于 Xbox 控制器。

修改ADXRS450输入

使用ADXRS450对象是测试基于陀螺仪的输出的绝佳方法。 这将显示在“其他设备”菜单中。 然后会显示一个下拉菜单,其中显示了各种选项,例如“ Connected”,“ Angle”和“ Rate”。 所有这些值都是可以更改的值,并且是你的机器人代码并可以即时使用。

../../../../_images/sim-gui-using-gyro.png

根据机器人代码确定模拟

如果在运行机器人仿真时供应商库无法编译,则可以使用“ RobotBase.isReal()”包装它们的内容,这将返回“布尔值”。

TalonSRX motorLeft;
TalonSRX motorRight;
public Robot() {
 if (RobotBase.isReal()) {
   motorLeft = new TalonSRX(0);
   motorRight = new TalonSRX(1);
 }
}

备注

在C ++中,重新分配值类型需要移动或复制分配。 除非使用指针而不是值类型,否则既不支持SIM又缺少移动或副本分配运算符的供应商类无法通过条件分配解决。

更改视图设置

“视图”菜单项包含可以自定义的“缩放”和“样式”设置。 “缩放”选项决定了应用程序中文本的大小,而“样式”选项则允许您在“标准”,“亮”和“暗”模式之间进行选择.

深色样式设置的例子如下:

../../../../_images/glass-dark-mode.png

清除申请数据

模拟 GUI 的应用程序数据,包括小部件大小和位置以及小部件的其他自定义信息,都存储在“imgui.ini”文件中。该文件存储在运行模拟的项目目录的根目录中。

imgui.ini 配置文件可以简单地删除以将模拟 GUI 恢复到“干净的状态”。