PID改进飞思卡尔智能车算法
- 格式:wps
- 大小:154.00 KB
- 文档页数:5
PID( Proportional Integral Derivative )控制是最早发展起来的控制策略之一,由于其算法简单、鲁棒性(稳定性)好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。
模拟PID控制系统原理框图PID是一种线性控制器,它根据给定值r in(k)与实际输出值y out(k)的差值e(t)构成控制方案,利用运放实现模拟PID的一个例子:式中:以上为典型模拟PID应用例子。
关于各调节器的作用说明:♥比例调节器P1、起调节作用与输出量和给定量的差成正比,有差就有调节作用,所以他的调节结果总是有差存在,这种调节不可消除差,所以叫这种调节为有静差调节;2、但这种调节作用快,能很快减小误差,是最常用的一种调节器!3、积分I调节慢,所以PI是最常用的一种搭配!♥积分调节器I1、是给定量与输出量的差对时间的积分,在电路里就是用给定量与输出量的差给电容充电,只要时间足够长,电容器的电压总会到达给定量,使输出量与给定量的差为零;2、积分调节器是一种无静差调节器,意思是说可调节到给定值,做到精确、准确输出;♥微分控制调节器D1、,这种控制总是以输出量与给定量的差的变化率成正比,差变化越剧烈,调节作用越大,差变化越平稳,调节作用越弱;2、这种微分调节作用,使得输出量平稳而很少波动;3、这种微分调节作用,对输出量的变化、波动产生强烈的阻尼、抑制的作用,就像摩擦力的作用;数字式PID应用:增量式PID的算式为:如果换换成智能车里的方向控制就变为:Pwm_offset=PWMMiddle+PID_P*(error-last_error)+PID_I*(error)+PID_D*(error+pre_error-2*la st_error);其中:error=middle-offset,注意这个公式里的offset应该有正负之分,左右偏移的值互为相反。
这样自然就确定了最后的方向。
智能汽车控制策略及其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来讲,以加温设备为例,软件采用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算法2015/12/26 BY 哈工大智能车-技术培训部-刘键方向控制在软件系统中的位置方向控制系统宏观概览PID控制方法理解PID程序编写PID参数调试PID算法微改进1.方向控制算法在软件系统中的位置整个智能车基本上就在做两件事,一个是方向的控制,一个是速度的控制(当然平衡车还多一个平衡的控制),只要能够将这两个量给控制的恰到好处(恰到好处不光是两者单独控制的很好,而是两者一起工作时配合的很好)本文档只讲其中的一个:方向控制中的控制策略问题(四轮车的速度控制与此非常类似,甚至还更简单)。
下面是我们车内软件运行的一个大概的流程图,软件成员后来的所有精力基本都倾注在这三个加粗的方面:方向偏差提取;方向控制算法;速度控制;传感器信息采集(电感电压/光电管/摄像头)速度读取方向偏差提取方向控制算法舵机驱动速度控制算法(舵机PWM 占空比的大小)电机驱动(电机PWM 占空比的大小)周期开始电感压差/中线偏差速度偏差周期开始结束结束方向控制速度控制PD PID整体上就分为两部分,方向和速度控制。
其中两者均为周期性控制,但控制的周期可能不一样。
方向控制的主要步骤如下:1、 采集方向传感器的信息,比如对于摄像头就是进行图像的采集;2、 方向偏差信息的求取,对于摄像头来说就是图像中线的求取,进而得到得到车体当前位置与理想位置的偏差3、 方向控制模块根据这个偏差来计算应该输给舵机的PWM 占空比,进而来调整车体的前进方向。
2方向控制系统宏观概览系统宏观上了解。
通过对系统的全局分析,你不仅可以更清楚了解方向控制的本质,更重要的是还能够从系统中各模块的相互约束关系中找到一些新的能够改进整个控制系统的方案,下面详述~从控制系统的角度来看,典型的方向闭环反馈系统结构图如下图所示,主要由五部分构成:控制目标;被控对象;执行机构;测量反馈;控制算法(这里面就是我们常说的核心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算法实现智能车的控制随着科学技术的不断发展,智能控制的应用越来越广泛,几乎渗透到所有的领域。
智能车技术依托于智能控制,是未来发展的趋势。
本论文是第十一届“恩智浦”杯大学生智能汽车竞赛中摄像头组的解决方案,要求设计的智能赛车能够根据既定的轨道路线完成最后的任务。
本论文主要包括硬件系统、软件系统等,简略地阐述了我们的设计方案。
标签:智能控制;智能车;硬件系统;软件系统1智能车系统1.1智能车系统介绍。
我们选用了动力较好的C车模,C车模的精度不是很高的。
因此我们对C 车模进行了一定的改造,主要使它的重量减轻和降低它的地盘高度。
为了使智能车系统更加的可靠,我们将智能车的驱动系统和主控分别设计,这样便于维护,同时可以简化电路,减少出错的概率。
传感器采用了定位眼摄像头用来采集图像和龙邱LQ_ECM15180305_SDZ 512 线增量式编码器用来采集转速。
为了方便调试,我们采用了OLED 显示屏来显示系统状态,按键来调节系统参数,同时使用蓝牙将数据发送给图像上位机从而观测动态数据。
1.2 智能车硬件系统。
为了使智能车能够稳定的运行,必须要保证电路的稳定性。
单片机采用MK60FX512ZVLQ15,使用一片LM1117-3.3 产生的3.3V 电压为单片机单独供电,从而保证单片机稳定工作,不受其他电路影响,经试验证明单片机能够正常稳定的运行,不会出现复位或跑飞现象。
另外采用LM2940 给编码器、蓝牙、OLED 供电,舵机由LM1084-ADJ供电。
调试过程中,采用人机交互模块液晶和按键、无线通讯蓝牙等模块辅助,方便小车的调试。
在采集图像上我们采用了定位眼摄像头,此款摄像头集成高灵敏度感光芯片CMOS数字摄像头芯片,支持从320*240 到80*60 不同分辨率输出,帧率高达60fps,定位眼摄像头搭载180度红外滤光广角镜头,可以在远距离轻松捕获闪烁的红外信标。
1.3 智能车的软件系统1.3.1智能车的软件系统概述。
开发应用28用于智能车速度控制的PID程序设计赵国柱1赵悦如2(1.中国民用航空飞行学院模拟机训练中心,四川 广汉 618307;2.成都市第四建筑工程公司,四川 成都610000)摘 要:由于小车在行进过程中路况复杂,还要保持高速,稳定,很具有挑战性。
设计了一种基于单片机的智能车,其中速度量控制采用了PID程序设计。
所以采用闭环控制是必要的选择。
硬件方面给小车提供的测速装置为小车的闭环系统提供了必要的基础。
在PID控制中进行了比例,微分,积分调节,实现了小车的高速行进。
关键词:飞思卡尔单片机;光电传感器;智能车;PIDDOI: 10.3969/j.issn.1671-6396.2015.03.0101 智能车应用前景综述智能车是一种移动式机器人,它是一个集环境、规划、决策、感知、自动行驶等各种功能于一体的综合系统。
它的出现为提高网络的利用率、降低燃油的消耗量,尤其对道路交通安全和运行效率的改善提供了诸多解决方案,因其具有的智能特性而成为了研究者研究的重点。
发展智能车辆是解决很多交通问题,甚至是社会问题的解决方案,正因为有诸多有利因素,智能车设计成为了各国政府、研究机构的热门研究机构[1]。
2 PID控制策略特点PID控制的原理和特点:在工程中常常要用到PID控制方案,设计PID算法至关重要。
该控制器主要是比例、积分、微分控制方案的综合,简称PID控制,又称PID调节。
尤其是在工程对象的具体数量关系不是很清楚的情况下,这时应用PID控制技术就很有效率。
PID控制在实际设计中需要具体问题具体对待,有时就简化为了PI和PD控制策略[2-4]。
其传递函数为:G(s) =X(s)=Kc(1+ TiS +Td S)这种调节器是目前自动控制中使用最普遍也是最基本的调节器。
在计算机控制系统中,数字PID控制算法通常又分为位置式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参数要求较高。
比例、积分和微分的线性组合,构成控制量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改进飞思卡尔智能车算法
PID改进飞思卡尔智能车算法:智能车系统是一个时变且非线性的系统,采用传统PID算法的单一的反馈控制会使系统存在不同程度的超调和振荡现象,无法得到理想的控制效果。
将前馈控制引入到了智能车系统的控制中,有效地改善了系统的实时性,提高了系统的反应速度;并且根据智能车系统的特点,对数字PID算法进行了改进,引入了微分先行和不完全微分环节,改善了系统的动态特性;同时,利用模糊控制具有对参数变化不敏感和鲁棒性强的特点,将模糊算法与PID算法相结合,有效地提高了智能车的适应性和鲁棒性,改善了系统的控制性能。
改进PID算法
智能车的控制是由飞思卡尔公司的S12芯片完成,所以对智能车的控制要采用计算机控制方法。
本文针对智能车控制的特殊性,对传统数字PID算法做了一些改进,这样可以更好地满足智能车控制的需要。
不完全微分PID
将微分环节引入智能车的方向和速度控制,明显地改善了系统的动态性能,但对于误差干扰突变也特别敏感,对系统的稳定性有一定的不良影响。
为了克服上述缺点,本文在PID算法中加入了一阶惯性环节,不完全微分PID算法结构如图1所示。
将一阶惯性环节直接加到微分环节上,可得到系统的传递函数为:
将(1)式的微分项推导并整理,得到方程如下:
式中,,由系统的时间常数和一阶惯性环节时间常数决定的一个常数。
为了编程方便,可以将2-2式写成如下形式:
分析式(3)可知,引入不完全微分以后,微分输出在第一个采样周期内被减少了,此后又按照一定比例衰减[3][4]。
实验表明,不完全微分有效克服了智能车的偏差干扰给速度控制带来的不良影响,具有较好的控制效果。
图2为不完全微分PID算法的程序流程图。
微分先行PID
由于智能车在跑道上行驶时,经常会遇到转弯的情况,所以智能车的速度设定值和方向设定值都会发生频繁的变化,从而造成系统的振荡。
为了解决设定值的频繁变化给系统带来的不良影响,本文在智能车的速度和方向控制上引入了微分先行PID算法,其特点是只对输出量进行微分,即只对速度测量值和舵机偏转量进行微分,而不对速度和方向的设定值进行微分。
这样,在设定值发生变化时,输出量并不会改变,而被控量的变化相对是比较缓和的,这就很好地避免了设定值的频繁变化给系统造成的振荡,明显地改善了系统的动态性能。
图3是微分先行PID控制的结构图,微分先行的增量控制算式如下。
前馈控制的应用
由于智能车的跑道宽度有限制,所以在经过急转弯的时候,如果速度和方向控制不及时,智能车就可能冲出跑道。
由于前馈控制是开环控制,所以前馈控制的响应速度很快。
将前馈控制引入到智能车的控制中,能够提高舵机和伺服电机的反应速度,改善智能车系统的动态性能。
智能车控制系统结构
智能车的控制主要体现在两个方面:一方面是方向的控制,也就是对舵机的控制;另一方面是对速度的控制,也就是对伺服电机的控制。
舵机的数学模型较为简单,具有很好的线性特征,
只采用前馈控制;智能车的速度控制相对复杂一些,速度模型无法准确建立,采用前馈-改进PID算法进行控制。
智能车的控制系统结构如图4所示。
图4中,和分别是舵机和伺服电机数学模型。
从图中可以看出,智能车的方向控制和速度控制是相互独立的,而且它们都是由路线偏差决定的。
舵机转角与路线偏差之间的对应关系是根据舵机的数学模型得到的,在速度控制回路中,既包括反馈回路,又包括前馈环节,伺
服电机的控制量是在前馈补偿基础上,再由增量式PID算法计算得到。
在方向控制中的应用
智能车对方向的控制有两点要求:在直道上,方向保持稳定;在转弯处,需要方向变化准确而且迅速。
只有这样,才能保证智能车在跑道上高速、稳定地运行。
为了提高方向控制的鲁棒性,本文还对路线偏差进行了模糊化处理。
图5是智能车方向模糊前馈控制的结构图,图中和分别是直道和弯道两种情况下的前馈控制函数。
在速度控制中的应用
为了使智能车在直道上以较快速度运行,在转弯时,防止智能车冲出跑道,则必须将智能车的速度降低,这就要求智能车的速度控制系统具有很好的加减速性能。
当智能车经过连续转弯的跑道时,路线偏差的频繁变化会造成速度设定的频繁变化,这会引起速度控制系统的振荡,并且微分环节对误差突变干扰很敏感,容易造成系统的不稳定。
为了解决上述存在的问题,本文对数字PID算法进行了改进,将不完全微分和微分先行引入到PID算法中,大大改善了速度控制系统的动态性能。
图6是智能车速度控制系统结构图。
由于赛道路况和智能车的姿态会经常变化,所以速度控制系统的模型也是不定的,为了提高系统的适应性,本文速度控制系统中采用了模糊PID算法。
将速度设定和实际速度进行模糊分档[5][6],通过调试得到不同情况下相对最优的PID参数,保证了速度控制系统在不同情况下都有较好的控制效果。