3-1 PID算法改进(积分部分)

目录

1、积分限幅

2、积分分离

3、变速积分


在位置式PID的基础上进行改进

定速用PI控制,定位置用PD控制

1、积分限幅

在定速控制上体现

第一种方法确定上下限方法:Out最大时,除以Ki,得到一个值,上限不能超过这个值(上限也可以直接给这个值,下限取相反数,如果要更精确一些,可以实验测一下)

2、积分分离

在定位置控制上体现

不足:(1)用PD控制时,由于驱动力不足导致实际值与目标值始终有一点误差;

(2)给转盘施加外力,由于误差(动态平衡时实际值与目标值的误差)比较小,误差*Kp是输出的力,这个力比较小,无法抵抗外力,导致转盘很容易受外力影响发生转动。

解决这两个问题可以加入 i 项,但此时改变目标值,会出现超调非常严重性,并且这个超调没法通过增大Kd消除。

定速控制需要不断输出力来维持速度,因此加入 i 项不会超调,而定位置控制需要通过超调来抵消输出的力,从而让转盘静止。

超调的主要原因就在积分项的作用,可通过减小误差积累来弱化超调(使超调非常小)

如果误差比较小,用PID控制器;如果误差比较大,用PD控制器。

积分分离可实现用积分项消除误差的和对抗外力的效果,又可避免过度积分导致超调的问题。

Error0 = Target-Actual(手给转盘一个阻力),阈值可通过实验大致给个值(取最终误差正常波动的值,再留些余量)

3、变速积分

用积分分离时,阈值给大了,积分分离效果不好;阈值给小了,如果误差正好超过误差停下来了,积分效果就会瞬间消失(用手正常拨动转盘,给阈值50比较合适,但如果给20,轻拨转盘,能够明显感受到有一个抵抗手的力,没问题;但如果猛烈波动转盘,就会非常容易拨动。)

x表示误差(取绝对值)

最后再加上积分限幅

相关推荐
@小匠17 分钟前
Read Frog:一款开源的 AI 驱动浏览器语言学习扩展
人工智能·学习
W23035765733 小时前
经典算法:最长上升子序列(LIS)深度解析 C++ 实现
开发语言·c++·算法
minji...4 小时前
Linux 线程同步与互斥(三) 生产者消费者模型,基于阻塞队列的生产者消费者模型的代码实现
linux·运维·服务器·开发语言·网络·c++·算法
语戚5 小时前
力扣 968. 监控二叉树 —— 贪心 & 树形 DP 双解法递归 + 非递归全解(Java 实现)
java·算法·leetcode·贪心算法·动态规划·力扣·
skywalker_115 小时前
力扣hot100-7(接雨水),8(无重复字符的最长子串)
算法·leetcode·职场和发展
bIo7lyA8v6 小时前
算法稳定性分析中的输入扰动建模的技术9
算法
CoderCodingNo6 小时前
【GESP】C++三级真题 luogu-B4499, [GESP202603 三级] 二进制回文串
数据结构·c++·算法
sinat_286945196 小时前
AI Coding 时代的 TDD:从理念到工程落地
人工智能·深度学习·算法·tdd
炽烈小老头7 小时前
【 每天学习一点算法 2026/04/12】x 的平方根
学习·算法