EV3 MicroPython 指南

EV3 MicroPython 指南 > 工程附加 > 关于电机

关于电机

Control 类

Motor 类使用 PID 控制来准确跟踪命令的目标角度。同样,DriveBase 类使用两个这样的控制器:一个用于控制航向,一个用于控制行驶距离。

您可以通过以下属性更改控件设置,这些属性是下面给出的 Control 类的实例。

  • Motor.control
  • DriveBase.heading_control
  • DriveBase.distance_control

您只能在控制器停止时更改设置。例如,您可以在程序开始时设置设置。或者,首先调用 stop() 以使您的 Motor 或 DriveBase 停止,然后更改设置。

class Control

与 PID 控制器和设置交互的类。

scale

受控整数变量与物理输出之间的缩放因子。例如,对于单个电机,这是每旋转度的编码器脉冲数。

状态

done()

检查是否完成了正在进行的命令或作。

返回: 如果命令已完成,则为 True,如果未完成,则为 False。
返回类型: bool 

stalled()

检查控制器当前是否处于失速状态。

当控制器无法达到目标速度或位置时,即使使用最大驱动信号,控制器也会失速。

返回: 如果控制器停止,则为 True,如果没有,则为 False。
返回类型: bool 

设置

limits(speedaccelerationactuation)

配置最大速度、加速度和驱动。

如果未给出参数,这将返回当前值。

参数:
  • 速度 ( 转速:deg/s 或速度:mm/s)——最大速度。所有速度命令都将限制为此值。
  • 加速度 ( 旋转加速度:deg/s/s 或线性加速度:mm/s/s)——最大加速度。
  • 驱动( 百分比:%)——最大驱动值占绝对最大值的百分比。

pid(kpkikdintegral_rangeintegral_ratefeed_forward)

获取或设置位置和速度控制的 PID 值。

如果未给出参数,这将返回当前值。

参数:
  • kp (int) – 比例位置(或积分速度)控制常数。
  • ki (int) – 积分位置控制常数。
  • kd (int) – 导数位置(或比例速度)控制常数。
  • integral_range( 角度:度或距离:毫米 )——目标角度或距离周围的区域,其中累积了积分控制误差。
  • integral_rate( 转速:deg/s 或速度:mm/s)——允许误差积分增长的最大速率。
  • feed_forward( 百分比:%)——这会在速度参考方向上向 PID 反馈信号添加前馈信号。该值表示为绝对最大占空比的百分比。

target_tolerances(speedposition)

获取或设置指示何时完成作的公差。

如果未给出参数,这将返回当前值。

参数:
  • 速度 ( 转速:deg/s 或速度:mm/s)——在运动被视为完成之前允许的与零速度的偏差。
  • 位置 ( 角度:度或距离:毫米 )——在运动被视为完成之前允许与目标的偏差。

stall_tolerances(speedtime)

获取或设置失速容差。

如果未给出参数,这将返回当前值。

参数:
  • 速度 ( 转速:deg/s 或速度:mm/s)——如果控制器即使在最大驱动下也无法达到此速度一段时间,则它会熄火。
  • 时间 ( 时间:毫秒 ) – 控制器必须低于此最低速度多长时间才能说它失速。