PID白话式理解说明及智能车闭环控制详解
- 格式:pdf
- 大小:125.96 KB
- 文档页数:9
增量式PID通俗解说一开始见到PID计算公式时总是疑问为什么是那样子?为了理解那几道公式,当时将其未简化前的公式“活生生”地算了一遍,现在想来,这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一定看法后再进行演算则会理解的更快!首先推荐白志刚的《由入门到精通—吃透PID2.0版》看完一、二章之后,建议你先通过实践练习然后再回来看接下来的所有章节,这样你对这本书的掌握会更加牢固、节省时间。
PID就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。
实践练习中,如何把这一原理转化为程序?为什么是用那几个error进行计算?以下是我摘录的一段PID程序,我曾用其对智能车的速度进行闭环控制:P:Proportional比例I:Integrating积分D:Differentiation微分Pwm_value:输出Pwm暂空比的值Current_error:当前偏差last_error:上次偏差prev_error:上上次偏差增量式PID计算公式:P=Kp*(current_error﹣last_error);D=Kd*(current_error﹣2*last_error﹢prev_error);I=Ki*current_error;PID_add=Pwm_value+P﹢I﹢D一、为什么是PID_add=Pwm_value+(P﹢I﹢D)而不是PID_add=P+I +D?如上图,有一个人前往目的地A,他用眼睛视觉传感器目测到距离目的地还有100m,即当前与目的地的偏差为100,他向双脚输出Δ=10 0J的能量,跑呀跑,10s之后,他又目测了一次,此时距离为40m,即current_error=40,他与10s前的偏差last_error=100对比,即current_error-last_error=-60,这是个负数,他意识到自己已经比较接近目的地,可以不用跑那么快,于是输出Δ=100+(-60)=40J的能量,40J的能量他刚好以4m/s的速度跑呀跑,10s之后,他发现已经到达目的点,此时current_error=0,大脑经过思考得出curre nt_error-last_error=0-40=-40,两脚获得的能量Δ=40+(-40)=0,即他已经达到目的地,无需再跑。
智能车PID算法实现原理讲解引言智能车是一种能够通过传感器收集环境信息,然后分析、决策、控制并实现自主导航的车辆。
PID(Proportional-Integral-Differential)控制算法是智能车中常用的一种控制方法,可以实现对车辆的位置、速度等参数进行精确调节。
本文将对PID算法的实现原理进行详细讲解。
一、PID控制算法原理PID控制算法是一种经典的反馈控制算法,通过对系统的误差进行连续检测和调整,使得系统能够自动调整到期望值附近并保持稳定。
PID算法由三个部分组成:比例控制(P),积分控制(I)和微分控制(D)。
1.比例控制(P)比例控制是基于误差的当前值来进行控制调整的,它通过将误差乘以一个比例系数来调整控制量的变化。
这意味着当误差增大时,控制量的变化也会增大。
2.积分控制(I)积分控制是基于误差的历史累积值来进行控制调整的,它通过将误差的累积值乘以一个积分系数来调整控制量的变化。
这意味着当误差持续存在时,控制量的变化会逐渐增大,从而更好地调整系统。
3.微分控制(D)微分控制是基于误差的变化率来进行控制调整的,它通过将误差的变化率乘以一个微分系数来调整控制量的变化。
这意味着当误差快速变化时,控制量的变化也会被加大。
二、PID算法实现步骤基于PID算法的智能车控制实现需要按照以下步骤进行:1.设定目标值(设定值)和实际值(反馈值)。
目标值为期望的位置或速度,实际值通过传感器获取。
2.计算误差。
误差可以通过将设定值减去实际值得到。
3.计算比例控制量。
比例控制量可以通过将误差乘以比例系数得到。
4.计算积分控制量。
积分控制量可以通过将误差的累积值乘以积分系数得到。
5.计算微分控制量。
微分控制量可以通过将误差的变化率乘以微分系数得到。
6.将比例控制量、积分控制量和微分控制量相加得到最终的控制量。
7.根据最终的控制量来调整车辆的状态,例如调整轮速、转向角度等。
8.循环执行上述步骤,使得车辆能够持续地调整控制量,使得实际值逐渐接近设定值,从而实现稳定的控制。
智能车速度控制pid(电机闭环控制算法)对于智能车的电机闭环控制算法,我之所以标题没有写上智能车电机PID闭环控制算法是因为PID 算法根本就不是特别好的适用于智能车这种变化很快的系统,对于智能车,电机的调速可以说是时时刻刻再进行调速控制的,我上面说描述的经典PID 算法,都是针对一些惰性系统,也就是说是变化比较慢的系统的,所以对于智能车的电机调速采用完完整整的PID 算法,是根本不可取的,及时采用了,你必须要经过一些变换和改进才能使用。
以上的简述只是鄙人自己的看法,如有错误,请各位高手指正。
现在估计您会疑问,PID 不适用于智能车的电机控制,那什么才适用呢?鄙人原来做过智能车,从鄙人本身的理解,P 算法控制电机,也就是比例控制是最好的,反应速度快,控制精度高,不存在积分和微分效应,非常适用于适用于控制周期短的系统,当然,对于一些特殊的逻辑控制算法,可能要采用PD算法,用微分来做补偿,防止震荡和超调。
下面来说下电机控制算法从开始的加入到最终的确定的方法:当然这一切的前提就是安装了编码器,车速有反馈,只有加上编码器,有了反馈,才能组成一个闭环系统。
当然您也可以加上码盘,或者霍尔开关等一切可以返回车速的东西都可以。
(1)首先建议在车速比较慢的时候,采用PID 算法来控制电机,为什么开始要建议您采用PID 呢?主要是为了让您更加深刻理解PID 算法的精髓和调试步骤方法等,有助于以后对控制算法更加深入的研究和书写。
调试PID 三个参数的方法,很多地方都提供了,我在这里简单的说下:首先将ID 参数都变为0,先调整P 比例参数,调整到速度基本上跟您给定的速度差不多,也就是说基本稳定在您给定的脉冲数,当然这个时候会非常的震荡,不要担心,接下来调整I,调整I 的结果就是震荡会消除很多,但是车速会变化缓慢,也就是说会有一些延迟,然后再调整D,调整D 的结果就是增强调节的灵活性和预见性,在给定速度变化的过程中,能够以一个平稳过渡来变换,而且速度可以长时间稳定在给定速度附近,然后PID 三个参数的基本范围就确定了,然后再根据实际的跑车来微调这些参数,当然在您调试PID之前,请仔细阅读PID 理论知识,这样有助于您的调试和理解,。
PID控制最通俗的解释与PID参数的整定方法PID控制是一种经典的反馈控制算法,常用于工业自动化领域。
它的基本原理是根据系统的偏差值、积分项和微分项来调整输出控制信号,以实现对系统状态的控制。
在工业领域,PID控制常用于调节温度、压力、流量等参数,以及机器人、无人驾驶车辆等设备的姿态控制。
PID控制的通俗解释是通过将系统的目标与实际输出进行比较,并根据比较结果对输出信号进行调整,使得系统的输出接近目标值。
为了更好地说明PID控制的原理,我们可以将其比喻为一个驾驶员在驾驶汽车时的控制方式。
驾驶员观察车速表,目标是将车速调整到指定的速度,那么驾驶员会采取以下几个步骤来实现控制:1. 比较目标速度与实际速度的差异:驾驶员观察车速表上的显示,将目标速度与实际速度进行比较,得到一个偏差值。
如果目标速度是60km/h,而实际速度是50km/h,那么偏差值就是10km/h。
2.调整加速或刹车力度:根据偏差值,驾驶员会调整加速或刹车的力度,以使得车速逐渐接近目标速度。
当偏差值为正时,表示实际速度低于目标速度,驾驶员会增加油门的踩下程度;当偏差值为负时,表示实际速度高于目标速度,驾驶员会减小油门的踩下程度或踩刹车。
3.跟随目标速度调整力度:为了更加精确地调整车速,驾驶员不仅会根据当前的偏差值调整力度,还会考虑过去的偏差值。
如果过去一段时间内车速一直低于目标速度,表示驾驶员的力度不够,那么他会进一步增加油门的踩下程度;反之,如果过去一段时间内车速一直高于目标速度,表示驾驶员的力度过大,那么他会稍微减小油门的踩下程度。
通过上述步骤的不断迭代,驾驶员可以逐渐将车速调整到目标速度,并保持在目标速度附近,从而实现了对车速的控制。
这种驾驶员调整车速的方式就类似于PID控制的基本原理。
PID参数的整定指的是确定PID控制器中的比例系数(Proportional)、积分系数(Integral)和微分系数(Derivative)。
智能车的 PID 控制 智能车的转向控制和速度控制是一体的,合理的速度分配以及最优的行驶路线,才能使智能车在最短时间内完成比赛。
从我们开始提速调试的过程中,曲率半径为50cm 的最小弯几乎都会冲出去,究其原因是当初赛道判断出错,入弯时速度调整太迟,当速度调整过来时,车子已经冲出赛道。
经过长期的调试发现,如果在入弯前能及时调整速度,智能车在弯道内可以很好的以比较高的速度行驶,同时可以切线以最优路径行驶以单行黑线点与图像中心的偏差来对转向进行控制。
最终采用了PD 对转向进行控制,P ——某一行的偏差,D ——本次偏差与上一次偏差的差值。
PD 值是我们调好的一组固定值。
只是P 的参考行我们采用的是动态设定,根据我们外部按键设定的速度值的不同,也通过外部按键设定不同的参考行,保证智能车的沿线及切弯。
设定速度低时,参考行设定距车子近的方向,如果此时设定的距车子太远的地方,智能车在过弯道时,很容易切弯过度,行驶出赛道。
当设定速度高时,参考行设定距车子远的方向,这样可以在高速行驶下,使车子提前转弯我们采用的是增量式PID 算法。
PID 控制器原理图如图3.13所示,图3.13 PID 控制器原理框图 图3.13中,r(t)是电动机的速度设定值,c(t)是转速的实际测量值,e(t)是控制器的输入偏差信号,u(t)是控制器的输出控制量,则PID 控制算式如下:公式1其中Kp是比例系数,Ti是积分时间常数,Td是微分时间常数。
把上式离散化处理后得:公式2其中Ts为采样周期。
由于采用的是增量式PID算法,因此PID调节器只需计算出控制量的增量,所以增量式PID控制算式如下:公式3公式4令A=(Kp+Ki+Kd),B=(Kp+2Kd),C=Kd,则有:公式5我们只需确定上式中的A,B,C三个变量的值,寻找一组最为合适的PID参数,在这里推荐经验调试来确定三个变量的值,先把B,C置0,调参数A,然后在A 的基础上依次来确定B和C。
很多同学都不清楚PID是个什么东西,因为很多不是自动化的学生。
他们开口就要资料,要程序。
这是明显的学习方法不对,起码,首先,你要理解PID是个什么东西。
本文以通俗的理解,以小车纵向控制举例说明PID的一些理解。
首先,为什么要做PID?由于外界原因,小车的实际速度有时不稳定,这是其一,要让小车以最快的时间达达到既定的目标速度,这是其二。
速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之一,这是其三.小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。
如果是线性的,直接用P就可以了。
比如在P WM=60%时,速度是2M/S,那么你要它3M/S,就把PW M提高到90%。
因为90/60=3/2,这样一来太完美了。
完美是不可能的。
那么不是线性的,要怎么怎么控制PW M使速度达到即定的速度呢?即要快,又要准,又要狠。
(即快准狠)系统这个速度的调整过程就必须通过某个算法调整,一般PID就是这个所用的算法。
可能你会想到,如果通过编码器测得现在的速度是2.0m/s,要达到2.3m/s的速度,那么我把pwm增大一点不就行了吗?是的,增大pwm多少呢?必须要通过算法,因为PWM和速度是个什么关系,对于整个系统来说,谁也不知道。
要一点一点的试,加个1%,不够,再加1%还是不够,那么第三次你还会加1%吗?很有可能就加2%了。
通过PID三个参数得到一个表达式:△PW M=a *△V1+b *△V2+c *△V3,ab c是通过PID的那个长长的公式展开,然后约简后的数字,△V1 ,△V2 ,△V3 此前第一次调整后的速度差 ,第二次调整后的速度差,第三次。
pid通俗讲解-回复PID(Proportional, Integral, Derivative)是一种经典的控制器设计方法,广泛应用于工业控制系统中。
它通过对反馈信号进行比例、积分和微分处理,从而实现对被控对象的精确控制。
PID控制器的一种基本结构由比例环节、积分环节和微分环节组成,其调节参数分别为比例系数Kp、积分时间Ti以及微分时间Td。
PID控制器具有简单、快速、稳定等特点,被广泛用于工业过程控制、机器人控制等领域。
1. 比例环节比例环节是PID控制器的第一部分,也是最基本的部分。
它通过比较给定值和实际值的偏差大小,乘以一个比例系数Kp,产生控制器的输出。
比例系数决定了控制器对于偏差的响应速度和稳定性。
当比例系数过大时,系统响应过度,可能出现振荡;当比例系数过小时,系统响应较慢,可能无法及时达到控制目标。
2. 积分环节积分环节是PID控制器的第二部分,用于消除稳态误差。
积分环节将偏差的累积值乘以一个积分时间Ti,再加到控制器输出中。
积分环节的作用是将系统的积分误差逐渐降低为零,稳定系统的稳态性能。
如果积分时间设置不当,可能导致系统过度调节或者产生振荡。
3. 微分环节微分环节是PID控制器的第三部分,用于抑制系统的过冲和振荡。
微分环节通过测量偏差的变化率,乘以一个微分时间Td,将微分项加到控制器的输出中。
微分环节的作用是对系统进行预测,减小偏差的变化速率,从而提高系统的稳定性和响应速度。
在实际应用中,微分环节的设置需要考虑到噪声的影响,避免对系统引入不必要的干扰。
4. PID控制器的参数调节PID控制器的性能取决于比例系数Kp、积分时间Ti以及微分时间Td的选择。
传统的PID控制器参数调节方法有经验法、试错法和优化算法等。
经验法是根据工程经验和实际情况,通过调整参数来实现控制效果。
试错法是通过不断调节参数,观察系统响应,直至达到满意的控制效果。
优化算法则是利用数学方法和计算机模拟,找到最优的PID参数组合。
pid 通俗理解PID(Proportional-Integral-Derivative)是一种经典的控制算法,在工业自动化领域得到广泛应用。
它的作用是根据系统反馈信号与期望值之间的误差,通过调节控制器的输出信号,使系统的输出稳定在期望值附近。
PID控制算法的核心思想是基于反馈原理,通过不断调整控制器的输出,使系统的输出信号逐渐趋近于期望值。
它的计算过程并不复杂,不需要使用数学公式或计算公式来描述。
简单来说,PID控制算法分为三个部分:比例控制、积分控制和微分控制。
比例控制是根据误差的大小来调节控制器的输出信号。
当误差较大时,控制器的输出信号也会相应增大,以加快系统的响应速度。
而当误差较小时,控制器的输出信号会逐渐减小,以避免系统的过冲现象。
积分控制是根据误差的累积值来调节控制器的输出信号。
它主要用于消除系统的静态误差,即系统输出与期望值之间的偏差。
通过积分控制,系统的输出信号可以逐渐趋近于期望值,从而实现更加精确的控制。
微分控制是根据误差的变化率来调节控制器的输出信号。
它主要用于抑制系统的动态误差,即系统输出与期望值之间的波动。
通过微分控制,系统的输出信号可以更加稳定,从而避免系统的振荡现象。
PID控制算法的优点在于简单易实现,并且适用于不同类型的控制系统。
它可以通过调节控制器的参数来适应不同的工作环境,从而实现对系统的精确控制。
此外,PID控制算法还具有良好的鲁棒性和稳定性,能够有效应对系统参数的变化和干扰信号的影响。
然而,PID控制算法也存在一些局限性。
首先,它仅仅是一种经验算法,并没有严格的理论基础。
其次,PID控制算法对系统的动态特性要求较高,如果系统的动态特性复杂或不稳定,可能会导致控制效果不佳。
此外,PID控制算法在处理非线性系统或时变系统时也存在一定的困难。
为了克服PID控制算法的局限性,人们提出了许多改进算法,如模糊PID控制、自适应PID控制等。
这些改进算法在PID控制的基础上加入了更多的参数和逻辑,以提高控制系统的性能和适应性。
PID控制理解
闭环控制器中最著名的控制机制是比例-积分-微分(PID)控制。
PID是对误差(控制对象实际输出值与期望输出值之间的差)进行处理以得到控制器的控制量的三种方式的统称。
比例控制(P-Proportional)是将误差乘以一个增益系数Kp从而得到控制量,其本质是将误差放大并立即用之纠正错误。
Kp越大则误差纠正越快,但是Kp太大会产生大的超调,甚至导致系统的不稳。
比例控制不能完全消除误差,因为当误差接近于0时,比例控制的作用也接近于0,其结果体现为一个稳态误差(静差)。
积分(I-Integral)控制是获取误差的时间积分,将其乘以一个增益系数K i 后得到控制量,其本质是对曾经产生的误差做出反应,这样在误差接近于0时其作用并不接近于0,就可消除静态误差。
积分增益系数可能产生副作用是导致系统不稳定。
微分(D-Differential)控制是将误差的变化率乘以增益系数K d来作为控制量,其本质是对抗和稳定系统的暂态响应,因此可认为其作为电子阻尼达到稳定系统的作用。
三种控制方式本质不同但是可以联合使用,并通过系统整定各取所长来优化系统。
PID调节是一种误差驱动机制,即系统中总是存在一定误差。
pid通俗讲解
PID全称是Proportional-Integral-Derivative(比例、积分、微分)控制,是一种广泛应用于工业过程控制的控制策略,也是最早发展的控制策略之一。
PID 控制器是一种将比例、积分、微分三部分合而为一的控制器,通过计算出控制量进行控制。
比例控制P是一种基于反馈的控制方式,能够快速调整系统输出,以满足需求的变化。
它将偏差(目标值和实际值的差值)乘以比例系数Kp作为控制输出,以确保输出能够快速跟上偏差的变化。
比例控制可以快速调整系统输出,在一些简单的系统中可以单独使用。
积分控制I是一种基于累计的控制方式,用于消除静态误差。
它的输出是过去偏差的积分值,即偏差乘以积分时间Ti。
积分控制可以消除静态误差,因此在一些需要保持一定稳定性的系统中可以单独使用。
微分控制D是一种基于变化趋势的控制方式,用于改善系统动态品质。
它的输出是偏差的变化率,即偏差的导数。
微分控制可以预测未来的变化趋势,并在偏差还未达到预期值时进行提前调整,从而改善系统动态品质。
在实际应用中,这三种控制方式可以单独使用,也可以结合使用。
例如,在一些简单的系统中,可以单独使用比例控制,以保证系统的快速响应。
在一些复杂的系统中,可以结合使用比例、积分、微分三种控制方式,以达到更好的控制效果。
需要注意的是,PID控制需要通过参数整定来达到最佳的控制效果。
不同的系统需要不同的PID参数,通常需要根据实际情况进行调整。
调整顺序为比例、积分、微分。
在调整参数时,需要注意曲线振荡的情况,此时需要调整比例度盘或积分时间,理想的曲线为前高后低4比1。
增量式PID计算公式4个疑问与与理解PID参数整定一开始见到PID计算公式时总是疑问为什么是那样子?为了理解那几道公式,当时将其未简化前的公式“活生生”地算了一遍,现在想来,这样的演算过程固然有助于理解,但假如一开始就带着对疑问的答案已有一定看法后再进行演算则会理解的更快!首先推荐白志刚的《由入门到精通—吃透PID 2.0版》看完一、二章之后,建议你先通过实践练习然后再回来看接下来的所有章节,这样你对这本书的掌握会更加牢固、节省时间。
PID就是对输入偏差进行比例积分微分运算,运算的叠加结果去控制执行机构。
实践练习中,如何把这一原理转化为程序?为什么是用那几个error进行计算?以下是我摘录的一段PID程序,我曾用其对智能车的速度进行闭环控制:P:Proportional比例I:Integrating积分D:Differentiation微分Pwm_value:输出Pwm暂空比的值Current_error:当前偏差last_error:上次偏差prev_error:上上次偏差增量式PID计算公式:P=Kp*(current_error﹣last_error);D=Kd*(current_error﹣2*last_error﹢prev_error);I=Ki*current_error;PID_add=Pwm_value+P﹢I﹢D;一、为什么是PID_add=Pwm_value+(P﹢I﹢D)而不是PID_add=P+I+D?如左图,有一个人前往目的地A,他用眼睛视觉传感器目测到距离目的地还有100m,即当前与目的地的偏差为100,他向双脚输出Δ=100J的能量,跑呀跑,10s之后,他又目测了一次,此时距离为40m,即current_error=40,他与10s前的偏差last_error=10对比,即current_error—last_error=—60,这是个负数,他意识到自己已经比较接近目的地,可以不用跑那么快,于是输出Δ=100+(—60)=40J的能量,40J的能量他刚好以4m/s的速度跑呀跑,10s之后,他发现已经到达目的点,此时current_error=0,大脑经过思考得出current_error—last_error=0—40=—40,两脚获得的能量Δ=40+(—40)=0,即他已经达到目的地,无需再跑。
PID白话式理解说明及智能车闭环控制详解By jiahangsonic编码器专卖 本文只是技术交流,仅仅是鄙人对一些知识的看法和认识,由于鄙人学疏才浅,必然会在本文中出现定义理解不深刻,原理叙述有误等错误,敬请各位理解,如有错误之处,请大家指出,我将积极学习改进。
其实很早就应该写这么一个东西,由于学习和工作太忙,一直没有时间去写,春节放假,偶尔有了时间,决心一定要写好,本文只是针对初学者,对于那些老鸟和大神们,基本上没有看的必要,所以再您看这篇文章之前,还要对我多多的理解和宽容,写不好,我改进学习,写的好,希望对您有帮助。
(一) PID的背景和一些原理上理解PID控制技术,是最简单的闭环控制技术之一,一般都是利用单反馈或者多反馈来实现对控制对象的调节,实现被控对象的可控性和可预知性的控制。
使得设备运行的更加的可靠,合理且平稳。
PID的全称为比例积分微分控制,P即为比例,I即为积分,D即为微分。
PID往往都是应用于惰性系统,所谓惰性系统就是变化较慢且无法精确控制和调节的对象,其中最最重要的特点就是变化速度慢,调节速度慢,控制周期较长,最经典的控制对象就为温度的温控。
下面就举一个简单的例子进行说明:比如我们要对一个水箱里面的水进行加热,我们的目标加热温度为100℃,首先我们不用闭环对水温进行加热,也就是说我们只是靠人为观察温度计的温度值来对加热器进行人工的干预。
当温度加热到100℃以后,我们就停止加热,这个时候,虽然水温已经到达100且加热器已经不再通电加热,但是由于加热器的预热和水本身传递温度的惰性,导致水温会继续上升,经过一段时间后,水温会继续升高,并且超过100℃,那么该系统就无法达到我们所预期的要求。
这个时候您谁想,停止加热后本身会继续散热继续升温,那等到温度到90摄氏度左右以后,我们停止加热,然后利用水的惰性和加热器的散热,让水温继续升温,正好达到100℃,这样不就解决问题了吗?这么想是对的,但是水温要达到90几度的时候我们停止加热呢?还有就是从停止加热到100℃的时间是多少?经过一段时间后,温度没有达到100℃,而是小于100摄氏度以后温度就达到了顶峰,这样怎么办?上述所有的办法,可能能够解决水温到达100℃的要求,但是其中很多环节很多结果都是无法预测和无法控制的,即便经历了很麻烦的人为干预同时经过了一个较长的时间达到了我们对水温加热到100℃的要求,也要经历一个相当复杂和相当漫长的时间才能达到,并且整个过程一直要有人为的干预,实在是属于劳民伤财。
PID控制算法通俗讲解PID控制算法是一种经典的反馈控制算法,其全称为“比例-积分-微分控制算法”,是目前工业领域使用最广泛的一种控制方法。
它通过调整输出信号和目标值之间的差异来实现系统的稳定和精确控制。
PID控制算法的原理非常复杂,但可以用一种通俗易懂的方式来解释。
我们可以把PID控制算法类比为一个小孩子学习骑自行车的过程。
小孩子第一次骑自行车时,会感到不稳定,容易摔倒。
这时,父母可能会帮助他们保持平衡,通过把手握住自行车后座来保持稳定。
这个过程就相当于PID控制算法中的“比例”部分。
“比例”部分是PID控制算法的基础,它通过调整输出信号和目标值之间的差值,来决定控制量的大小。
比如说,当小孩子离平衡点很远时,父母会用力拉住自行车,让他尽快回到平衡点。
而当离平衡点很近时,父母会放松控制,让他能够自主控制。
这就是“比例”部分的作用,根据偏差的大小来调整控制量,使系统向目标值靠近。
然而,只有“比例”部分还不足以保持稳定。
因为当小孩子骑自行车时,即便靠近平衡点,也有可能因为一些突发因素而失去平衡。
这时,父母可能会及时给他支撑,保持平衡。
这个过程就相当于PID控制算法中的“积分”部分。
“积分”部分的作用是累积系统在长时间内的偏差,并根据累积值来调整控制量。
当系统出现长时间的偏差时,积分部分会逐渐增加,产生补偿作用,使系统更加稳定。
比如说,当小孩子长时间无法保持平衡时,父母可能会给予更多的支撑力,帮助他恢复平衡。
不过,积分部分也有一个缺点,就是会导致系统的响应速度较慢。
因此,PID控制算法引入了“微分”部分来解决这个问题。
我们可以把微分部分类比为小孩子骑自行车时,父母根据自行车的倾斜程度来给予支撑的力度。
“微分”部分通过测量系统的变化速率来调整控制量。
当系统变化速率很快时,微分部分会增加控制量,使系统迅速做出反应。
比如说,当小孩子在转弯时,系统的变化速率会加大,父母就会给予更多的支撑力,以避免摔倒。
综上所述,PID控制算法通过比例、积分和微分三部分的组合来实现系统的稳定和精确控制。
智能车速度控制pid(电机闭环控制算法)智能车速度控制pid(电机闭环控制算法)对于智能车的电机闭环控制算法,我之所以标题没有写上智能车电机PID闭环控制算法是因为PID 算法根本就不是特别好的适用于智能车这种变化很快的系统,对于智能车,电机的调速可以说是时时刻刻再进行调速控制的,我上面说描述的经典PID 算法,都是针对一些惰性系统,也就是说是变化比较慢的系统的,所以对于智能车的电机调速采用完完整整的PID 算法,是根本不可取的,及时采用了,你必须要经过一些变换和改进才能使用。
以上的简述只是鄙人自己的看法,如有错误,请各位高手指正。
现在估计您会疑问,PID 不适用于智能车的电机控制,那什么才适用呢?鄙人原来做过智能车,从鄙人本身的理解,P 算法控制电机,也就是比例控制是最好的,反应速度快,控制精度高,不存在积分和微分效应,非常适用于适用于控制周期短的系统,当然,对于一些特殊的逻辑控制算法,可能要采用PD算法,用微分来做补偿,防止震荡和超调。
下面来说下电机控制算法从开始的加入到最终的确定的方法:当然这一切的前提就是安装了编码器,车速有反馈,只有加上编码器,有了反馈,才能组成一个闭环系统。
当然您也可以加上码盘,或者霍尔开关等一切可以返回车速的东西都可以。
(1)首先建议在车速比较慢的时候,采用PID 算法来控制电机,为什么开始要建议您采用PID 呢?主要是为了让您更加深刻理解PID 算法的精髓和调试步骤方法等,有助于以后对控制算法更加深入的研究和书写。
调试PID 三个参数的方法,很多地方都提供了,我在这里简单的说下:首先将ID 参数都变为0,先调整P 比例参数,调整到速度基本上跟您给定的速度差不多,也就是说基本稳定在您给定的脉冲数,当然这个时候会非常的震荡,不要担心,接下来调整I,调整I 的结果就是震荡会消除很多,但是车速会变化缓慢,也就是说会有一些延迟,然后再调整D,调整D 的结果就是增强调节的灵活性和预见性,在给定速度变化的过程中,能够以一个平稳过渡来变换,而且速度可以长时间稳定在给定速度附近,然后PID 三个参数的基本范围就确定了,然后再根据实际的跑车来微调这些参数,当然在您调试PID之前,请仔细阅读PID 理论知识,这样有助于您的调试和理解,。
pid通俗讲解PID控制是一种常见的闭环控制算法,它广泛应用于工业过程控制和自动化系统中。
PID控制器根据系统反馈信号与给定的目标值进行比较,并根据误差的大小调整控制输出,以使系统实现期望的控制效果。
一、PID控制的基本概念1.1 PID控制器的含义PID控制是指用比例(P)、积分(I)和微分(D)三个参数对系统进行控制的方式。
控制器通过比较给定值和反馈信号的差异,并根据这个差异调整输出信号,以使系统达到所期望的状态。
1.2 PID控制器的结构PID控制器由比例环节、积分环节和微分环节组成。
比例环节根据给定值和反馈信号的差异,按照一定比例调整输出信号;积分环节根据反馈信号与给定值的累积误差来调整输出信号;微分环节根据反馈信号的变化速率来调整输出信号。
1.3 PID参数的选择PID控制器的参数选择对于控制效果非常重要。
一般情况下,可以根据系统的特性和需求来优化PID参数。
比例参数决定了控制器对于误差的敏感程度,积分参数可以消除长期的误差累积,微分参数可以对系统的快速变化作出快速的响应。
二、PID控制的原理2.1 比例控制比例控制是PID控制中最基本的控制方式。
比例控制器根据给定值和反馈信号的差异按照一定的比例系数进行调整。
当比例系数增大时,控制器对误差的敏感程度增加,系统的过渡响应时间缩短,但可能引起系统的振荡和不稳定。
当比例系数过小时,系统的控制效果较差,可能导致较大的偏差。
2.2 积分控制积分控制是PID控制中的另一种控制方式,它可以消除长期的误差累积。
积分控制器根据反馈信号与给定值的累积误差进行调整。
当系统存在常态误差时,积分控制器可以通过积分作用逐渐消除误差。
但当积分系数过大时,会导致系统的过度抵消误差,甚至引起系统的不稳定。
2.3 微分控制微分控制是PID控制中的第三种控制方式,它主要用于响应系统快速变化的情况。
微分控制器根据反馈信号的变化速率来调整输出信号。
当系统存在突变或快速变化的情况时,微分控制器可以通过快速响应减小系统的超调和振荡。
PID属于闭环反馈控制,由3个参数组成。
首先,既然是闭环控制,我们要首先明确两个控制量:一个是目标量,就是我们想要的那个量,在变频器就是我们想要的那个频率X1。
另一个是变频器的输出量,也叫反馈量,就是变频器实际输出的频率X2。
在供水系统中,当系统稳定时,X1=X2;供水量增加时,系统的反应是需要时间的,这时X1就要大于X2,就会产生一个偏差值X3,X3=X1-X2。
下面说PID,P的名字叫“比例增益”,实际就是放大倍数,放大谁呢?放大X3。
通俗说P就是大老板,平时用走的,老板说:“快点!”就要用跑的。
P设定值越大,反应越快,动作越猛。
但是很不幸,反应的太快就叫神经过敏。
动作太猛就会跑过头。
变频器又蠢,跑过头半步,转过身就是一大步,于是X2经常就会在X1周围来回振荡,就是贴不上去。
---P可以使变频器对细微的变化即作出足够的反映,但是,变频系统的稳定性会下降,容易引起振荡。
这时,二老板I就上场了。
I的名字叫“积分时间”,就是一个动作时间,二老板I出厂以后就会对X2说:“朝着X1跑,不许太快,限时某某秒跑到,不许早也不许晚。
”执行I以后就会出现,反应很快,可跑的很慢。
大老板要生气的!---I会增加变频器反馈控制的稳定性,减少振荡;但是会导致变频器应对急剧的变化时来不及反应。
“这可怎么办啊?”这时狗头军师D登场。
D叫“动作微分”,这家伙一上来就支招:“笨!你不会反应快点,跑得快点,等快到的时候再减速,慢点贴过去吗?”D的作用就是根据变化的趋势,提前给出一个较大的调节动作,等X2接近到X1附近时,再相对缓慢的贴上去。
PID调节的意义在于依靠P获得对细微变化较为敏锐的反应,I抵消P所带来的不稳定因素,D补偿因为I所造成的反应迟钝现象。
PID调节到底是什么东西?PID调节到底是什么东西?经常看到有关PID调节问题书籍,看来看去看不懂他们再说什么。
还有一些技术员一提起PID调节,就摇头,搞不懂呀!那么PID调节的实质是什么?通俗的概念是什么?我们通过图1进行分析。
此主题相关图片如下,点击图片看大图:一个自动控制系统要能很好地完成任务,首先必须工作稳定,同时还必须满足调节过程的质量指标要求。
即:系统的响应快慢、稳定性、最大偏差等。
很明显,自动控制系统总希望在稳定工作状态下,具有较高的控制质量,我们希望持续时间短、超调量小、摆动次数少。
为了保证系统的精度,就要求系统有很高的放大系数,然而放大系数一高,又会造成系统不稳定,甚至系统产生振荡。
反之,只考虑调节过程的稳定性,又无法满足精度要求。
因此,调节过程中,系统稳定性与精度之间产生了矛盾。
如何解决这个矛盾,可以根据控制系统设计要求和实际情况,在控制系统中插入“校正网络”,矛盾就可以得到较好解决。
这种“校正网络”,有很多方法完成,其中就有PID方法。
简单的讲,PID“校正网络”是由比例积分PI和比例微分PD"元件组"成的。
为了说明问题,这里简单介绍一下比例积分PI和比例微分PD。
微分:从电学原理我们知道,见图2,当脉冲信号通过RC电路时,电容两端电压不能突变,电流超前电压90°,输入电压通过电阻R向电容充电,电流在t1时刻瞬间达到最大值,电阻两端电压Usc此刻也达到最大值。
随着电容两端电压不断升高,充电电流逐渐减小,电阻两端电压Usc也逐渐降低,最后为0,形成一个锯齿波电压。
这种电路称为微分电路,由于它对阶跃输入信号前沿“反应”激烈,其性质有加速作用。
积分:我们再来看图3,脉冲信号出现时,通过电阻R向电容充电,电容两端电压不能突变,电流在t1时刻瞬间达到最大值,电阻两端电压此刻也达到最大值。
电容两端电压U sc随着时间t不断升高,充电电流逐渐减小,最后为0,电容两端电压Usc也达到最大值,形成一个对数曲线。
PID白话式理解说明及智能车闭环控制详解By jiahangsonic编码器专卖 本文只是技术交流,仅仅是鄙人对一些知识的看法和认识,由于鄙人学疏才浅,必然会在本文中出现定义理解不深刻,原理叙述有误等错误,敬请各位高人理解,如有错误之处,请大家指出,我将积极学习改进。
其实很早就应该写这么一个东西,由于学习和工作太忙,一直没有时间去写,春节放假,偶尔有了时间,决心一定要写好,本文只是针对初学者,对于那些老鸟和大神们,基本上没有看的必要,所以再您看这篇文章之前,还要对我多多的理解和宽容,写不好,我改进学习,写的好,希望对您有帮助。
(一) PID的背景和一些原理上理解PID控制技术,是最简单的闭环控制技术之一,一般都是利用单反馈或者多反馈来实现对控制对象的调节,实现被控对象的可控性和可预知性的控制。
使得设备运行的更加的可靠,合理且平稳。
PID的全称为比例积分微分控制,P即为比例,I即为积分,D即为微分。
PID往往都是应用于惰性系统,所谓惰性系统就是变化较慢且无法精确控制和调节的对象,其中最最重要的特点就是变化速度慢,调节速度慢,控制周期较长,最经典的控制对象就为温度的温控。
下面就举一个简单的例子进行说明:比如我们要对一个水箱里面的水进行加热,我们的目标加热温度为100℃,首先我们不用闭环对水温进行加热,也就是说我们只是靠人为观察温度计的温度值来对加热器进行人工的干预。
当温度加热到100℃以后,我们就停止加热,这个时候,虽然水温已经到达100且加热器已经不再通电加热,但是由于加热器的预热和水本身传递温度的惰性,导致水温会继续上升,经过一段时间后,水温会继续升高,并且超过100℃,那么该系统就无法达到我们所预期的要求。
这个时候您谁想,停止加热后本身会继续散热继续升温,那等到温度到90摄氏度左右以后,我们停止加热,然后利用水的惰性和加热器的散热,让水温继续升温,正好达到100℃,这样不就解决问题了吗?这么想是对的,但是水温要达到90几度的时候我们停止加热呢?还有就是从停止加热到100℃的时间是多少?经过一段时间后,温度没有达到100℃,而是小于100摄氏度以后温度就达到了顶峰,这样怎么办?上述所有的办法,可能能够解决水温到达100℃的要求,但是其中很多环节很多结果都是无法预测和无法控制的,即便经历了很麻烦的人为干预同时经过了一个较长的时间达到了我们对水温加热到100℃的要求,也要经历一个相当复杂和相当漫长的时间才能达到,并且整个过程一直要有人为的干预,实在是属于劳民伤财。
不只是对温度的控制,还有其他很多领域的过程控制,都遇到了这些让人很困惑问题,所以科学家就针对此类问题发明了闭环控制原理,其中最经典最简单最实用的就是PID闭环控制。
该控制原理简单可靠,参数调整简便,实用性强,广泛的受到人们的支持。
利用PID控制原理对水温进行加热控制,我现在进行举例说明:目标温度还是我们之前设定的100℃,加热前我们首先要把这个温度值输入到加热器控制器中,此时温度计只是作为我们认为观察温度的一个参考,我们在水中放入一个电子温度计,电子温度计测量的温度可以传送到控制器,以使得我们的PID 控制器知道当前的水温,在刚刚通电加热的时候,水温假定为室温20℃,当前的水温会通过电子温度计测量并传输到PID控制器中,此温度作为当前温度值C_TEM,我们的目标温度值设定的为100℃作为T_TEM,那么CPU通过计算T_TEM-C_TEM=80,二者的差值较大为80,说明水温远远没有达到我们所需的100℃,那么这个时候CPU就给加热器通上最高的供电电压,以全速对水箱里面的水进行加热,随着加热的进行,水温会慢慢的增加,某一时刻,水温达到了80℃,那么目标温度与当前温度做差,差值仅仅为20,那么CPU就知道了当前的温度跟实际我们所希望的温度差别已经很小了,那么这个时候控制器就减小加热器的供电电压,以一个适当的加热量对水温进行加热。
当到了一个时刻,水温达到了95℃,目标温度和他的差值仅仅只有5了,说明温度已经十分接近目标温度,此时控制器可能已经早已停止对加热器供电或者以一个更加低电压的加热量对水温进行加热,直到水温加热到100℃。
当然水温不可能一直恒定在100℃,水温一定会超过100摄氏度,但是由于采用PID闭环控制,水温不会超过的太多,比如某一时刻水温到达了105℃,做差后,差值为-5℃,CPU就知道此时温度已经超过了目标温度,那么将会在一段时间内停止加热,直到温度降低到100℃或者100℃以下后再进行进一步控制,所以当水温到达100摄氏度附近的时候,CPU控制器将会频繁的对加热器进行控制,从而导致水温永远维持在100℃左右附近,而且水温与100℃的目标温度相差不会很大,宏观上通过平均测量,水温就是认为在100℃了,其实根本上,水温是永远不会达到正好的100℃,只能是在100℃左右进行震荡,但是震荡始终不会太大,从而达到了我们控制目标对象的要求,使得加热系统变得更加科学更加可控。
当然上述所说明的PID加热状态是PID各项参数调节比较好的情况下的状态,PID三个参数调整不好,会带来很多问题,比如系统震荡,超调等问题,所以调整PID参数也是一个比较重要的环节,这个我将会在下面进行说明。
上述对水温的PID控制已经基本上说明了PID控制的核心,我们之所以利用PID进行闭环控制,就是为了让被控制对象快速稳定的达到目标值,从而实现对被控制对象的可控性,可预知性。
一个人无法控制就是一个疯子,一个车子速度无法控制就是一个疯车。
(二) 智能车电机闭环控制算法对于智能车的电机闭环控制算法,我之所以标题没有写上“智能车电机PID 闭环控制算法”是因为PID算法根本就不是特别好的适用于智能车这种变化很快的系统,对于智能车,电机的调速可以说是时时刻刻再进行调速控制的,我上面说描述的经典PID算法,都是针对一些惰性系统,也就是说是变化比较慢的系统的,所以对于智能车的电机调速采用完完整整的PID算法,是根本不可取的,及时采用了,你必须要经过一些变换和改进才能使用。
以上的简述只是鄙人自己的看法,如有错误,请各位高手指正。
现在估计您会疑问,PID不适用于智能车的电机控制,那什么才适用呢?鄙人原来做过智能车,从鄙人本身的理解,P算法控制电机,也就是比例控制是最好的,反应速度快,控制精度高,不存在积分和微分效应,非常适用于适用于控制周期短的系统,当然,对于一些特殊的逻辑控制算法,可能要采用PD 算法,用微分来做补偿,防止震荡和超调。
下面来说下电机控制算法从开始的加入到最终的确定的方法:当然这一切的前提就是安装了编码器,车速有反馈,只有加上编码器,有了反馈,才能组成一个闭环系统。
当然您也可以加上码盘,或者霍尔开关等一切可以返回车速的东西都可以。
(1) 首先建议在车速比较慢的时候,采用PID算法来控制电机,为什么开始要建议您采用PID呢?主要是为了让您更加深刻理解PID算法的精髓和调试步骤方法等,有助于以后对控制算法更加深入的研究和书写。
调试PID三个参数的方法,很多地方都提供了,我在这里简单的说下:首先将ID参数都变为0,先调整P比例参数,调整到速度基本上跟您给定的速度差不多,也就是说基本稳定在您给定的脉冲数,当然这个时候会非常的震荡,不要担心,接下来调整I,调整I的结果就是震荡会消除很多,但是车速会变化缓慢,也就是说会有一些延迟,然后再调整D,调整D的结果就是增强调节的灵活性和预见性,在给定速度变化的过程中,能够以一个平稳过渡来变换,而且速度可以长时间稳定在给定速度附近,然后PID三个参数的基本范围就确定了,然后再根据实际的跑车来微调这些参数,当然在您调试PID之前,请仔细阅读PID理论知识,这样有助于您的调试和理解,当您把PID调整好以后,您就基本上领会了PID的精髓,对于以后的调试作用非常大。
这里的给定速度,就相当于上面对温度例子中说的设定温度。
意思是一样一样的。
(2) 当您对PID掌握以后,您能做到给定多少速度,就能让车速稳定在这个给定速度左右,可以适当的提高点车速,慢慢的观察效果,你会发现当速度增加的时候,车速的控制会变得越来越糟糕,调节缓慢,灵活性差。
这个时候您就可以试着去掉I积分环节,然后再重新调整参数,按照上面说的,然后继续观察效果,试着提高速度,继续观察,因为车速毕竟很慢,很多细节我们都能看到,所以您就可以看到PID到PD变换以后,实际的效果是增加多少,也算是一种进步,这个时候,经典的PID公式已经被我们简化,不要担心,您可以多多实验多多观察,可能在这个变换之间,您能受到很多启发,会产生很多思路,谁以后的调试车子都是有好处的。
所以搞智能车,自己一步一步的进步学习,远远比去某些淘宝店铺购买现成的程序学到的东西更多,体会的也更多,思维开阔的也更多。
(3) 在您的车速在3M内的时候,我强烈建议您采用PD算法,因为PD算法是最好调整,最容易控制的。
当然这个时候我也强烈建议您加上P控制,P控制的话,不是说就单纯的P*偏差然后得到的值给定PWM,而是一定要加上一些逻辑控制,不加上逻辑控制而是直接运用比例公式来给定PWM值,将会带来很多问题,具体的逻辑控制讲解,在以后我会写出相关的文档,谢谢。
采用增量式编码器为反馈的智能车电机闭环调速系统:其实借助于我上面举得例子,到这里,您可能已经明白对于智能车来说闭环系统是一个必须的,不可脱离的。
当然,您可能已经完全明白智能车电机闭环调速系统怎么做,并且您可能也做的更好,要比我在这里所说的更加的先进更加的有创意更加的有效果。
所以在这里我只是简单的说说,谢谢。
首先,我们需要时刻反馈当前的智能车速度给单片机或者ARM,让系统知道当前速度,有助于控制。
我们先说说为什么我们要反馈车子速度,要知道车子当前的速度?因为我们的CPU利用传感器采集道路信息,通过CPU收集和处理变化,系统就能知道车子当前的状态,比如是在直到上?还是在进入弯道?还是在弯道内?还是正在出弯道?还是在上坡?还是穿过了起跑线?有了这些信息,我们首先就是对舵机的控制,控制车子根据什么道路情况来进行转弯,转弯的方向,大小,都是靠这些数据来实现,当然当前的速度值也是控制舵机转向大小的一个附加因素,这样更加的有利于我们及时处理不同弯道。
知道了这些信息,就跟我们开车一样,我们要转弯了,得感知我们车的速度,怎么感知啊,就靠汽车自带的速度表,这样我们就可以通过控制刹车或者油门还有方向盘来控制车子平稳的转过弯道,不同的弯道,不同的速度,转弯的控制和刹车的控制都是不同的。
如果我们不知道当前的速度,那么很可能因为拐弯速度过快,导致翻车,或者侧滑,造成危险。
智能车情况跟真车是一样的,我们必须知道车子当前速度,比如我们智能车拐弯安全速度是3M/S,所谓安全速度就是车子顺利安全且没有较大侧滑过弯时的速度,在进入弯道前我们车子的速度是4M/S,当传感器感知要进入弯道了,通过跟安全速度对比,我们发现智能车的速度远大于安全弯道速度,这个时候我们就要刹车,把车子速度快速降低到3M/S,这样保证我们顺利快速的过弯。