RobotBuilder 概述

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

  • Generating boilerplate code.

  • Organize your robot and figure out what its key subsystems are.

  • Check that you have enough channels for all of your sensors and actuators.

  • Generate wiring diagrams.

  • Easily modify your operator interface.

  • More…

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

注解

RobotBuilder generates code using the new Command Framework. For more details on the new framework see 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面板,并拖到相应的子系统中。对于每一个传感器和执行器,通常都必须设置一些特定的属性,例如端口号和特定于组件的其他参数。

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

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

Commands are distinct goals that the robot will perform. These commands are added by dragging the command under the “Commands” folder. When creating a command, there are 7 choices (shown on the palette on the left of the picture):

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

  • Timed commands - these commands are a simplified version of a command that ends after a timeout

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

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

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

  • PID commands - these commands have a built-in PID controller to be used with a regular subsystem.

  • Conditional commands - these commands select one of two commands to run at the time of initialization.

有关更多信息,请参见创建指令<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

Each command can be run from Shuffleboard or SmartDashboard. This is useful for testing commands before you add them to the operator interface or to a command group. As long as you leave the “Button on SmartDashboard” property checked, a button will be created on the SmartDashboard. When you press the button, the command will run and you can check that it performs the desired action.

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

For more information see Testing with 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

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

Select the robot at the root of the RobotBuilder project (1), then edit the Autonomous Command property (2) to choose the command to run. It’s that simple!

For more information see Setting the Autonomous Commands.

生成代码

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

At any point in the process outlined above you can have RobotBuilder generate a C++ or Java program that will represent the project you have created. This is done by specifying the location of the project in the project properties (1), then clicking the appropriate toolbar button to generate the code (2).

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