sentry_gimbal_hzz/.Doc/合理地进行PID参数整定.md

3.6 KiB
Raw Permalink Blame History

利用Ozone进行model-based PID tunning

Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们观察控制器在时域的表现,典型的有上升时间、超调量和稳态时间等。

调试顺序

先内环,后外环。若有已知的外部扰动如阻力、重力等可以在保持kp不变的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为前馈作用通过feedforward_ptr一同送入下一个串级控制器。在没有模型的时候计算前馈一般通过数据驱动的方法,如稳态误差-参考值关系拟合。

经典的经验式整定方法有简单的Ziegler-Nicols法和Cohen-Coon法还有需要一定的系统辨识的Chien-Hrones-Reswick、Tyreus-Luyben和Skogestad法。这些方法在网络上或提出方法的论文中都有详尽的说明这里不再赘述。

我们可以使用上述方法确定一套参数的初值,再根据时域表现进行精细的参数调整。

以笔者个人的纯调参无模型云台调试经验,可以进行如下步骤:

  1. 首先整定P参数使用二分法确定大致范围。将电机参考速度和实际速度在Ozone示波器同一窗口中打开以观察时域表现。把pid的ref值添加到变量观测方便修改只要修改ref值每次就可以触发阶跃信号输入。当P达到欠阻尼且波动只有一个周期只有超调一个峰开始添加D参数。
  2. 添加微分参数。务必打开微分滤波器并根据你的闭环带宽速度环要跟随的频率设置滤波系数。目前使用的是一阶低通滤波后续考虑增加高阶滤波器和特殊的带宽滤波器切比雪夫、巴特沃斯等。调节D参数至P进入临界阻尼或过阻尼的状态没有超调
  3. 交替增大比例系数和微分系数,直到出现不可控的微分抖动,然后减小两者的值直到出现一个合适的平衡(调个大概即可,没有模型的情况下很难达到均衡)
  4. 固定PD参数,查看不同目标值的静差。如果没有对云台进行建模则拟合目标值与静差的关系线性、多项式、指数、对数并将该值作为前馈加入系统以补偿PD无法影响的扰动项。
  5. 增加额外的积分控制以消除前馈模型不准确带来的影响。务必使用积分分离和变速积分。参数不要求精细,一般来说大致即可。

model-based控制

无模型的控制显然存在其劣势和效果上限,为了提高性能,我们需要对云台进行建模。

建模的方式包括动力学方程推导和数据驱动的系统辨识。

动力学方程的推导即分析系统的输入(电机的扭矩)和输出(速度/角度的关系得到系统动态的微分方程然后使输入等于微分方程中除输出外的项从而让输出的动态变为简单的一阶线性常微分方程以最快的方式到达期望位置。此时再额外增加PID控制器用于补偿建模得到的系统和实际不匹配造成的误差。建模考虑的因素越全面建模的效果可能会越好。

系统辨识的经典方法是伯德图法即频域分析。通过给定一系列的正弦输入,观察系统的输出表现得到系统的相频曲线和幅频特性曲线,并选择一个特定结构的系统对曲线进行拟合(最小二乘或极大似然估计),对得到的系统应用超前-滞后补偿控制器以确定合适的PID参数在裕度和带宽之间权衡使得系统的频率响应满足设计要求。

Ozone可以非常方便的获取系统的频率响应数据。