RobotBuilder 概述

RobotBuilder 是旨在帮助机器人开发过程的应用程序。 RobotBuilder 可以帮助您:

  • 生成样板代码。

  • 组织你的机器人并找出它的关键子系统是什么。

  • 检查您的所有传感器和执行器是否有足够的通道。

  • 生成接线图。

  • 轻松修改您的操作员界面。

  • 更多

通过遵循对于任何机器人都相同的几个步骤,使用RobotBuilder创建程序是非常简单的过程。本课描述了您可以执行的步骤。您可以在本文档的后续部分中找到有关每个步骤的更多详细信息。

备注

RobotBuilder 使用新的指令框架生成代码。有关新框架的更多详细信息,请参阅:ref:基于指令的编程 <docs/software/commandbased/index:Command-Based Programming>

将机器人划分为不同的子系统

../../../../../_images/robotbuilder-overview-1.png

您的机器人是由许多较小的系统组成的,例如动力传动系统,手臂,射手,收集器,机械手,腕关节等。您应该研究一下机器人的设计并将其分解成较小的,可单独操作的子系统。在这个特定的例子中,有一个升降舵,一个小型机器人对准装置,一个抓具和一个摄像系统。另外,可能包括驱动器基座。机器人的这些部分中的每一个都受到单独控制。

有关更多信息,请参阅创建子系统<robotbuilder-creating-subsystem>。

将每个子系统添加到项目

../../../../../_images/robotbuilder-overview-2.png

每个子系统将被添加到RobotBuilder的“ Subsystems”文件夹中,并赋予一个有意义的名称。对于每个子系统,都有几个属性被填充以指定有关子系统的更多信息。另外,您可能要创建两种类型的子系统:

  1. PIDSubsystems-通常希望使用PID控制器控制子系统的运行。这是程序中的代码,可使子系统,例如手臂角度,更快地到达所需位置,然后在到达所需位置时停止。 PIDSubsystems内置了PID控制器代码,通常比自己添加起来更方便。 PIDSubsystems具有确定设备何时到达目标位置的传感器和驱动至设定点的执行器(电动机控制器)。

  2. 常规子系统-这些子系统没有集成的PID控制器,用于没有PID控制的子系统来进行反馈,或者用于需要比默认嵌入式PID控制器更复杂的控制的子系统。

当您仔细阅读本文档的更多内容时,不同类型的子系统之间的差异将变得更加明显。

有关更多信息,请参见创建子系统<robotbuilder-creating-subsystem>和创建子系统<docs/software/wpilib-tools/robotbuilder/writing-code/robotbuilder-writing-subsystem-code:Writing the Code for a Subsystem>的代码。

向每个子系统添加组件

../../../../../_images/robotbuilder-overview-3.png

每个子系统都包含许多执行器,传感器和控制器,用于执行其操作。这些传感器和执行器将添加到与其关联的子系统。每个传感器和执行器均来自RobotBuilder面板,并拖到相应的子系统中。对于每一个传感器和执行器,通常都必须设置一些特定的属性,例如端口号和特定于组件的其他参数。

在此示例中,有一个升降舵系统,该子系统使用已拖动到电梯子系统的电动机和电位计(电动机和电位计)。

添加描述子系统目标的命令

指令是机器人将执行的不同目标。这些指令是通过拖动“命令”文件夹下的指令来添加的。创建指令时,有7种选择(如图左侧的调色板所示):

  • 普通指令-这是最灵活的指令,您必须编写所有代码才能执行实现目标所需的所需动作。

  • 定时指令 - 这些指令是在超时后结束的指令的简化版本

  • Instant commands - these commands are a simplified version of a command that runs for one iteration and then ends

  • 指令组-这些指令是按顺序和并行运行的其他命令的组合。在您实现了许多基本指令之后,可以使用这些指令建立更复杂的操作。

  • 设定设定值值指令-指令将PID子系统移动到固定的设定值或所需的位置。

  • PID 指令- 这些指令有一个内置的 PID 控制器,可与常规子系统一起使用。

  • 条件指令 - 这些指令选择在初始化时运行的两个指令之一。

有关更多信息,请参见创建指令<robotbuilder-creating-command>和编写指令代码<docs/software/wpilib-tools/robotbuilder/writing-code/robotbuilder-writing-command-code:Writing the Code for a Command>。

测试每个命令

../../../../../_images/robotbuilder-overview-4.png

每个指令都可以从 Shuffleboard 或 SmartDashboard 运行。这对于在将指令添加到操作员界面或指令组之前测试命令非常有用。只要您选中“SmartDashboard 上的按钮”属性,就会在 SmartDashboard 上创建一个按钮。当您按下按钮时,该指令将运行,您可以检查它是否执行了所需的操作。

通过创建按钮,可以分别测试每个指令。如果所有指令可以单独运行,则可以确定机器人将可以整体运行。

有关更多信息,请参阅:doc:使用 Smartdashboard 进行测试

添加操作界面组件

../../../../../_images/robotbuilder-overview-5.png

操作界面由操纵杆,手柄和其他HID输入设备组成。您可以在RobotBuilder中的程序中添加操作界面组件(操纵杆,操纵杆按钮)。它将自动生成将初始化所有组件并将其连接到特定的指令。

将操作界面组件从面板拖到RobotBuilder程序中的“ Operator Interface”文件夹中。首先(1)将操纵杆添加到程序中,然后将按钮放在关联的操纵杆下方(2),并给它们起有意义的名称,例如ShootButton。

将指令连接到操作界面

../../../../../_images/robotbuilder-overview-6.png

可以将指令与按钮关联,以便在按下按钮时执行指令。在大多数情况下,此方法可以处理机器人程序的大部分远程操作部分。

只需通过(1)将指令添加到RobotBuilder程序中的JoystickButton对象,然后(2)设置运行指令的条件,即可完成此操作。

有关更多信息,请参见将操作界面连接到指令<robotbuilder-operator-interface-to-command>`。

开发自动命令

../../../../../_images/robotbuilder-overview-7.png

不同的指令使开发自动程序变得简单。您只需指定当机器人进入自动阶段应运行的指令,它将自动进行调度。如果您如上所述测试了指令,则只需选择要运行的指令即可。

选择 RobotBuilder 项目 (1) 根目录下的机器人,然后编辑自动阶段指令 属性 (2) 以选择要运行的指令。就是这么简单!

有关更多信息,请参阅:doc:设置自动阶段指令

生成代码

../../../../../_images/robotbuilder-overview-8.png

在上述过程中的任何时候,您都可以让 RobotBuilder 生成一个 C++ 或 Java 程序来代表您创建的项目。这是通过在项目属性 (1) 中指定项目的位置,然后单击相应的工具栏按钮生成代码 (2) 来完成的。

有关更多信息,请参阅: Generating RobotBuilder Code “<docs/software/wpilib-tools/robotbuilder/writing-code/robotbuilder-generating-code:Generating Code for a Project>”