当前位置: 首页 > news >正文

PID(proportion integration differentiation)控制算法

PID控制算法其实就是指比例,积分,微分控制。PID控制只关心输入输出,而不关心系统的内部特性。

P:比例控制,代表现在,对当下的状态做出控制

I:积分控制,代表过去,依据过去的状态做出控制

D:微分控制,代表未来,根据未来的趋势做出控制

image

当得到系统的输出后,将输出与输入的误差经过比例,积分,微分3种运算方式,叠加到输入中,从而控制系统的行为。

 

比例控制算法

假设有一个水缸,最终的控制目的是要保证水缸里的水位永远的维持在1米的高度。

假设初始时刻,水缸里的水位是0.2米,那么当前时刻的水位和目标水位之间是存在一个误差的error,且error为0.8.这个时候,假设旁边站着一个人,这个人通过往缸里加水的方式来控制水位。

如果单纯的用比例控制算法,就是指加入的水量u和误差error是成正比的。即u=kp*error,假设kp取0.5,

t=1时(表示第1次加水,也就是第一次对系统施加控制),那么u=0.5*0.8=0.4,所以这一次加入的水量会使水位在0.2的基础上上升0.4,达到0.6.
t=2时刻(第2次施加控制),当前水位是0.6,所以error是0.4。u=0.5*0.4=0.2,会使水位再次上升0.2,达到0.8.
如此这么循环下去,就是比例控制算法的运行方法。
可以看到,最终水位会达到我们需要的1米。
但是,单单的比例控制存在着一些不足,其中一点就是 –稳态误差!
假设这个水缸在加水的过程中,存在漏水的情况,假设每次加水的过程,都会漏掉0.1米高度的水。仍然假设kp取0.5,那么会存在着某种情况,假设经过几次加水,水缸中的水位到0.8时,水位将不会再变换!因为,水位为0.8,则误差error=0.2. 所以每次往水缸中加水的量为u=0.5*0.2=0.1.同时,每次加水,缸里又会流出去0.1米的水!!!加入的水和流出的水相抵消,水位将不再变化!

注:稳态误差往往更加常见,比如控制汽车运动,摩擦阻力就相当于是“漏水”,控制机械臂、无人机的飞行,各类阻力和消耗都可以理解为本例中的“漏水”)
所以,单独的比例控制,在很多时候并不能满足要求。

积分控制算法

用水桶的例子,如果仅仅用比例,可以发现存在暂态误差,最后的水位就卡在0.8了。于是,在控制中,再引入一个分量,该分量和误差的积分是正比关系。所以,比例+积分控制算法为:
u=kp*error+ ki∗∫ error
用水桶的例子来说明,第一次的误差error是0.8,第二次的误差是0.4,至此,误差的积分(离散情况下积分其实就是做累加),∫error=0.8+0.4=1.2. 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数ki乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,所以可以很好的消除稳态误差(假设在仅有比例项的情况下,系统卡在稳态误差了,即上例中的0.8,由于加入了积分项的存在,会让输入增大,从而使得水缸的水位可以大于0.8,渐渐到达目标的1.0.)这就是积分项的作用。

微分控制算法

考虑刹车情况。平稳的驾驶车辆,当发现前面有红灯时,为了使得行车平稳,基本上提前几十米就放松油门并踩刹车了。当车辆离停车线非常近的时候,则使劲踩刹车,使车辆停下来。整个过程可以看做一个加入微分的控制策略。

在离散情况下,就是error的差值,就是t时刻和t-1时刻error的差,即u=kd*(error(t)-error(t-1)),其中的kd是一个系数项。

水缸加水的例子,就是当发现水缸里的水快要接近1的时候,加入微分项,可以防止给水缸里的水加到超过1米的高度,说白了就是减少控制过程中的震荡。

 

PID算法公式:

image

比例,微分,积分每个项前面都有一个系数,这些系数都是需要实验中去尝试然后确定的,且离散化的公式,很适合编程实现。

 

参考:https://zhuanlan.zhihu.com/p/39573490

http://www.jsqmd.com/news/581647/

相关文章:

  • AcWing 10:有依赖的背包问题 ← 邻接表存图
  • C语言-->三子棋(基础版)
  • 永州大米厂家哪家服务好? - 中媒介
  • 千问3.5-2B图文对话入门:一张图+一句话提问,实现图像理解、颜色判断、主体定位
  • 基于 Java 实现美团、饿了么外卖 API 统一接入层设计与适配方案
  • 效率革命:跳过java安装与配置,在快马平台即开即用地开发工具类
  • 深度技术解析:OpenCore Legacy Patcher 系统兼容性工具的高级优化实战
  • 使用hgdbdeveloper开发工具导出数据后在异机恢复时报错
  • 2026年注册网易企业邮箱关键注意事项与避坑指南 - 品牌2025
  • 嵌入式RC脉冲解码与通道状态诊断库
  • WindowResizer:突破窗口限制的桌面空间优化工具
  • 湖南大米加工哪家设备好? - 中媒介
  • 2026年深圳靠谱的ODI备案公司总结,和你一起品味ODI境外投资备案服务 - 工业推荐榜
  • 3步实现图表数据提取:WebPlotDigitizer全攻略
  • 提升机器人开发效率:基于快马平台构建openclaw与ollama的智能指令中转层
  • d2s-editor:高效管理暗黑破坏神2存档的全攻略
  • SEO_10个实用的SEO技巧,快速提升网站排名(380 )
  • WebGLStudio.js虚拟文件系统完全指南:如何高效管理3D资源
  • 2026年白银靠谱职业技能培训教育机构费用,大概多少钱 - 工业设备
  • OpenClaw模型切换指南:Qwen2.5-VL-7B与其他模型性能对比测试
  • 低代码平台会取代程序员吗?面向软件测试从业者的专业深度分析
  • 实战演练:基于快马构建集成copaw的日志自动化分析与报告系统
  • 实战Nodejs构建文件管理系统:基于快马AI生成生产级后端代码
  • python+uiautomator2+adb_环境搭建
  • Git-Credential-Manager-for-Windows安全存储机制深度解析:如何保护你的Git凭证安全 [特殊字符]
  • Fluxion多语言支持终极指南:从.lang文件到本地化shell脚本的完整实现
  • 探讨白银地区好用的职业技能培训基地,怎么选择 - 工业品网
  • 3步释放硬件潜能:DiscreteDeviceAssigner设备直通工具让虚拟化性能提升200%
  • 快速验证ai模型差异:在快马平台一键切换openclaw的代码生成模型
  • 开源生命周期评估实战:企业级碳足迹分析解决方案