飞思卡尔智能车PID改进算法
智能汽车控制策略及PID算法分析

智能汽车控制策略及其PID 算法分析作者:王保磊机电1103-11221077目录背景简介一.智能汽车竞赛简介: (1)系统建立二.控制策略: (1)2.1:理论分析 (2)2.2 : PID 控制规律的离散化 (3)2.3 : matlab 分析 (4)2.4 :系统校正 (9)总结三.总结: (14)一.智能汽车竞赛简介。
全国大学生“飞思卡尔”杯智能汽车竞赛是在规定的模型汽车平台上,使用飞思卡尔半导体公司的 8 位、 16 位微控制器作为核心控制模块,通过增加道路传感器、电机驱动电路以及编写相应软件,制作一个能够自主识别道路的模型汽车,按照规定路线行进,以完成时间最短者为优胜。
因而该竞赛是涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械等多个学科的比赛。
摄像头组比赛规则:采用模拟或数字摄像头对赛道信息进行采集,通过硬件二值化并进行软件信息处理,获得赛道信息,采用规定的舵机和电机控制小车的行走。
相同的赛道,竞速,完成赛道时间短的队伍获胜。
下图为赛道示意图和实际赛道照片。
为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。
即应使小车在直道上以最快的速度行驶。
在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯,并在弯道中保持恒速。
从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升,直至以最大的速度行进。
为实现上述控制思想,我们采用不同的控制方法来控制小车的转角和速度。
下图为小车的实物模型:二.控制策略。
2.1:理论分析:Ov7620 数字摄像头采集到的赛道信息为采集点灰度值,这些灰度值与设定的阀值进行比较转化为二进制信息,利用这些二进制信息可以确定赛道黑线位置,进而确定小车当前位置及理想通过曲线。
求得理想通过曲线上各点的斜率进而确定赛道类型,通过算法控制电机转速,以保证小车安全通过赛道防止侧翻和打滑。
计算小车的当前位置横坐标值即摄像头视野中线与理想通过曲线与横坐标交点的差值。
PID算法深度技术帖-写给参加飞思卡尔智能车大赛的朋友

PID算法深度技术帖*写给参加飞思卡尔智能车大赛的朋友作者:王玉鹏(郑州轻工业学院)最近很多朋友问我关于PID的算法。
这里我就简单整理了下:PID控制算法是最经典的自动控制算法。
所有《自动控制原理》教材均有大幅篇章介绍。
从数学模型到传递函数,公式推导不厌其烦。
很多‘童鞋’似懂非懂。
下面我就从程序的角度来讲:下面是PID控制系统的原理图PID算法具体分两种:一种是位置式的,一种是增量式的。
在大多数的情况下,执行机构本身没有状态记忆功能,每时每刻都要靠控制信号驱动,如果失去控制信号,执行机构即失去功能。
在这种场合必须采用位置式PID控制算法。
也有一些执行机构具有记忆功能,即使失去驱动信号仍然可以维持原来的状态不变。
例如在用步进电机作为执行机构的自动化控制系统中(数控机床最为典型)下面主要针对位置式PID来讲,以加温设备为例,软件采用uc/os-ii嵌入式操作系统环境//采用位置式PID控制算法的任务函数float Set;//设定值float KP;//比例常数float KI;//积分常数float KD;//微分常数float LE=0;//上次误差float SE;//累计误差void TaskSampleCtrl(void *pdata)//采样控制函数{float now,E,DE,out;//定义临时变量while(1){now=SampleAdc();//传感器采样一次E=Set-now; //计算当前误差SE+=E; //计算当前误差的积分值DE=E-LE; //计算当前误差的微分值out=KP*E //计算比例项+KI*SE //计算积分项+KD*DE; //计算微分项CtrlOut(out); //控制执行机构LE=E; //保存误差值以进行下次计算OSTimeDly(25); //心跳20ms 延时0.5s(采样周期)}}PID参数调节:1.如果被控制对象的温度很快达到设定值,并超过设定值很多才回调(此种称为超调),则应该减小KP和KI,降低控制强度;加大KD,抑止超调。
PID算法原理及调整规律

PID算法原理及调整规律一、PID算法简介在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。
首先必须明确PID算法是基于反馈的。
一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。
简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。
顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。
在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。
要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。
举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。
从而达到了调节速度的目的。
显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。
从而,加大P值,可以减少从非稳态到稳态的时间。
但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。
积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。
当差值不是很大时,为了不引起振荡。
可以先让电机按原转速继续运行。
当时要将这个差值用积分项累加。
当这个和累加到一定值时,再一次性进行处理。
从而避免了振荡现象的发生。
可见,积分项的调节存在明显的滞后。
而且I值越大,滞后效果越明显。
微分D:微分项部分其实就是求电机转速的变化率。
也就是前后两次差值的差而已。
也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。
可见微分项的调节是超前的。
并且D值越大,超前作用越明显。
可以在一定程度上缓冲振荡。
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
PID算法及标准PID算法的改进

PID算法及标准PID算法的改进PID控制器具有结构简单、容易实现、控制效果好、鲁棒性强等特点,是迄今为止最稳定的控制方法。
它所涉及的参数物理意义明确,理论分析体系完整,并为工程界所熟悉,因而在工业过程控制中得到了广泛应用。
从实际需要出发,一种好的PID控制器参数整定方法,不仅可以减少操作人员的负担,还可以使系统处于最佳运行状态。
因此,对PID控制器参数整定法的研究具有重要的实际意义。
本文介绍了PID控制技术的发展历史和研究进展。
分析了传统的模拟和数字PID控制算法,并对传统的PID控制算法进行微分项和积分项的改进,学习了几种比较普遍运用的方法,如不完全微分PID控制算法、微分先行、遇限消弱积分PID控制算法等。
在学习的基础上,提出了一种自整定参数的专家模糊PID控制算法,由仿真结果可以看到,这种参数自整定方法与一般控制方法(抗积分饱和控制法)相比,在调节时间、抑制超调量、稳定性都要好,可以在工业上推广使用。
关键词:PID控制;结构简单;控制算法;参数整定So far, the PID is the most common control arithmetic. Its structure is simple and easy to implement, however, the control effect is perfect and it has a strong robust characteristics. The physical parameters is, meaning of ,theoretical analysis of system is integrity, and it is familiar by the engineering sector, which in the industrial process control has been widely used. For the actual needs, a good parameter PID controller tuning method can not only reduce the burden on operators, but also make the system running at best. Therefore, the fixed PID controller parameter tuning study has important practical significance. In this paper,we will introduce the development history and the research progress of PID control technology,analysis the traditional analog and digital PID control algorithm.and improve the differential and integral of traditional PID control algorithm. Learn several methods we used commom.Such as not fully differential PID control algorithm, first differential, when limited to weaken the integral PID control algorithm. based on study,we will learn the expert fuzzy control algorithm that can self-tuning PID parameters.from the simulation results we can see that compared the general (anti-saturation control), this method of parameter self-tuning in regulation time, overshoot suppression and stability well, It can promote be used in industry.Key words: PID Control; Simple Structure; Control Arithmetic;Parameter Tuning1 引言PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
智能车增量PID调节经验

1、把I、D调成0 调P给一个较大的值,给一个2米左右的期望值,给好P值后,先空载,如果速度受控,就把车放在跑道上,如果超调,车子就会以大概8m每秒的速度飞奔,如果出现这种情况,就往小调,直到找到临界值,记下那个临界值,做好防撞。
2、P调好后,在临界值的基础上增加百分之30到40,然后调I ,同样的方法I在临界值的基础上增加百分之60到80,然后调D。
3、D只需要微调,慢慢往上加,找到刚好不震荡的那个点就行了。
说明:在调节期间,只用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调试心得

本人曾在大二,大三参加过第六,第七届飞思卡尔智能车比赛,之后在考研过后在飞思卡尔智能车为我打下的良好基础下开始制作四轴飞行器.在年中到现在陆续调试了两架四轴,一架十字,一架X.其中四轴的平衡是很重要的一环,其中涉及到的PID整定,因为听闻今年摄像头也要站起来了,个人认为PID整定过程都有可以互相借鉴之处,顾在此一贴,也顺便为我的ARM-ST校园比赛求支持。
PID调试心得本人不是自动化出身,也没有受过专业训练,都是自己摸索,在这里浅述一下自己的PID参数整定心得。
所言之物皆由实践及自己的理解得出,如有不当之处还请指正.首先例举第一个例子,我调的第一台四轴飞行器,十字型四轴飞行器,讲下配置:网上一百多的650机架,好赢20A电调,新西达2212 1000kV,1045的桨,2200mah 电池.采用位置式PID控制,位置式PID公式如下PID的基本意义我在次就不作阐述了,我只讲我的设计,我以姿态角作为被控制对象,所以e(k) = 期望—测量 = 给定值—测量姿态角对于微分项D,我做了一点改变,标准PID的微分项D=kd*(e(k)—e(k-1)),我在实践过程中因为角度的微分就是角速度,而陀螺仪可以直接测出角速度,所以我没有将微分项作为偏差的差而是直接用D=kd*Gyro实现代码如下float pidUpdate(pidsuite* pid, const float measured,float expect,float gyro){float output;static float lastoutput=0;pid—〉desired=expect;//获取期望角度pid—>error = pid-〉desired - measured; //偏差:期望-测量值 pid—>integ += pid—>error * IMU_UPDATE_DT; //偏差积分if (pid—>integ > pid—>iLimit) //作积分限制{pid->integ = pid-〉iLimit;}else if (pid-〉integ 〈—pid-〉iLimit){pid-〉integ = —pid->iLimit;}// pid—〉deriv = (pid—>error — pid—>prevError) / IMU_UPDATE_DT;//微分应该可用陀螺仪角速度代替pid->deriv = -gyro;if(fabs(pid—>error)>Piddeadband)//pid死区{pid—〉outP = pid-〉kp * pid—〉error;//方便独立观察pid->outI = pid—>ki * pid—〉integ;pid—>outD = pid-〉kd * pid-〉deriv;output = (pid-〉kp * pid—>error) +(pid-〉ki * pid->integ) +(pid—〉kd * pid-〉deriv);}else{output=lastoutput;}pid->prevError = pid->error; //更新前一次偏差lastoutput=output;return output;}我这么做的原因是因为,如果使用传统的D的形式,在我快速打舵时会产生输入的设定值变化频繁且幅度较大,四轴飞行器会迅速回到新的期望点,说白了就是非常灵活,四轴回复很猛,也许造成系统的振荡,对PID参数要求较高。
PID控制改进算法—变结构PID控制原理

卧龙岗主编辑
注:本文所述控制方法针对由无自带积分记忆环节的执行器所构成的控制系统
1 传统 PID 控制算法原理及其缺陷
传统的位置型 PID 控制器的差分方程及控制算法为:
T u (n) K P e(n) TI
n i 0
u e(i) T [e(n) e(n 1)]
二、微分环节: 微分环节具有超前控制的特性, 可以根据偏差的变化趋势在偏差值发生较大变化之前输出抑制 偏差变化的控制量。其对控制过程会产生以下三方面的影响: (1)在目标值发生改变的瞬间,偏差值会瞬间产生阶跃变化,若微分时间常数选取合适,微分环 节可以起到提高系统响应速度的作用。 当微分时间常数设置过大时, 又会使得微分环节在调节开始 瞬间由于偏差值的阶跃而输出一个较大的控制量, 对控制系统造成较大冲击, 有时甚至使控制系统 输出的控制量超出目标值甚至超出执行器的输入范围, 产生微分饱和; 但过小的微分时间常数又不 足以发挥微分环节的作用。
算法所得控制量U
U umax
NO
U umax
YES
U u min
YES
NO
U umin
输出控制量U
4.2 比例环节的作用
比例控制器所产生的原理性稳态误差和结构性稳态误差可以通过引入位置记忆环节来消除, 代 替积分环节的作用。 即令 u (n) Ke(n) u(n 1 ) , 其中 u(n 1) 为上一个控制周期 PID 控制器输出 到执行器的控制变量, 它与本次控制周期输出控制变量之前的阀门位置相对应。 这样只要有误差存 在,就可以使调节阀在当前位置的基础上继续动作,从而消除稳态误差, K P 0 。 比例环节贯穿调节全程, 发挥主导作用, 第 n 次信号采样之后, 比例控制器输出的控制变量为:
智能小车pid算法

通过红外 LED 的电流为 5mA 左右。
采用了 TA0 来发生红外线,不干扰 CPU 的运行:
void TimerAInit()
{ //设置数组,对应频率分别为 38,41,44,48,54,60,67
TACTL |= TASSEL_2 + TACLR + MC_1 ; //TIMER_A 时钟源选为 SMCLK,清 TAR
if(IRE5_IN==0) // 如果接收到的信号为低电平,表明右前方有障碍物 {flag_4 = 1;BarrierData[4]=5-i;} else BarrierData[4]=0; PIRE5_L; // 关闭 5 号传感器 }
if(flag_0||flag_1||flag_2||flag_3||flag_4) {flag=1;} else flag=0;
光的强弱,小车都能稳定地、以大概相同的速度寻光进入车库。
这个问题要是深究下去还有很多值得研究的地方:比如同时有若干个强光
源,小车现在的算法是朝着这些光源合成的几何中心进行,如果要实现朝着光最
强的那个光源行进该采用什么样的算法。
避障算法采用了检测发射红外 LED,读一体化接收头的数据判断障碍物的
位置。这里采用 38Khz 敏感的接收头。为了使小车的检测距离适中,还需调整
}
3.3 串口通信
由于小车采用双核结构,所以就涉及到了两个单片机的通信问题。在整个进
行的过程中,由于两个单片机分工明确,需要通信的地方大概有如下几个地方:
1. 启动时,149 给 425 发送信号,开始计时;
2. 检测到金属时,425 发给 149 计数;
3. 检测到 C 点停车;
4. 车身入库后 149 发给 425 停车,停止计时。
飞思卡尔智能车 电机PID - 云说风轻 - 博客园

比例、积分和微分的线性组合,构成控制量u(t),称为:比例(Proportional)分(Differentiation)控制,简称PID控制。
比例作用P只与偏差成正比,积分作用微分作用D是偏差的变化率。
用一句形象的比喻,比例P代表着现在,积分I代表着过去,而微分D则代表着未来。
公式如图: 具体于比例、积分和微分,网上有很多这方面的资料,我就不多说了。
下面是关于参数的调整,比例系数、积分系数和微分系数的合理调整时整个PID系统可以正常温度工作的关键。
而最好的寻找PID参数的办法是从系统的数学模型出发,从想要的反应来计算参数。
很多时候一个详细 Tyreus¡¡Luyben的整定值即减少了震荡的作用,而且增强了系统的稳定性。
理论上的就不多说了,我自己都懒得多看。
代码/****************************************************************Code Warrior 5.0Target : MC9S12XS128Crystal: 16.000Mhzby:庞辉芜湖联大飞思卡尔项目组******************************************************************///拨码开关选择脉冲const sint16 speed_arr1[253] = {37,37,37,85,85,85,37,37,37};const sint16 speed_arr2[253] = {38,38,38,90,90,90,38,38,38#define #definepang123hui的博客:博客园/pang123hui/ CSDN/pang123hui/。
飞思卡尔小车PID控制的通俗理解

{ int iError, iIncpid; //当前误差 iError = sptr->SetPoint - NextPoint; //增量计算 iIncpid = sptr->Proportion * iError //E[k]项 - sptr->Integral * sptr->LastError //E[k-1]项 + sptr->Derivative * sptr->PrevError; //E[k-2]项 sptr->PrevError = sptr->LastError; //存储误差,用于下次计算
思,I 是 Integral,积分,D 是 Differential 微分。 打个比方,如果现在的输出是1,目标输出是100,那么 P 的作用
是以最快的速度达到100,把 P 理解为一个系数即可;而 I 呢?大家 学过高数的,0的积分才能是一个常数,I 就是使误差为0而起调和作 用;D 呢?大家都知道微分是求导数,导数代表切线是吧,切线的方 向就是最快到至高点的方向。这样理解,最快获得最优解,那么微分 就是加快调节过程的作用了。
小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的 。如果是线性的,直接 用 P 就可以了。比如在 PWM=60%时,速度是2M/S,那么你要它3M/S,就把 PWM 提 高到90%。因为90/60=3/2,这样一来太完美了。完美是不可能的。
那么不是线性的,要怎么怎么控制 PWM 使速度达到即定的速度呢?即要快,又要准, 又要狠。(即快准狠)系统这个速度的调整过程就必须通过某个算法调整,一般 PID 就是这 个所用的算法。
#define HAVE_NEW_VELOCIT Y 0X01
//***************************************************** //声明 PID 实体
PID 控制算法及其积分项的改进

行累加, 计算机运算工作量大。 (2 ) 增量式 PID 控制算法 位置式 PID 控制算法在计算时要对偏差量进行累加, 计算量大, 且要 占用大量的存储单元, 不便于编写程序, 为此可对其进行改进, 得到增量式 PID 控制算法。 根据式 ( 5 ) 不难写出 u(k-1)的表达式, 即
u (k-1) K e(k 1) T T e (i ) T e(k 1) e( k T 2) (6)
科技创新与应用
Kp = 1 为比例增益, Ki= KpT 为积分系数, Kd= KpTd 为微分系数。 式中, Ti δ T 通常计算机控制系统采用恒定的采样周期 T, 当确定了 Kp、 Ki、 Kd 后, 只 要使用前 3 次测量值, 即可求出控制增量。采用增量式算法时, 计算机输出 是本次执行机构位置的增量, 因此具有误动作时影响小、 较容易通过加权 积 处理而获得比较好的控制效果等优点。但增量式控制也有其不足之处: 分截断效应大, 有静态误差等。 2 PID 控制算法的改进 随着控制系统复杂程度的增加、 实际控制对象的非线性和时变等情况 的普遍存在, 常规 PID 控制的适应性往往欠佳, 实际控制场合中逐渐引进 各种先进的控制策略。但是, 限于先进控制策略理论的复杂和实际实现的 经济效益, 对具有简单结构的 PID 控制的改进成为人们长期以来的研究热 点。 对于 PID 控制的改进主要体现在对其参数整定的先进技术和控制结构 的研究上。参数整定的先进技术主要是通过模糊、 神经网络、 自适应控制等 图 1 模拟 PID 控制系统原理框图 抗积分饱和、 不完全微分、 技术实现的; 控制结构的改进主要有: 积分分离、 其控制规律为 微分先行、 前馈补偿、 带死区等。实际应用中较为广泛的是积分分离和带死 1 de(t ) u (t ) K e(t ) e(t )dt T (1) 区饱和的 PID 控制, 本文仅以积分项的改进措施进行相关的分析研究。 T dt 2.1 常规积分分离 PID 控制算法 对应的传递函数为 提高控 在普通 PID 控制中引入积分环节的目的主要是为了消除净差, 制性能。但在一般的 PID 控制中, 当有较大的扰动或大幅度改变给定值时, 在积分项的作用下往往会产生较大 Kp 为比例增益, Ti 为积分时间常数, Td 为微分时间常数, u(t)为控 短时间内系统输出会产生较大的偏差, 式中, 的超调和长时间的波动。特别对于温度等变化缓慢的过程, 这一现象更为 制量, e(t)为偏差。 即偏差 e(k)较大时, 取消积分作用, 以免由 PID 控制器各校正环节的作用如下: ( 1 ) 比例环节: 成比例地反映控制 严重。为此可采用积分分离措施, 超调量增大; 当被控量接近给定值时, 引入 系统的偏差信号 e(t), 偏差一旦产生, 控制器能立即产生控制作用, 从而减小 于积分作用使系统稳定性降低, 以便消除净差, 提高控制精度。亦即 偏差。 但比例控制不能消除稳态误差, Kp 过大甚至会使系统有较大的超调, 积分控制, (1 ) 当 e(k ) 时, 采用 PD 控制, 可避免产生较大的超调, 又使系统有 并产生振荡, 使系统稳定性变差。 (2 ) 积分环节: 主要用于消除净差, 提高系 ( 2 ) 当 e(k ) 时, 采用 PID 控制, 以保证系统的控制精度。 统的无差度。只要系统存在偏差, 积分作用就不断积累, 输出控制量以消除 较快的响应; 其中积分分离阈值 ε 应根据具体对象及控制要求确定。若 ε 值过大, 但积分作用太强会使系统超调加大, 甚至使系统出现振荡。 (3 ) 微分环 偏差。 若 ε 值过小, 一旦被控量 y(t)无法跳出各积分分离 节: 反映偏差信号的变化趋势, 可以减小超调量, 克服振荡, 使系统的稳定性 达不到积分分离的目的; 只进行 PD 控制, 将会出现残差。 为了实现积分分离, 编写程序时应从数 提高, 同时加快系统的动态响应速度, 减小调整时间, 从而改善系统的动态 区, 进行特殊处理。 性能。但过大的微分作用会使系统对扰动的抑制能力减弱, 对扰动有较敏 字 PID 差分方程中分离出积分项, 常规积分分离控制算法可表示为 感的响应。 1.2 数字 PID 控制 在计算机控制系统中, PID 控制规律的实现必须使用数值逼近的方法 式中, β 为积分项的开关系数。 来实现。 当采样周期相当短时, 用求和代替积分、 用后向差分代替微分, 使模 1 e (k ) 拟 PID 离散化为差分方程。 根据输出量 u(t)的形式不同, 通常将数字 PID 控 (9) 0 e( k ) 制算法分为位置式 PID 控制算法和增量式 PID 控制算法。 ε 值的确定要根据实际系统来分析, 若 ε 值过大, 则达不到积分分离的 ( 1 ) 位置式 PID 控制算法 若 ε 值过小, 则会导致系统无法进入积分区, 从而使系统出现余差。 为了便于计算机实现, 必须把式(1)变换成差分方程, 为此可做以下近 目的; 2.2 改进积分分离 PID 控制算法 似: e(t )dt Te(i) (3) 在常规积分分离 PID 控制算法中, 控制规律只有两种状态: PD 控制和 de(t ) e(k ) e(k 1) PID 控制。 结合实际控制性能分析, 将分段控制策略应用到 PID 积分分离问 (4) dt T 题中可得到更为理想的控制效果, 其基本思想就是选取多个阈值, 将式(9)进 行进一步的细分, 对积分项的系数 β 细化, 取值范围为[0, 1], 而不再仅仅是 式中, T 为采样周期, k 为采样序号。 0 和 1 两个分立值。 多阈值的选取有很多种方法, 可以根据经验人为给定几 由式(1)、 式(2)、 式(3)可得数字 PID 位置型控制算式为 个阈值常数, 也可以根据实际规律构造积分项系数 β 与 e(k)的函数关系式。 为简便明了, 本文仅以人为给定各阈值的方法来介绍积分分离改进措施。 假设根据实际控制经验需给定 4 个阈值 ε1、 ε2、 ε3、 ε4, 则 β 取值可分为 5 位置式 PID 控制算法输出的 u(k)直接去控制执行机构, u(k)的值和执行 以上分段阈值的设置可表示为如下形式 每次输出均与过去的状态有关, 计算时要 e(k)进 段, 机构的位置是一一对应的。
飞思小车PID控制的通俗理解

飞思小车PID控制的通俗理解(之一)[原]很多同学都不清楚PID是个什么东西,因为很多不是自动化的学生。
他们开口就要资料,要程序。
这是明显的学习方法不对,起码,首先,你要理解PID是个什么东西。
本文以通俗的理解,以小车纵向控制举例说明PID的一些理解。
首先,为什么要做PID由于外界原因,小车的实际速度有时不稳定,这是其一,要让小车以最快的时间达达到既定的目标速度,这是其二。
速度控制系统是闭环,才能满足整个系统的稳定要求,必竟速度是系统参数之一,这是其三.小车调速肯定不是线性的,外界因素那么多,没人能证明是线性的。
如果是线性的,直接用P就可以了。
比如在PWM=60%时,速度是2M/S,那么你要它3M/S,就把PWM提高到90%。
因为90/60=3/2,这样一来太完美了。
完美是不可能的。
那么不是线性的,要怎么怎么控制PWM使速度达到即定的速度呢即要快,又要准,又要狠。
(即快准狠)系统这个速度的调整过程就必须通过某个算法调整,一般PID就是这个所用的算法。
可能你会想到,如果通过编码器测得现在的速度是s,要达到s的速度,那么我把PWM增大一点不就行了吗是的,增大PWM多少呢必须要通过算法,因为PWM和速度是个什么关系,对于整个系统来说,谁也不知道。
要一点一点的试,加个1%,不够,再加1%还是不够,那么第三次你还会加1%吗很有可能就加2%了。
通过PID三个参数得到一个表达式:△PWM=a*△V1+b*△V2+c*△V3,abc是通过PID的那个长长的公式展开,然后约简后的数字,△V1,△V2,△V3此前第一次调整后的速度差,第二次调整后的速度差,第三次。
一句话,PID要使当前速度达到目标速度最快,需要建立如何调整PWM和速度之间的关系。
输入输出是什么:输入就是前次速度,前前次速度,前前前次速度。
输出就是你的PWM应该增加或减小多少。
飞思小车PID控制的通俗理解(之二)[原]为了避免教科书公式化的说明,本文用口语化和通俗的语言描述。
基于视觉的智能车模糊PID控制算法.

^工●动化目动■●与控嗣AutomaticO.LAutomation2008,'C01.27.No.102008年第27卷第10期文章编号tMeasurementandControl1006-1576(2008)10-0067-03基于视觉的智能车模糊PID控制算法刘进,齐晓慧,李永科(军械工程学院光学与电子工程系,河北石家庄050003)摘要:基于freescale公司的16住HCSl2单片机设计一种智能车系统.系统摄像头采集路径信息,通过单片机的模糊推理机在线整定PID参数,使小车能按照任意给定的黑色引导线平稳地寻迹.实验证明:系统能很好地满足智能车对路径识别性能和抗干扰能力的要求,舵机调节响应时间快,稳态误差小,具有较好的动态性能和良好的鲁棒性.关键词:智能车;HCSl2单片机;模糊PID;控制算法中图分类号:TPl8;TP273+.4文献标识码:AonIntelligentVehicleFuzzy—PIDControlAlgorithmBasedLIUVisionJin,QIXiao—hui.LIYong・ke(Dept.ofOptical&ElectricalEngineering,OrdnanceEngineeringonCollege,Shijiazhuang050003.China)Abstract:AnintelligentvehiclesystembasedpaththroughaFreescale16一bitsingle・chipispresented.ThesystemrecognizestheonCMOScamera,adaptivelyadjuststhePIDparametersbasedfuzzyinterferencemachineonline.Andthevehiclewacksrecognitionandrandomblackguidelinesmoothly.Experimentalresultsshowthatthesystemmeetstheneedofpathanti・interfere,adjustsactuatorquickly,whilehaslittleerrorinsteadystate,gooddynamiccharacteristicsalgorithmandwellrobustness.Keywords:Intelligentvehicle;HCSl2single—・chip;Fuzzy・・PID;Control0引言在“freescale杯”全国大学生智能汽车大赛中,按大赛规则,要求智能车在白色背景的场地上,通过对转向角和车速的控制,使小车能自动地沿着一条任意给定的黑色带状引导线行驶。
PID算法在智能车中的应用与研究

PID算法在智能车中的应用与研究作者:李志伟毛人杰叶亮时锐来源:《速读·上旬》2016年第12期摘要:本文针对飞思卡尔线性CCD组智能车的问题,采用PID算法,解决了速度与转向控制的问题。
关键词:飞思卡尔智能车;PID算法;Matlab随着科技的快速发展,智能汽车已经成为了当今热门的研究方向。
飞思卡尔全国大学生智能车竞赛作为一项比拼实践及创新能力的比赛,对智能车的控制提出较高要求,对于大学生今后在自动化领域的研究有着重要的指导意义。
1 PID控制原理为了应对赛道中的各种复杂情况,使小车尽快地达到预期速度,实现对小车的闭环控制,我们必须采用一套控制算法。
PID算法作为一种经典的控制算法,由于其算法简单易懂、稳定性好、可靠性高,被广泛应用于各个领域,亦可适用于智能车的速度和转向控制系统。
PID控制全称为比例(proportion)、积分(integral)、微分(derivative)控制器,它将给定值r(t)与实际输出值c(t)的偏差的比例、积分、微分通过线性组合构成控制量,对控制对象进行控制。
其输入e(t)与输出u(t)的关系为:u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de (t)/dt],式中积分的上下限分别是0和t,它的传递函数为:G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s],其中kp为比例系数;TI为积分时间常数;TD为微分时间常数。
2 PID控制器的设计我们的实验平台为恩智浦智能车大赛线性CCD组智能车。
我们的智能车使用线性CCD传感器获取赛道信息实现寻迹。
我们通过官方所提供的原理图使用Altium Designer软件自行设计电路板并使用K60单片机对整个小车进行控制。
为了实时检测智能车的速度,我们在小车的轮胎两侧安装了欧姆龙编码器。
在具体的程序设计过程中,我们使用了C语言并基于IAR7.3环境编写、调试程序。
为了实现PID速度控制,我们设置了这样几个参数来控制车速:speed_set为目标速度,是理想状态下我们所希望小车达到的速度。
PID算法原理及调整规律

PID算法原理及调整规律一、PID算法简介在智能车竞赛中,要想让智能车根据赛道的不断变化灵活的行进,PID算法的采用很有意义。
首先必须明确PID算法是基于反馈的。
一般情况下,这个反馈就是速度传感器返回给单片机当前电机的转速。
简单的说,就是用这个反馈跟预设值进行比较,如果转速偏大,就减小电机两端的电压;相反,则增加电机两端的电压。
顾名思义,P指是比例(Proportion),I指是积分(Integral),D指微分(Differential)。
在电机调速系统中,输入信号为正,要求电机正转时,反馈信号也为正(PID算法时,误差=输入-反馈),同时电机转速越高,反馈信号越大。
要想搞懂PID算法的原理,首先必须先明白P,I,D各自的含义及控制规律:比例P:比例项部分其实就是对预设值和反馈值差值的发大倍数。
举个例子,假如原来电机两端的电压为U0,比例P为0.2,输入值是800,而反馈值是1000,那么输出到电机两端的电压应变为U0+0.2*(800-1000)。
从而达到了调节速度的目的。
显然比例P越大时,电机转速回归到输入值的速度将更快,及调节灵敏度就越高。
从而,加大P值,可以减少从非稳态到稳态的时间。
但是同时也可能造成电机转速在预设值附近振荡的情形,所以又引入积分I解决此问题。
积分I:顾名思义,积分项部分其实就是对预设值和反馈值之间的差值在时间上进行累加。
当差值不是很大时,为了不引起振荡。
可以先让电机按原转速继续运行。
当时要将这个差值用积分项累加。
当这个和累加到一定值时,再一次性进行处理。
从而避免了振荡现象的发生。
可见,积分项的调节存在明显的滞后。
而且I值越大,滞后效果越明显。
微分D:微分项部分其实就是求电机转速的变化率。
也就是前后两次差值的差而已。
也就是说,微分项是根据差值变化的速率,提前给出一个相应的调节动作。
可见微分项的调节是超前的。
并且D值越大,超前作用越明显。
可以在一定程度上缓冲振荡。
比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
PID算法及改进

微分系数对系统性能的影响
总结词
微分系数用于控制系统的动态特性,它决定了系统对误差变化的响应速度。
详细描述
微分系数越大,系统对误差变化的响应越快,但过大的微分系数可能导致系统对噪声的敏感性增加。
PID参数的整定方法
总结词
PID参数的整定方法有很多种,包括试凑法、临界比例法、经验法等。
详细描述
试凑法是通过不断尝试不同的参数组合,观察系统的响应特性,从而找到最佳的参数组合。临界比例法是通过调 整比例系数,观察系统的响应特性,找到使系统稳定的临界点。经验法是根据经验设定参数,然后根据实际运行 情况进行调整。
总结词
比例系数是PID控制算法中最重要的 参数,它决定了系统对设定值和实际 值之间误差的响应速度。
详细描述
比例系数越大,系统对误差的响应越 快,但过大的比例系数可能导致系统 在设定值附近震荡。
积分系数对系统性能的影响
总结词
积分系数主要用于消除系统的稳态误差,它决定了系统误差的积分时间。
详细描述
增加积分系数可以加快系统消除误差的速度,但过大的积分系数可能导致系统 超调量增大。
PID算法根据系统当前的误差 信号和过去的误差信号来调 整系统的输出。
积分系数用于调整系统误差 的积分量,影响系统消除静 态误差的能力。
比例系数用于调整系统输出 的增益,影响系统对误差的 敏感度。
微分系数用于调整系统误差 的变化率,影响系统对误差 变化的响应速度。
02
PID算法的参数整定
比例系数对系统性能的影响
03
PID算法的改进
积分分离PID算法
总结词
积分分离PID算法是一种改进的PID控制算法,通过动态调整积分项的权重,以避免积 分饱和问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 引言
智能车系统是一个时变且非线性的系统,采用传统PID算法的单一的反馈控制会使系统存在不同程度的超调和振荡现象,无法得到理想的控制效果。
本文将前馈控制引入到了智能车系统的控制中,有效地改善了系统的实时性,提高了系统的反应速度[1];并且根据智能车系统的特点,对数字PID算法进行了改进,引入了微分先行和不完全微分环节,改善了系统的动态特性;同时,利用模糊控制具有对参数变化不敏感和鲁棒性强的特点[2],本文将模糊算法与PID算法相结合,有效地提高了智能车的适应性和鲁棒性,改善了系统的控制性能。
2 改进PID算法
智能车的控制是由飞思卡尔公司的S12芯片完成,所以对智能车的控制要采用计算机控制方法。
本文针对智能车控制的特殊性,对传统数字PID算法做了一些改进,这样可以更好地满足智能车控制的需要。
2.1不完全微分PID
将微分环节引入智能车的方向和速度控制,明显地改善了系统的动态性能,但对于误差干扰突变也特别敏感,对系统的稳定性有一定的不良影响。
为了克服上述缺点,本文在PID算法中加入了一阶惯性环节[3],不完全微分PID算法结构如图1所示。
图1 不完全微分PID算法机构图
将一阶惯性环节直接加到微分环节上,可得到系统的传递函数为:
(1)将(1)式的微分项推导并整理,得到方程如下:
(2)
式中,,由系统的时间常数和一阶惯性环节时间常数决定的一个常数。
为了编程方便,可以将2-2式写成如下形式:
(3)
式中,。
分析式(3)可知,引入不完全微分以后,微分输出在第一个采样周期内被减少了,此后又按照一定比例衰减[3][4]。
实验表明,不完全微分有效克服了智能车的偏差干扰给速度控制带来的不良影响,具有较好的控制效果。
图2为不完全微分PID算法的程序流程图。
2.2 微分先行PID
由于智能车在跑道上行驶时,经常会遇到转弯的情况,所以智能车的速度设定值和方向设定值都会发生频繁的变化,从而造成系统的振荡。
为了解决设定值的频繁变化给系统带来的不良影响,本文在智能车的速度和方向控制上引入了微分先行PID算法,其特点是只对输出量进行微分,即只对速度测量值和舵机偏转量进行微分,而不对速度和方向的设定值进行微分。
这样,在设定值发生变化时,输出量并不会改变,而被控量的变化相对是比较缓和的,这就很好地避免了设定值的频繁变化给系统造成的振荡,明显地改善了系统的动态性能。
图3是微分先行PID控制的结构图,微分先行的增量控制算式如下。
(4)
图2 不完全微分PID算法的程序流程图
图3 微分先行PID控制结构图
3 前馈控制的应用
由于智能车的跑道宽度有限制,所以在经过急转弯的时候,如果速度和方向控制不及时,智能车就可能冲出跑道。
由于前馈控制是开环控制,所以前馈控制的响应速度很快。
将前馈控制引入到智能车的控制中,能够提高舵机和伺服电机的反应速度,改善智能车系统的动态性能。
3.1 智能车控制系统结构
智能车的控制主要体现在两个方面:一方面是方向的控制,也就是对舵机的控制;另一方面是对速度的控制,也就是对伺服电机的控制。
舵机的数学模型较为简单,具有很好的线性特征,
只采用前馈控制;智能车的速度控制相对复杂一些,速度模型无法准确建立,采用前馈-改进PID 算法进行控制。
智能车的控制系统结构如图4所示。
图4中,和分别是舵机和伺服电机数学模型。
从图中可以看出,智能车的方向控制和速度控制是相互独立的,而且它们都是由路线偏差决定的。
舵机转角与路线偏差之间的对应关系是根据舵机的数学模型得到的,在速度控制回路中,既包括反馈回路,又包括前馈环节,伺服电机的控制量是在前馈补偿基础上,再由增量式PID算法计算得到。
图4 智能车的控制系统结构
3.2 在方向控制中的应用
智能车对方向的控制有两点要求:在直道上,方向保持稳定;在转弯处,需要方向变化准确而且迅速。
只有这样,才能保证智能车在跑道上高速、稳定地运行。
为了提高方向控制的鲁棒性,
本文还对路线偏差进行了模糊化处理。
图5是智能车方向模糊前馈控制的结构图,图中和
分别是直道和弯道两种情况下的前馈控制函数。
图5 智能车方向控制系统结构图
3.3 在速度控制中的应用
为了使智能车在直道上以较快速度运行,在转弯时,防止智能车冲出跑道,则必须将智能车的速度降低,这就要求智能车的速度控制系统具有很好的加减速性能。
当智能车经过连续转弯的跑道时,路线偏差的频繁变化会造成速度设定的频繁变化,这会引起速度控制系统的振荡,并且微分环节对误差突变干扰很敏感,容易造成系统的不稳定。
为了解决上述存在的问题,本文对数字PID算法进行了改进,将不完全微分和微分先行引入到PID算法中,大大改善了速度控制系统的动态性能。
图6 智能车速度控制系统结构图
图6是智能车速度控制系统结构图。
由于赛道路况和智能车的姿态会经常变化,所以速度控制系统的模型也是不定的,为了提高系统的适应性,本文速度控制系统中采用了模糊PID算法。
将速度设定和实际速度进行模糊分档[5][6],通过调试得到不同情况下相对最优的PID参数,保证了速度控制系统在不同情况下都有较好的控制效果。
4 结论
本文提出的前馈-改进PID算法是智能车控制的有效方法,该算法使智能车系统不仅具有很好的动态性能和反应速度,而且改善了系统的适应性和鲁棒性,使智能车能够在不同的跑道上以较快的速度运行。
实验表明:本文提出的控制算法有效地提高了智能车的性能,在同样的跑道上运行时,采用了新算法的智能车比采用传统PID算法反馈控制的智能车的速度有所提高,运行一圈的时间平均减少了3.2秒,并且本文提出的算法也使智能车运行的稳定性得到改善,提高了智能车对跑道的适应性。
该方法具有很好的应用前景。