SDK电机#

SDK提供了几种控制和与电机通信的方法,以及一些可以轻松访问的隐藏方法。

一般解释#

电机控制器#

所有电机端口都由所谓的H桥电机控制器控制,该电路可用于改变输出电压以及电压的标志(负或正)。通过DC的负电压使电机反转,而正电机将使电机前进。SDK电机功率(从-1到1)表示通过电机端口输出的输入电压的乘数。不同的电压通过PWM创建,其中端口快速打开和关闭以创建较低的平均电压。

此外,可以配置电机的零功率行为,即电机在没有施加电源时的行为。在FLOAT模式下,电机控制器简单地关闭,提供最小的附加电阻。在BRAKE模式下,两个电机引线在内部一起短路。由于所有DC有刷电机在轴旋转时都产生电力的固有特性,短路引线会导致反向功率,从而快速停止电机并抵抗外力。

备注

电机控制器使用输入电压,这意味着在13伏电池上,将功率设置为1将产生13伏的输出电压。类似地,在11伏电池上,功率为1将产生11伏的输出电压。

电机编码器#

重要

在处理正交编码器时,没有真正标准化的术语。在这里,我们使用术语“count”和“tick”来表示正交波中的单个上升或下降动作。你可能还会看到一些数据表列出了“pulse”,它可以表示从1个“count”到4个“count”的任何内容。阅读数据表时要小心!

FTC® 编码器使用双线正交格式传输相对编码器信息。在正交格式中,有两根信号线 A 和 B。移动时,A 和 B 产生相距 90 度的方波,即一个方波从另一个方波的一半处开始,到另一个方波的一半处结束。向一个方向移动时,A 线方波领先于 B 线方波,向另一个方向移动时,B 线方波领先于 A 线方波。这两个波通过 XOR 组合产生输出波,其中每个上升和下降动作为一个 “tick”,波速越快,编码器的移动速度越快。

REV集线器通过使用5值“环形缓冲区(ring buffer)”来计算脉冲和速度,该缓冲区每10毫秒添加一个新值。然后使用这5个值来计算当前速度。

警告

建议将正交编码器连接到特殊的硬件解码端口,以允许正确读取它们。扩展集线器包含用于读取正交编码器的特殊硬件,但由于只有其中两个控制器,因此其中两个引脚连接在“软件”中(端口在软件中而不是在硬件中解码)。实际上,这意味着端口0和3,连接到特殊正交端口的两个端口,将始终准确读取。端口1和2连接到不太准确的“软件”端口,这意味着使用高CPR编码器(每转产生超过4000个计数的编码器,例如REV直通孔编码器或Talon SRX编码器),它们可以“失步”和漂移。

正交波的一个示例,包括 A 频道和 B 频道。波被分成四段,每段为一个tick。

正交波的一个例子,C形梁 A 领先于C形梁 B,每个计数都是一个 “count “或 “tick”。#

隐藏方法#

DcMotorEx#

所有REV轮毂DC电机都是DcMotorEx的实例,它向用户提供了更多方法,例如速度控制和电流消耗测量。

备注

使用DcMotorEx没有缺点,为了将DcMotorEx转换为DcMotorEx,用户只需将hardwareMap返回的DcMotorEx转换为DcMotorEx。

提示#

  • 虽然当前读数不是批量读取,但当前警报(isMotorOverCurrent())是批量读取。

  • PID/PIDF系数使用内部单位作为输出,从-32767到32767短两个字节,而不是用户-1到1。

  • 默认的getVelocity()方法以每秒刻度为单位返回编码器速度。

  • 该RunMode STOP_AND_RESET_ENCODERS实际上并不是运行模式。相反,它只是将功率设置为零并发送一个LynxResetMotorEncoderCommand。如果想要在不改变运行模式的情况下轻松重置电机编码器,可以手动发出此命令。