From 903698251e6938d41e01526e904b20869fd6af88 Mon Sep 17 00:00:00 2001 From: NeoZng Date: Thu, 27 Jul 2023 23:15:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=96=87=E6=A1=A3=E5=92=8C?= =?UTF-8?q?=E6=A1=86=E6=9E=B6=E8=AE=B2=E8=A7=A3=E8=A7=86=E9=A2=91=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .Doc/合理地进行PID参数整定.md | 11 +++++++++++ README.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.Doc/合理地进行PID参数整定.md b/.Doc/合理地进行PID参数整定.md index 63bda06..db4be0d 100644 --- a/.Doc/合理地进行PID参数整定.md +++ b/.Doc/合理地进行PID参数整定.md @@ -6,3 +6,14 @@ 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. + diff --git a/README.md b/README.md index 5ea46ed..bec4988 100644 --- a/README.md +++ b/README.md @@ -241,7 +241,7 @@ app、module和bsp都有相应的rtos任务。其中bsp为创建任务提供了 框架中的三层结构都有详尽的注释帮助阅读和二次开发,三个抽象层都有各自总览的说明文档,而每个bsp/module/app都配有对应的个性化说明文档,提供了接口说明和改进或进一步开发的建议。 -建议以自上而下的方式阅读代码,app-》module-》bsp,我们还提供了框架的说明视频,分别讲解每个抽象层和总体的设计思路,还有一些杂碎的开发相关知识:[basic_framework教程]() +建议以自上而下的方式阅读代码,app-》module-》bsp,为此我们还提供了框架的说明视频,分别讲解每个抽象层和总体的设计思路,介绍了bsp的依赖HAL,还有一些杂碎的开发相关知识:[basic_framework教程](https://space.bilibili.com/522795884/channel/collectiondetail) ### 运行单个bsp/module测试