步骤1: 描述你的机器人驱动器

注解

有关使用FRC角色化工具的详细说明,请参见 dedicated documentation

注解

驱动器表征过程需要足够的空间供机器人移动。确保至少有25.4厘米的空余空间(理想情况下接近50.8厘米),在表征过程中机器人可以在其中移动。

注解

该教程的特征数据由5190团队慷慨提供,该团队在2019年北卡罗来纳州立大学P2P研讨会上演示了此功能,以作为其功能的一部分。

在令机器人准确地按照路径移动之前,重要的是要有一个能让机器人准确响应控制输入的移动模型。确定这样一个模型的过程称为“系统识别”。“WPILib的frc特性是一种用于驱动系统识别的工具。

收集数据

我们首先收集驱动器特性数据。

  1. Generate a robot project.

  • 我们的示例项目使用“simple”项目类型。其他项目类型(如Talon和NEO)可以使用,没有太大区别;但是,无论项目类型如何,一定要正确指定所需的机器人参数!

  • WPILib的轨迹库假定普遍使用米为单位的距离-因此,请确保您的机器人的车轮直径以米为单位指定!

  1. Deploy the robot project.

  2. Run the Characterization Routine.

分析数据

一旦运行了特性描述例程并保存了数据文件,就可以进行:ref:open it in the analysis pane <docs/software/wpilib-tools/robot-characterization/analyzing-data:Analyzing Data>

检查诊断

根据:ref:FRC-Characterization guide <docs/software/wpilib-tools/robot-characterization/viewing-diagnostics:Viewing Diagnostics>,我们首先查看诊断以确保我们的数据看起来合理:

Combined Voltage-Domain Plots.

当我们的数据看起来相当线性并且阈值设置正确时,我们可以进入下一个步骤。

记录前馈增益

注解

一般来说,前馈增益不会在机器人之间转移。不要直接把本教程中的数据应用到自己的机器人上。

我们现在记录工具计算的前馈增益:

Highlights where to get the kS, kV, kA, and r-squared results from in the center of the window.

由于我们的车轮直径以米为单位,我们的前馈增益的单位如下:

  • kS: 伏特

  • kV:伏特*秒/米

  • kA:伏*秒^2 /米

如果你正确地指定了你的单位,你的前馈增益可能会在这里报告的一个数量级内(一个例外的“kA”可能存在,如果你的机器人很轻,它可能会小得难以察觉)。如果它们不是,则有可能是您在生成robot项目时指定的某个驱动器参数不正确。一个很好的测试方法是计算“kV”的“理论”值,即12伏电压除以传动系统的理论自由速度(反过来说,就是电机的自由速度乘以轮子的周长除以齿轮减速比)。这个值应该非常接近使用工具测量出的“kV”值-如果它们差距很大,你肯定在某处出错了。

计算反馈增益

注解

一般来说,反馈增益不会在机器人之间转移。不要直接把本教程中的数据应用到自己的机器人上。

现在,我们调用用于PID控制的 calculate the feedback gains 。WPILib的RAMSETE控制器遵循的轨迹使用速度闭环控制,因此我们首先在特征化工具中选择“速度”模式:

How to specify velocity mode in the "Loop Type" dropdown.

由于我们将在速度回路中使用WPILib PIDController,因此我们还从下拉式“预设”菜单中选择了“ WPILib(2020-)”选项。这非常重要,因为如果我们没有选择正确的预设,反馈增益的单位会出错:

Highlights choosing "WPILib (2020-)" from the "Gain Setting Preset" dropdown.

最后,我们计算并记录控制回路的反馈增益。由于它是一个速度控制器,只需要一个P增益:

Highlights the calculated kP and kD controller gains.

假设我们已正确完成所有操作,则比例增益将以伏特*秒/米为单位。因此,我们计算出的增益意味着,对于每秒每米的速度误差,控制器将额外输出8.5伏。