浅谈 PID 控制算法

PID算法(一)基础知识 PID控制四驱小车的第一篇,PID的基础知识 阅读详情

PID 控制算法概念

在我们的生活中可能大家都没有听说过 PID 控制算法,但它可以说是无处不在,小到空调的温度控制、无人机的精准悬停、机器人运作系统,大到飞机和火箭的飞行姿态控制都有 PID 的身影。

PID 控制算法,即比例-积分-微分(Proportional-Integral-Derivative)控制算法,是一种广泛应用于各种自动控制系统中的反馈控制算法。PID 控制器通过计算控制误差的三种成分 —— 比例(P)、积分(I)和微分(D)来调节系统输出,使得系统的输出达到目标值。

PID 控制算法的运行步骤

1 比例控制(P 部分)

这是 PID 中的最简单基本比例控制算法。这个环节产生的分力是: f p = k p × e ( t ) f_p=k_p\times e(t) fp​=kp​×e(t) 我们就拿水桶倒水来介绍 PID 控制算法。设水位目标高度为 1 1 1,当前水位为 0.2 0.2 0.2 米,那么当前时刻的水位和目标水位之间是存在一个误差的 e ( t ) e(t) e(t),且 e ( t ) = 10 − 2 = 8 e(t)=10-2=8 e(t)=10−2=8 米。如果单纯的用比例控制算法,就是指加入的水位 f p f_p fp​ 和误差 e ( t ) e(t) e(t) 是成正比的。假设 k p kp kp 取 0.5 0.5 0.5,那么 t = 1 t=1 t=1 时(表示第 1 1 1 次加水,也就是第 1 1 1 次对系统施加控制),那么 f p = 0.5 × 0.8 = 0.4 f_p=0.5\times 0.8=0.4 fp​=0.5×0.8=0.4,所以这一次加入的水量会使水位在 0.2 0.2 0.2 的基础上上升 0.4 0.4 0.4,达到 0.6 0.6 0.6。接着, t = 2 t=2 t=2 时(第 2 2 2 次施加控制),当前水位是 0.6 0.6 0.6,所以 e ( t ) e(t) e(t) 是 0.4 0.4 0.4。 f p = 0.5 × 0.4 = 0.2 f_p=0.5\times 0.4=0.2 fp​=0.5×0.4=0.2,会使水位再次上升 0.2 0.2 0.2,达到 0.8 0.8 0.8。如此这么循环下去,就是比例控制算法的运行方法。可以看到,最终水位会达到我们需要的 1 1 1 米。

2 微分控制(D 部分)

从上面我们可以看出来在不断加水的过程中是会产生震荡的,那想要阻止震荡就只能用微分控制了。微分环节也会计算出一个分力,计算方法是: f d = k d × d e ( t ) d t f_d=k_d\times\frac{\mathrm{d}e(t)}{{\rm d}t} fd​=kd​×dtde(t)​ 也就是说,这个分力与误差的变化速度有关。假设目标位置不变,水位向上运动时误差减小,即误差变化速度为负,分力向下;反之当水位向下运动时分力向上;综合看来,微分环节产生的分力始终阻碍水位的运动。

因此如果在刚刚的基础上加入微分产生的分力,就会产生一个阻尼效果,水位会仿佛始终受到一个阻力,因此上下摆动的幅度会逐渐减小,最终收敛到目标位置上。

3 积分控制(I 部分)

但现在,我们更希望在水位有一些外部干扰时也能实现上面的效果,比如我们在水桶上有一个洞,这样就要使用积分控制了,它的计算方法是: f i = k i × ∫ e ( t )   d t f_i=k_i\times \int_{}^{} e(t)\, {\rm d}t fi​=ki​×∫​e(t)dt 也就是说积分环节产生的分力正比于误差的积分,当误差持续存在时,这个分力会逐渐变大,试图消除误差。

加入积分作用,我们的 PID 就能完美实现在有恒力干扰的情况下对水位的控制了

公式

经上面分析可得知:
u ( t ) = k p × e ( t ) + k d × d e ( t ) d t + k i × ∫ e ( t )   d t u(t)=k_p\times e(t)+k_d\times\frac{\mathrm{d}e(t)}{{\rm d}t}+k_i\times \int_{}^{} e(t)\, {\rm d}t u(t)=kp​×e(t)+kd​×dtde(t)​+ki​×∫​e(t)dt

PID 控制算法扩展

PI 算法

公式:
u ( t ) = k p × e ( t ) + k i × ∫ e ( t )   d t u(t)=k_p\times e(t)+k_i\times \int_{}^{} e(t)\, {\rm d}t u(t)=kp​×e(t)+ki​×∫​e(t)dt
特点:
PI 控制结合了比例控制和积分控制两个部分。比例控制部分用于减小误差,而积分控制部分则用于消除稳态误差,提高系统的稳态精度。

优缺点:

  • 优点:能够消除稳态误差,提高系统的稳态精度,且结构简单、调整方便,具有较强的抗干扰能力。
  • 缺点:相对于完整的 PID 控制器,PI 控制在动态性能上可能略逊一筹。

PD 算法

公式:
u ( t ) = k p × e ( t ) + k d × d e ( t ) d t u(t)=k_p\times e(t)+k_d\times\frac{\mathrm{d}e(t)}{{\rm d}t} u(t)=kp​×e(t)+kd​×dtde(t)​
特点:
PD 控制体现了微分和比例的性质,而没有积分控制。微分控制通过预测误差变化的趋势,使系统具有超前控制作用,从而增强系统的稳定性和减少最大偏差及余差。

优缺点:

  • 优点:响应速度快、稳定性好,能够减少超调。
  • 缺点:在面对需要消除稳态误差的场合时,其效果可能不如 PI 或 PID 控制。

PID 控制算法代码实现

#include<bits/stdc++.h>
using namespace std;
double tl=0.0;	//目标追踪位置
double nl=0.0;	//目标当前位置
float kp,ki,kd;
int main(){
	double ep=0;		//kp误差
	double ei=0;		//ki误差
	double ed=0;		//kd误差
	double edp=0;	//表示e(k-1),上一次的kp误差,用于计算kd误差
	cout<<"请输入目标追踪值"<<endl;
	cin>>tl;
	cout<<"请输入kp"<<endl;
	cin>>kp;
	cout<<"请输入ki"<<endl;
	cin>>ki;
	cout<<"请输入kd"<<endl;
	cin>>kd;
	edp=tl-nl;//整个系统第一次计算kd时、 e(k)-e(k-1)。 
	while(nl!=tl){
		ep=tl-nl;
		ei+=ep;
		ed=ep-edp;
		edp=ep;
		nl+=kp*ep+ki*ei+kd*ed;
		cout<<"当前位置为:"<<nl<<"当前的误差为"<<tl-nl<<endl;
	}
}

参考资料

https://blog.youkuaiyun.com/name_longming/article/details/115093338

https://www.bilibili.com/video/BV1et4y1i7Gm/

https://blog.youkuaiyun.com/ah_yl/article/details/88793274

智能车浅谈——从PID到模型预测:方向控制算法演进 本文探讨了智能车方向控制算法的演进,从经典的PID控制到先进的模型预测控制(MPC)。PID控制简单易用但存在局限性,而MPC通过建模和预测优化显著提升了控制精度和适应性。文章详细比较了两种算法的性能差异,并提供了实际应用中的技术要点和选型建议,为智能车开发者提供了宝贵的参考。 阅读详情

相关推荐

智能车浅谈——控制规律篇

浅谈智能车控制算法——计算机控制系统的控制规律角度,解析智能车中PID算法原理,从头梳理PID用法。

qq_41954556的博客 1万+

PID控制算法01

PID控制是一种在工业生产中应用最广泛的控制方法,其最大优点是不需要了解被控对象精确的数学模型,只需要在线根据被控变量与给定值之间的偏差以及偏差的变化率等简单参数,通过工程方法对比例系数KPK_PKP​,积分时间KIK_IKI​,微分时间KDK_DKD​三个参数进行调整,就可以得到满意的效果。 PID控制器的微分

Star_ID的博客 1万+

别再折腾SNAP了!ENVI 5.6.0 直接拖拽打开Sentinel-2 L2A数据的正确姿势

本文详细介绍了ENVI 5.6.0直接处理Sentinel-2 L2A数据的高效方法,无需通过SNAP进行繁琐的重采样预处理。通过直接拖拽XML文件,用户可以快速加载不同分辨率的波段数据,显著提升工作效率。文章还对比了直接打开与SNAP重采样流程的优劣,并提供了常见问题解决方案和高级应用技巧。

weixin_30296405的博客 633

【 PID 算法 】PID 算法基础

前言: 这两天打算找个实习,奈何感觉自己有点菜,所以,就补习了一下知识,说一下,这个PID算法吧。 一、简介 PID即:Proportional(比例)、Integral(积分)、Differential(微分)的缩写。也就是说,PID算法是结合这三种环节在一起的。粘一下百度百科中的东西吧。 顾名思义,PID控制算法是结合比例、积分和微分三种环节于一体的控制算法,它是连续系统中技术最为成熟、应用最为广泛的一种控制算法,该控制算法出现于20世纪30至40年代,适用于对被控对象模型了解不清楚的场合。实际运行的经

风一样的少年 6万+

uniapp:K线图,支持H5,APP

K线,1分钟搞定。备注详细,无需理解,直接复制即可。

sunluyi的博客 4573

15、降维算法:原理、实现与应用

本文深入介绍了多种降维算法,包括线性方法如主成分分析(PCA)和线性判别分析(LDA),以及非线性方法如Sammon映射、t分布随机邻域嵌入(t-SNE)和自编码器。文章通过C++库Dlib和Shogun展示了这些算法的具体实现,并结合图像压缩和数据可视化等实际案例,分析了不同算法的适用场景。此外,还探讨了降维算法的选择策略、优化改进方法以及未来发展趋势,为读者提供了全面的技术理解和应用指导。

lemon的博客 115

【基础知识】PID(比例微分积分)控制

PID属于一种负反馈控制方法,也被叫做闭环控制实现很简单,成本较低,使用非常广泛(可以使用阻容器件配合运放实现)当然本文是数字信号控制,使用单片机PID控制的目标是将当前的值稳定在一个设定的范围内比如热水器的温度控制等等。......

m0_57585228的博客 1万+

【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

baron-周贺贺-代码改变世界ctw 6422

PID算法详解及实例分析

1.PID算法入门 PID算法算是控制领域最经典,最重要,也是最实用的算法了。所谓的PID,指的是proportion,integration,differentiation,比例,积分,微分。 因此,PID是结合了比例积分微分三个模块于一身的控制算法。 先看公式: u(t)=Kp(e(t)+1Ti∫0te(t)dt+Tdde(t)dt) u(t) = K_p\left(e(t) + \frac{1}{T_i} \int_{0}^{t}e(t)dt + T_d \frac{de(t)}{dt}\right)

bitcarmanlee的博客 3万+

Vue2+OpenLayers动态绘制两个经纬度并计算距离(提供Gitee源码)

动态绘制两个经纬度并计算它们之间的距离。

黄团团的个人博客 365

【WLAN】【测试】WPS测试方法小结

手机 一般稍微老的手机会支持,新手机反而不支持。 比如小米6(系统版本新的话不支持)在设置——高级设置——WPS连接。 笔记本 有些笔记本(如Surface Laptop 3)天生支持WPS,比如在连接某SSID的时候,会有“也可以通过按路由器上的按钮连接”这样的字样,出来后按AP的WPS按键即可以进行连接。 Qss软件 AP mesh组网中,Controller和Agent之间通过WIFI组网,可使用WPS的方式进行连接。可利用这点用Agent来测试AP的WPS功能。 ...

一介草民,只为生活。 1万+

浅谈单神经元网络PID控制算法及MATLAB仿真

浅谈单神经元PID控制算法

m0_37835056的博客 8932

手把手教你学Simulink--控制执行场景实例:基于Simulink的智能车辆自动紧急制动(AEB)仿真

本文完成了基于 Simulink 的智能车辆自动紧急制动(AEB),实现了:✅ 构建前车急刹与静止障碍物典型场景✅ 设计基于 TTC 的三级 AEB 决策逻辑✅ 验证在高风险场景下有效避免碰撞✅ 掌握从风险评估到制动执行的完整安全链✅ 为ADAS 主动安全功能开发奠定基础。

MHD0815的博客 235

浅谈BP神经网络PID控制算法及matlab仿真

推导BP神经网络相关公式及matlab仿真

m0_37835056的博客 1万+

AVDepthData、LiDAR 深度数据与人像模式全解析:iOS 真实景深图采集与处理实战

在 iOS 高端影像系统中,真实景深信息的采集与利用已成为区分旗舰设备与基础设备的重要能力。Apple 自 iPhone 7 Plus 引入双摄虚化以来,逐步发展出基于 AVDepthData、TrueDepth 与 LiDAR 的多维深度感知技术,并开放接口供开发者获取高精度深度图,构建背景虚化、人像分割、3D 重建等多种功能。本文将深入解析 AVDepthData 的结构与使用方式,系统讲解 LiDAR 采集架构、人像模式的景深融合逻辑,以及如何在实际项目中采集、预览并处理深度图数据,实现具备工程可用性

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1861

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【串级PID】浅谈串级PID作用及意义——快速理解串级PID结构优势(附图)

答应为实验室的同学做一次简单的关于串级PID的介绍,主要从感性认识串级PID的结构与作用切入,因此笔者尽量避免引入公式及其推导,因为这些推导在各类控制类书籍与相关论文中均有介绍,我就不再班门弄斧了。 本文假设读者已有单级PID控制的基础,对于PID的原理不做描述。 假设我们需要解决这样一个问题: 控制小车从当走到红色标签位置,设小车实时位置为x0(t) 如果我们使用单级PI...

ReadAir的专栏 4万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

浅谈PID--控制的灵魂之一

Kp使调节更快,Ki使调节更准,Kd使调节更稳PID是大家学习控制的核心算法,也是大家读我这篇文章了解到的第一个算法,相信大家看到这里,对PID已经有较为熟悉的认知,大家要多去实战,加深自己的理解,大家在本科阶段了解,以及会初步使用PID是非常够了的,如果想要更优秀,不仅要会把PID更广泛的应用,而且也要了解其他的算法,特别是深度学习和神经网络这方面,根据近几年的电赛来看,由开始的PID应用,开始朝向视觉和PID综合发展,所以革命尚未成功,同志仍需努力呀!

2203_75349517的博客 3169

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

浅谈DC-IRIS的PID控制方法

一、DC-IRIS简介 DC-IRIS一般应用于枪机的外接镜头,DC-IRIS镜头会带有一组含有四个引脚的外接线,用于连接相机,这四个引脚为Drive+、Drive-、Damp+、Damp-,即驱动与阻尼的正负。 实际上软件部分只需控制一个PWM功能复用的I/O引脚,硬件驱动电路会产生相应的电压控制光圈,硬件部分我不太熟,就不班门弄斧了。 软件控制PWM波的占空比去控制光圈,当PWM波占空比大于...

mrhjlong 9791

浅谈动态调节PID算法

啥是PID? PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。 PID已经有107年的历史了 它并不是什么很神圣的东西,大家一定都见过PID的实际应用。 比如四轴飞行器,再比如平衡小车......还有汽车的定速巡航、3D打印机上的温度控制器.... 就是类似于这种:需要将某一个物理量“保持稳定”的场合(比如维持平衡,稳定温度、转速等),PID都会派上大用场。PID应用相关文章,点击阅读:应用PID控...

酒馆~酒友 4898

STM32应用(十)经典控制算法PID(单级和串级)原理与代码实现

本博客介绍了经典控制算法PID,因为原理层面上的博客很多,我就直接放的我觉得讲的比较好的博客链接,而更侧重于代码和实现。

三木今天学习了嘛の博客 3万+

【有啥问啥】规划与控制算法详解:从原理到应用及未来展望

规划算法是智能体在给定环境或任务空间中,根据起始状态、目标状态及一系列约束条件,计算出一系列可行的动作或路径的算法。根据应用场景的不同,规划算法主要分为路径规划算法和轨迹规划算法。路径规划算法:关注从起始点到目标点的路径最优性或可行性,不考虑动态因素。常见算法包括Dijkstra算法、A*算法、RRT(快速随机树)及其改进版本RRT*等。轨迹规划算法:在路径规划的基础上,进一步考虑时间、速度、加速度等动态约束,生成平滑且符合动力学特性的轨迹。

Chauvin的博客 2626

浅谈全国大学生智能车竞赛-摄像头组图像处理及控制算法

目前全国大学生智能车竞赛发展越来越快,很多新手入手难,本文介绍了摄像头组的相关软件问题,包括图像处理,控制算法,结构搭建等光机电算各方面的知识。

BaiYH1994的博客 6万+

[控制原理基础]浅谈PID算法

当今的自动控制技术都是基于反馈的概念。即一个In Loop闭环的理论,反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。

weixin_47930476的博客 5871

【PLC学习十一】浅谈西门子PLC的PID控制功能

西门子、PLC、PID

weixin_43324296的博客 6699

pid算法

位置式和增量式pid算法

qq_58113667的博客 1628
上一篇: 题解:AT_abc389_d [ABC389D] Squares in Circle
下一篇: 浅谈质数的判定
灶龙
博客等级 码龄4年 126粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值