飞思卡尔智能车PID改进算法

合集下载

智能汽车控制策略及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控制算法。

也有一些执行机构具有记忆功能,即使失去驱动信号仍然可以维持原来的状态不变。

例如在用步进电机作为执行机构的自动化控制系统中(数控机床最为典型)下面主要针对位置式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算法的采用很有意义。

首先必须明确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控制算法等。

在学习的基础上,提出了一种自整定参数的专家模糊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调节经验

智能车增量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 算法,是根本不可取的,及时采用了,你必须要经过一些变换和改进才能使用。

以上的简述只是鄙人自己的看法,如有错误,请各位高手指正。

现在估计您会疑问,PID 不适用于智能车的电机控制,那什么才适用呢?鄙人原来做过智能车,从鄙人本身的理解,P 算法控制电机,也就是比例控制是最好的,反应速度快,控制精度高,不存在积分和微分效应,非常适用于适用于控制周期短的系统,当然,对于一些特殊的逻辑控制算法,可能要采用PD算法,用微分来做补偿,防止震荡和超调。

下面来说下电机控制算法从开始的加入到最终的确定的方法:当然这一切的前提就是安装了编码器,车速有反馈,只有加上编码器,有了反馈,才能组成一个闭环系统。

当然您也可以加上码盘,或者霍尔开关等一切可以返回车速的东西都可以。

(1)首先建议在车速比较慢的时候,采用PID 算法来控制电机,为什么开始要建议您采用PID 呢?主要是为了让您更加深刻理解PID 算法的精髓和调试步骤方法等,有助于以后对控制算法更加深入的研究和书写。

调试PID 三个参数的方法,很多地方都提供了,我在这里简单的说下:首先将ID 参数都变为0,先调整P 比例参数,调整到速度基本上跟您给定的速度差不多,也就是说基本稳定在您给定的脉冲数,当然这个时候会非常的震荡,不要担心,接下来调整I,调整I 的结果就是震荡会消除很多,但是车速会变化缓慢,也就是说会有一些延迟,然后再调整D,调整D 的结果就是增强调节的灵活性和预见性,在给定速度变化的过程中,能够以一个平稳过渡来变换,而且速度可以长时间稳定在给定速度附近,然后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参数要求较高。

PID控制改进算法—变结构PID控制原理

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 次信号采样之后, 比例控制器输出的控制变量为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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秒,并且本文提出的算法也使智能车运行的稳定性得到改善,提高了智能车对跑道的适应性。

该方法具有很好的应用前景。

相关文档
最新文档