运动控制原理
目标命令不直接设置固定电机输出。 Extension模式下,主机提供目标和限制;每个伺服系统都会规划一条轨迹、测量运动并计算输出。本页解释了这些关系。使用 调音指南 进行实际序列。
扩展模式如何工作
主机是连接到舵机的计算机或控制器。它发送 目标 :目的地和速度限制。加速度和补偿设置在启用电机电源之前配置。每个舵机则:
- 计划顺利前往目的地。
- 测量其位置并估计其速度。
- 调整电机输出以遵循计划的运动。
- 运动完成时保持目的地。
任意时刻的计划位置和速度称为 参考 。控制器将它们与测量的运动进行比较,因此参考位置和实际位置可能不同。
本文档中使用的一些术语:
| 期限 | 含义 |
|---|---|
| 编码器计数 | 位置测量单元;名义上 4096 每转计数 |
| 电机输出指令 | 带符号的电机输出命令:其符号设置方向,其大小设置输出强度 |
| 控制增益 | 确定控制器响应强度的设置 |
| 前馈 | 根据预期需求计算额外的电机输出,而不是等待位置或速度错误 |
| 反馈 | 伺服返回的测量值和状态 |
| 寄存器 | 由数字标识的设置或读数 |
| 会话 | 一段分机控制,由主机提供的号码标识 |
电机输出指令以 PWM 单位表示,该单位用于控制电机的电力输出。该扩展允许任一方向的输出限制高达 1000 。这些值不是扭矩或电流的直接测量值。
S曲线运动
使加速和制动更加平缓。该曲线说明了随时间变化的加速度。概念图,不是测量的硬件数据。
S 曲线使加速度逐渐增大和减小。伺服系统不会突然施加完全加速或制动,而是轻松进出运动的每个部分。这可以减少机械震动和振动。
从休息到休息的完整运动有以下几个阶段:
| 阶段 | 会发生什么 |
|---|---|
| 1 | 加速度逐渐增大 |
| 2 | 舵机以稳定的速度加速 |
| 3 | 加速度逐渐减小至零 |
| 4 | 舵机以稳定速度移动 |
| 5 | 制动逐渐增强 |
| 6 | 伺服制动以稳定的速度进行 |
| 7 | 随着舵机停止制动逐渐减弱 |
当没有足够的距离来达到所请求的速度或加速度时,短距离移动会跳过阶段。加速和减速时适用相同的加速度限制。
ramp_time_ms 设置控制加速度从零上升到极限所需的时间。较长的坡道提供更温和的变化,但通常需要更多的时间和距离来加速或停止。
加加速度 表示加速度变化的速率。该规划器限制了加加速度,因此加速度变化平稳。混蛋本身仍然可以在阶段之间突然改变。其大致大小为:
jerk = 1000 × acceleration / ramp_time_ms [counts/s³]
移动过程中更改目的地
新目标从当前计划的运动继续,保留其位置、速度和加速度。再次发送相同的目的地不会重新启动移动。移动时保持相同的请求速度限制;一旦计划的运动停止,它就可以更改为下一步的运动。加速和斜坡时间属于配置,需要关闭电机电源并撤防会话才能更改。
保存的旧位置限制之外的目的地是 ,调整为最近的限制 。请求的速度也受到其配置限制的限制。伺服系统每次移动都会使用配置的加速度。零速度或配置的加速度无效。
整个计划的运动必须保持在位置限制之内。因此,如果伺服器已经接近极限太快而无法在其中停止,即使目的地本身是允许的,新的目标也会被拒绝。
到达目的地后,伺服电机在电机通电的情况下自动保持目的地。由于摩擦、负载、输出限制或调整,测量的位置可能仍然存在一些误差。保持继续修正位置误差;它不会将电机输出冻结在固定值。
每个伺服系统都计划自己的运动。一起发送多个目标并不能保证所有伺服系统同时到达。
共享仓位限制
传统和扩展控制使用相同的位置限制寄存器: 9 – 10 包含最小值, 11 – 12 包含最大值。每个都是校正编码器计数中的无符号 16 位值,包括伺服配置的方向和位置校正。没有单独的分机位置限制设置。
校准将编码器计数分配给物理位置。 校准工具 将捕获的参考位姿读取为 2048 ,然后测量行程限制。该计数不会自动成为零度关节角度,并且测量的行程中点不会替换捕获的参考。重力模型和可视化需要匹配的计数到角度映射。
固件在开始控制时读取这些寄存器。启用限制后,最小值必须低于最大值,最大值必须最多为 32767 ,并且测量位置必须在范围内。否则,在不移动电机的情况下启动会失败。规划器将整个运动(包括制动)保持在其读取的范围内。
相等的最小值和最大值会禁用行程限制 ,与传统行为相匹配。 Extension 命令仍保持在其支持的位置范围内:32767 至 32767 计数。
对任一限制的接受写入都会结束活动扩展会话并关闭电机电源,包括仅应用于 RAM 的写入。准备一个新会话以使用更改后的值。正常的旧设置持久性仍然适用。
PID控制器
调整伺服系统纠正位置误差的方式。灰色曲线表示振荡;白色曲线说明了更阻尼的响应。虚线是目标。概念图,不是测量的硬件数据。
PID 控制器调整电机输出以遵循计划的运动。它的三种设置有不同的作用:
| 设置 | 它的作用 | 主要权衡 |
|---|---|---|
| P — 位置修正 | 将电机拉向计划位置;较大的错误产生更多的纠正 | 较高的 P 可以减少误差,但也会引起振荡 |
| I — 累计修正 | 当错误仍然存在时建立额外的纠正 | 可以减少持久误差,但可能会增加超调或稳定时间 |
| D — 速度修正 | 对计划速度和测量速度之间的差异做出反应;按住时抵抗移动 | 可以改善阻尼,但对嘈杂的速度读数的过度响应可能会导致输出不均匀 |
计算公式为:
position error = planned position − measured position
speed error = planned speed − filtered measured speed
motor output = Kp × position error
+ Kd × speed error
+ accumulated I correction
+ gravity compensation
+ velocity feedforward
结果仅限于配置的最大输出。电机保护可以进一步减少它。反馈报告请求的输出和应用的输出,以便主机可以看到电机何时受到限制。
使用最近的位置读数和可调节滤波器对测量的速度进行平滑处理。 velocity_filter_q8 设置越大,对变化的响应速度越快,但消除的测量噪声越少。
防止累积校正过多
I 的贡献有其自身的局限性。控制器还可以防止其继续沿着电机输出已经受到限制的方向构建;这通常称为 抗饱和 。它仍然可以减少以帮助电机从该极限恢复。将 Ki 设置为零会禁用并清除 I 校正。
当伺服系统几乎静止至少 50 毫秒且位置误差在一个编码器计数范围内时,I 停止累加。 P、D 和两种形式的前馈保持活动状态。关闭电机输出会清除 I 校正。
速度前馈
根据伺服系统内部计算的计划速度添加电机输出。两条曲线随着时间的推移从左向右发展。概念图,不是测量的硬件数据。
速度前馈提供了在出现跟踪误差之前预计运动所需的一些输出。根据规划速度在伺服 内部计算出 :
velocity feedforward = velocity gain × planned speed
每个方向都有一个增益,并且对结果输出有限制。两个增益都是非负的;运动方向决定输出符号。其输出限制不得大于主电机输出限制。
由于伺服器知道自己的计划速度,因此补偿会自动跟随加速和制动,并在计划运动停止时变为零。主机仅提供其设置;它不需要发送连续的速度前馈值。
在电机电源关闭且会话撤防时,将此功能与 0xA0 中的其他设置一起配置。将增益及其输出限制设置为零以禁用它。
重力补偿
主机计算贡献,伺服器应用它。向下的箭头代表重量;向上的箭头代表支撑。概念图,不是测量的硬件数据。
重力补偿提供支撑手臂及其负载重量所需的输出。即使电机保持静止(速度前馈为零),它也很有用。
主机计算重力补偿并向每个舵机发送带符号的输出值。计算可以使用关节角度、臂尺寸、连杆重量和有效负载。主机必须将估计的负载转换为伺服器的输出单位。固件不包含手臂的型号。
方向很重要:正扩展输出随着编码器计数的增加而变化。手臂的关节角度约定可能会朝相反的方向运行,因此主机的转换必须考虑到这一点。
每个重力更新都包含所需的输出值。 转换速率 (补偿变化的速度,以每秒输出单位为单位)是主要配置的一部分,并在整个会话期间保持固定。
伺服系统逐渐将其补偿更改为请求值,并将其添加到控制器输出中。所有贡献仍然受到配置的输出限制和电机保护的影响。
如果重力更新停止到达,伺服系统将以其配置的转换速率继续执行最后请求的补偿,然后保持该值。 没有到期定时器。当手臂姿势或负载发生变化时,主机应更新补偿。将扭矩使能寄存器 40 设置为零可清除补偿并关闭电机输出。
将解释应用到调整中
如果短距离移动从未达到其要求的速度,则提高速度限制可能不会使其更快。长时间的输出饱和需要检查负载、轨迹和允许的工作量,而不仅仅是更高的增益。如果编码器遵循其参考值但工具错过了物理点,请检查校准、几何形状和机械结构。
区分 计划和测量的运动 和 的定位精度和重复精度 。上面的四个控制图和动画是概念性的,而不是测量的伺服图。




