智能车PID 算法实现原理讲解
PID算法通俗讲解知识讲解
P I D算法通俗讲解总所周知,PID算法是个很经典的东西。
而做自平衡小车,飞行器PID是一个必须翻过的坎。
因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂。
并举出PID的形象例子来帮助理解PID。
一、首先介绍一下PID名字的由来:P:Proportion(比例),就是输入偏差乘以一个常数。
I :Integral(积分),就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
注:输入偏差=读出的被控制对象的值-设定值。
比如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。
则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。
然后来看一下,这三个元素对PID算法的作用,了解一下即可,不懂不用勉强。
P,打个比方,如果现在的输出是1,目标输出是100,那么P的作用是以最快的速度达到100,把P理解为一个系数即可;而I呢?大家学过高数的,0的积分才能是一个常数,I就是使误差为0而起调和作用;D呢?大家都知道微分是求导数,导数代表切线是吧,切线的方向就是最快到至高点的方向。
这样理解,最快获得最优解,那么微分就是加快调节过程的作用了。
二、然后要知道PID算法具体分两种:一种是位置式的,一种是增量式的。
在小车里一般用增量式,为什么呢?位置式PID的输出与过去的所有状态有关,计算时要对e(每一次的控制误差)进行累加,这个计算量非常大,而明显没有必要。
而且小车的PID控制器的输出并不是绝对数值,而是一个△,代表增多少,减多少。
换句话说,通过增量PID算法,每次输出是PWM要增加多少或者减小多少,而不是PWM的实际值。
所以明白增量式PID就行了。
三、接着讲PID参数的整定,也就是PID公式中,那几个常数系数Kp,Ti,Td等是怎么被确定下来然后带入PID算法中的。
如果要运用PID,则PID参数是必须由自己调出来适合自己的项目的。
通常四旋翼,自平衡车的参数都是由自己一个调节出来的,这是一个繁琐的过程。
智能车PID的算法推荐
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算法的原理和算法
pid算法的原理和算法一、pid算法简介1.概念与作用PID(Proportional-Integral-Derivative,比例-积分-微分)算法是一种广泛应用于工业控制、机器人控制和自动驾驶等领域的控制算法。
它通过计算偏差值与期望值之间的比例、积分和微分,对系统进行调节,使输出信号接近期望值。
2.发展历程PID算法起源于上世纪40年代,由美国工程师Nikola Tesla首次提出。
经过几十年的发展,PID算法已经成为了自动控制领域的基础技术,被广泛应用于各种控制系统中。
二、pid算法原理1.控制思想PID算法基于负反馈控制思想,通过不断调整系统的输入,使输出信号接近期望值。
它主要包括三个部分:比例控制、积分控制和微分控制。
2.数学模型PID算法的数学模型可以表示为:U(t) = Kp * e(t) + Ki * ∫e(t)dt + Kd * de(t)/dt其中,U(t)表示控制器的输出,Kp、Ki、Kd分别表示比例、积分、微分控制器的系数,e(t)表示系统偏差,t表示时间。
三、pid算法参数调节1.比例系数(Kp)比例系数Kp决定了控制器对偏差的响应速度。
增大Kp可以提高系统的响应速度,但过大的Kp可能导致系统振荡。
2.积分时间常数(Ti)积分时间常数Ti决定了积分控制的作用强度。
增大Ti可以减小系统的超调量,但过大的Ti可能导致系统响应变慢。
3.微分时间常数(Td)微分时间常数Td反映了系统对偏差变化的敏感程度。
增大Td可以提高系统的响应速度和稳定性,但过大的Td可能导致系统噪声放大。
四、pid算法应用领域1.工业控制PID算法在工业控制领域具有广泛应用,如温度控制、速度控制、压力控制等。
2.机器人控制PID算法在机器人控制中发挥着重要作用,如关节控制、姿态控制等。
3.自动驾驶PID算法在自动驾驶领域也有广泛应用,如车辆速度控制、转向控制等。
五、pid算法优化与改进1.模糊控制模糊控制结合了PID算法,通过模糊规则对参数进行实时调整,提高了系统的稳定性和响应速度。
pid算法的原理和算法
pid算法的原理和算法【最新版】目录1.PID 算法的概念和组成2.PID 算法的工作原理3.PID 算法的应用范围和优势4.PID 算法的参数调整方法5.PID 算法的发展和展望正文一、PID 算法的概念和组成PID 算法,即比例 - 积分 - 微分算法,是一种在自动控制领域中应用最为广泛的调节器控制规律。
它主要由比例控制、积分控制和微分控制三个部分组成,简称为 PID 控制。
PID 控制器问世至今已有近 70 年历史,以其结构简单、稳定性好、工作可靠、调整方便等优点,成为工业控制主要技术之一。
二、PID 算法的工作原理PID 算法的工作原理主要基于对被控对象的偏差(实际值与期望值之间的差值)进行控制。
比例控制根据偏差的大小调整控制量,积分控制则根据偏差的累积值调整控制量,微分控制则根据偏差的变化速度调整控制量。
这三种控制方式相互结合,可以有效地提高控制系统的稳定性和响应速度。
三、PID 算法的应用范围和优势PID 算法在工程实际中应用广泛,尤其适用于那些结构和参数不能完全掌握或无法得到精确数学模型的对象。
当控制理论的其他技术难以采用时,PID 算法可以依靠经验和现场调试来确定控制器的结构和参数。
此外,PID 算法具有结构简单、参数相互独立、选定方便等优点,可以有效地提高控制系统的性能。
四、PID 算法的参数调整方法PID 算法的参数调整方法有很多,例如试凑法、临界比例度法、扩充临界比例度法等。
这些方法都可以在一定程度上提高控制系统的性能,但需要根据具体的实际情况选择合适的方法。
五、PID 算法的发展和展望随着科学技术的不断发展,PID 算法也在不断地完善和提高。
未来的发展趋势主要包括进一步提高 PID 算法的性能,例如通过引入智能优化算法、神经网络等技术;另一方面,则是将 PID 算法应用于更广泛的领域,如机器人控制、自动驾驶等。
综上所述,PID 算法作为一种经典的自动控制算法,在工程实际中具有广泛的应用和优越的性能。
PID控制算法介绍与实现
PID控制算法介绍与实现PID控制算法是一种用于实现控制系统的经典算法。
PID代表了三个主要的控制参数,即比例(Proportional)、积分(Integral)和微分(Derivative)。
PID控制算法基于反馈控制原理,通过对系统当前状态和目标状态之间的误差进行分析和调整,实现对系统输出的精确控制。
PID控制算法的原理是,通过对比目标值和实际值之间的差异,计算出控制量,并根据调整参数的权重对控制量进行调节,以减小误差并将系统稳定在目标状态中。
比例项根据误差的大小和比例参数的比例关系,使控制量与误差呈线性关系;积分项则通过累计误差并乘以积分参数来补偿系统的漂移和持续误差;微分项则根据误差的变化率乘以微分参数,以增加控制的灵敏度和反应速度。
PID控制算法的实现一般分为两个主要步骤:参数设置和控制计算。
在参数设置阶段,需要根据具体的应用要求和系统特性,通过试验或者调试确定合适的比例、积分和微分参数。
在控制计算阶段,根据当前的误差和控制参数,计算出相应的控制量,并更新控制器,以实现系统的控制。
具体的PID控制算法实现可以通过如下步骤进行:1.初始化控制器:设置比例、积分和微分参数,并将误差累计器和上一次误差设为0。
2.读取目标值和实际值:从传感器或外部输入中读取目标值和实际值。
3.计算误差:根据目标值和实际值计算误差,即偏差。
4.计算控制量:根据比例、积分和微分参数,计算出相应的比例项、积分项和微分项,将它们加权求和得到控制量。
5.更新控制器:将当前的误差作为下一次的上一次误差,将当前的控制量作为下一次的上一次控制量。
6.输出控制量:将计算出的控制量输出到执行器或系统中,实现对系统的控制。
7.循环调用:以上步骤循环调用,实时更新控制参数和控制量,以实现系统的稳定控制。
除了基本的PID控制算法外,还存在一些改进和扩展的PID算法,如自适应PID控制算法、模糊PID控制算法、增量PID控制算法等。
这些算法在不同的应用场景和系统要求下,进一步优化和改进了传统的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控制器的核心思想是通过不断地调整控制器的输出,使系统的实际输出与期望输出尽可能接近。
其包括三个部分:比例控制(P)、积分控制(I)和微分控制(D)。
比例控制用来减小当前误差,积分控制用来消除过去误差的影响,而微分控制用来预测未来误差的趋势。
通过合理地调整这三个部分的系数,可以实现对系统的精确控制。
在智能车竞赛中,PID调节通常用于调整车辆在赛道上的行驶轨迹。
赛道通常是一条带有弯道和直道的环形赛道,车辆需要根据赛道的曲线进行转向和调整速度,保持在规定的赛道内行驶。
而PID调节技术可以帮助车辆根据当前位置与目标位置之间的误差,实时地调整车辆的转向和速度,使车辆能够准确地跟随赛道并保持在适当的速度上行驶。
恩智浦杯全国智能车竞赛对PID调节技术的要求非常高。
车辆需要能够快速而准确地调整转向角度和速度,以适应赛道的曲线和变化。
赛道的表面也可能存在一些不平整或者变化,这就需要车辆能够灵活地根据实际情况进行调整。
PID调节的稳定性、准确性和实时性是竞赛中的关键指标。
在进行PID调节时,首先需要对车辆进行建模和参数识别。
通过建立一个精确的数学模型来描述车辆的动力学特性和环境的变化,可以更好地了解车辆的行驶规律和需要调节的参数。
利用实验数据和试验验证,可以对车辆的参数进行准确识别,从而能够更精确地进行PID调节。
在实际的PID调节过程中,需要根据赛道的情况和实时的测量数据来动态地调整PID控制器的参数。
智能车PID算法实现原理讲解
智能车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 控制 智能车的转向控制和速度控制是一体的,合理的速度分配以及最优的行驶路线,才能使智能车在最短时间内完成比赛。
从我们开始提速调试的过程中,曲率半径为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 算法原理及c51应用
pid 算法原理及c51应用
PID(Proportional-Integral-Derivative)是一种经典的控制算法,它结合了比例、积分和微分三种控制方式,用于控制系统的稳定性和精度。
PID控制器根据系统的当前状态和期望状态之间的偏差来调整输出,以使系统的响应更快速、更稳定。
PID控制器的工作原理如下:
1. 比例(P)控制,根据偏差的大小来调整输出,偏差越大,输出调节量越大。
这种控制方式能够快速地减小偏差,但可能会导致系统的超调和震荡。
2. 积分(I)控制,根据偏差的累积量来调整输出,用于消除系统的静态误差,提高系统的稳定性和精度。
3. 微分(D)控制,根据偏差的变化率来调整输出,用于抑制系统的振荡和减小超调。
在C51单片机上应用PID算法,首先需要将PID控制器的数学模型转化为C语言代码。
通常,可以使用定时器中断来周期性地计
算PID控制器的输出,并通过数字输出口来控制被控对象。
在C51单片机上实现PID算法需要考虑计算精度、定时器中断的设置、输出口的控制等方面。
在实际应用中,PID控制器可以用于温度控制、速度控制、位置控制等各种控制系统中。
通过调节PID参数,可以使系统快速、稳定地达到期望状态,并且对于不同的被控对象,可以根据实际情况调整PID参数以获得最佳的控制效果。
总之,PID算法结合了比例、积分和微分三种控制方式,通过调节输出来使系统稳定并快速响应。
在C51单片机上应用PID算法需要将其数学模型转化为C语言代码,并考虑各种实际应用中的因素。
PID算法基本原理及整定实现方法
PID算法基本原理及整定实现方法PID(比例-积分-微分)控制算法是一种用于控制系统的基本控制方法,广泛应用于工业控制领域。
PID控制算法的基本原理是通过计算控制器的输出值与目标值之间的偏差,使用比例、积分和微分三个部分的权重调节来调整控制器的输出,从而使得控制系统的输出尽可能接近目标值。
本文将详细介绍PID控制算法的基本原理以及整定实现方法。
一、PID控制算法基本原理1.比例部分(P部分):比例部分按照输入信号与目标值之间的差异进行调节,输出与误差成正比。
当输入信号与目标值之间的差异很大时,比例部分对整体控制量的调整起到主导作用。
它的作用是根据误差的大小来调整控制器的输出,但是仅仅依靠比例控制往往会导致系统的震荡或者超调。
2.积分部分(I部分):积分部分根据控制器输出的误差累计之和进行调节,用来消除系统的稳态误差。
积分控制主要用于对系统的稳态误差的恢复,通过累积误差来调整控制器的输出,使得系统能够在稳态下达到目标值。
3.微分部分(D部分):微分部分根据误差的变化率进行调节,用来预测系统的未来行为,抑制系统的超调和振荡。
微分控制是对系统的瞬时响应进行补偿,通过预测系统的未来行为来调整控制器的输出。
二、PID控制参数整定方法PID控制器的参数整定是指根据实际系统的特性和需求确定合适的比例、积分和微分部分的权重,以使得控制系统能够在期望的响应速度、稳定性和稳态误差下工作。
常用的PID控制参数整定方法有如下几种。
1. Ziegler-Nichols方法:该方法通过系统的临界响应特性来确定PID控制器的参数。
首先将PID控制器的积分和微分时间设为零,逐渐增大比例增益,使得系统产生临界振荡,然后通过测量振荡的周期和振幅来计算出合适的参数。
2. Chien-Hrones-Reswick方法:该方法是一种改进的Ziegler-Nichols方法,通过调整PID控制器的参数和系统的时间常数之间的关系来确定合适的参数。
循迹小车pid算法原理
循迹小车pid算法原理循迹小车是一种能够自主行驶并且能够按照指定路径行驶的智能小车。
在实现循迹功能时,PID算法被广泛应用。
PID算法是一种闭环控制算法,通过对系统的误差进行监测和调节,使系统能够快速、准确地响应外部指令,达到期望的控制效果。
PID算法的原理可以简要概括为:比例控制、积分控制和微分控制的结合。
在循迹小车中,PID算法通过不断调整电机的转速来实现循迹的功能。
循迹小车通过传感器获取当前车辆与指定路径的偏差值,也就是当前误差。
这个误差值可以通过两个循迹传感器(通常为红外线传感器)来测量得到。
当车辆偏离路径时,两个传感器所接收到的红外线强度会发生变化,进而产生不同的电压信号。
比例控制是PID算法的第一步,通过测量到的误差值和比例系数Kp的乘积来得到比例修正量。
比例系数Kp用于控制比例修正量的大小,当误差越大时,比例修正量也就越大。
比例修正量的作用是根据误差的大小来调整电机的转速,使车辆尽快回到指定路径。
然而,仅仅使用比例控制会导致循迹小车在靠近指定路径时产生超调现象,也就是车辆会来回摆动,难以稳定在路径上。
为了解决这个问题,需要引入积分控制。
积分控制是PID算法的第二步,通过将误差累加并与积分系数Ki的乘积得到积分修正量。
积分修正量的作用是消除稳态误差,即使车辆偏离路径一段时间后,积分修正量也会逐渐增大,使车辆更容易回到指定路径。
积分系数Ki用于控制积分修正量的增长速度,当误差较大或持续时间较长时,积分修正量也增大。
然而,仅仅使用积分控制会导致循迹小车在接近指定路径时产生振荡现象,也就是车辆会来回摆动,难以稳定在路径上。
为了解决这个问题,需要引入微分控制。
微分控制是PID算法的第三步,通过测量误差的变化率和微分系数Kd的乘积来得到微分修正量。
微分修正量的作用是根据误差的变化率来调整电机的转速,使车辆平稳地接近指定路径。
微分系数Kd 用于控制微分修正量的大小,当误差变化率较大时,微分修正量也就较大。
PID算法通俗讲解
总所周知,PID算法就是个很经典得东西。
而做自平衡小车,飞行器PID 就是一个必须翻过得坎。
因此本节我们来好好讲解一下PID,根据我在学习中得体会,力求通俗易懂。
并举出PID得形象例子来帮助理解PID。
一、首先介绍一下PID名字得由来:P:Proportion(比例),就就是输入偏差乘以一个常数。
I :Integral(积分),就就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
注:输入偏差=读出得被控制对象得值-设定值。
比如说我要把温度控制在26度,但就是现在我从温度传感器上读出温度为28度。
则这个26度就就是”设定值“,28度就就是“读出得被控制对象得值”。
然后来瞧一下,这三个元素对PID算法得作用,了解一下即可,不懂不用勉强。
P,打个比方,如果现在得输出就是1,目标输出就是100,那么P得作用就是以最快得速度达到100,把P理解为一个系数即可;而I呢?大家学过高数得,0得积分才能就是一个常数,I就就是使误差为0而起调与作用;D 呢?大家都知道微分就是求导数,导数代表切线就是吧,切线得方向就就是最快到至高点得方向。
这样理解,最快获得最优解,那么微分就就是加快调节过程得作用了。
二、然后要知道PID算法具体分两种:一种就是位置式得,一种就是增量式得。
在小车里一般用增量式,为什么呢?位置式PID得输出与过去得所有状态有关,计算时要对e(每一次得控制误差)进行累加,这个计算量非常大,而明显没有必要。
而且小车得PID控制器得输出并不就是绝对数值,而就是一个△,代表增多少,减多少。
换句话说,通过增量PID算法,每次输出就是PWM要增加多少或者减小多少,而不就是PWM得实际值。
所以明白增量式PID就行了。
三、接着讲PID参数得整定,也就就是PID公式中,那几个常数系数Kp,Ti,Td等就是怎么被确定下来然后带入PID算法中得。
如果要运用PID,则PID参数就是必须由自己调出来适合自己得项目得。
PID算法通俗讲解
总所周知,PID算法就是个很经典得东西。
而做自平衡小车,飞行器PID 就是一个必须翻过得坎。
因此本节我们来好好讲解一下PID,根据我在学习中得体会,力求通俗易懂。
并举出PID得形象例子来帮助理解PID。
一、首先介绍一下PID名字得由来:P:Proportion(比例),就就是输入偏差乘以一个常数。
I :Integral(积分),就就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
注:输入偏差=读出得被控制对象得值-设定值。
比如说我要把温度控制在26度,但就是现在我从温度传感器上读出温度为28度。
则这个26度就就是”设定值“,28度就就是“读出得被控制对象得值”。
然后来瞧一下,这三个元素对PID算法得作用,了解一下即可,不懂不用勉强。
P,打个比方,如果现在得输出就是1,目标输出就是100,那么P得作用就是以最快得速度达到100,把P理解为一个系数即可;而I呢?大家学过高数得,0得积分才能就是一个常数,I就就是使误差为0而起调与作用;D 呢?大家都知道微分就是求导数,导数代表切线就是吧,切线得方向就就是最快到至高点得方向。
这样理解,最快获得最优解,那么微分就就是加快调节过程得作用了。
二、然后要知道PID算法具体分两种:一种就是位置式得,一种就是增量式得。
在小车里一般用增量式,为什么呢?位置式PID得输出与过去得所有状态有关,计算时要对e(每一次得控制误差)进行累加,这个计算量非常大,而明显没有必要。
而且小车得PID控制器得输出并不就是绝对数值,而就是一个△,代表增多少,减多少。
换句话说,通过增量PID算法,每次输出就是PWM要增加多少或者减小多少,而不就是PWM得实际值。
所以明白增量式PID就行了。
三、接着讲PID参数得整定,也就就是PID公式中,那几个常数系数Kp,Ti,Td等就是怎么被确定下来然后带入PID算法中得。
如果要运用PID,则PID参数就是必须由自己调出来适合自己得项目得。
恩智浦杯全国智能车竞赛之PID调节
恩智浦杯全国智能车竞赛之PID调节随着科技的不断发展,智能车领域的竞赛也越来越受到关注。
恩智浦杯全国智能车竞赛作为我国智能车领域的一项重要比赛,吸引了众多高校学生和工程师参与其中。
在这场竞赛中,PID调节技术一直扮演着非常重要的角色。
本文将从PID调节的基本原理、应用和在智能车竞赛中的作用等方面展开讨论。
一、PID调节的基本原理PID调节是一种经典的控制理论方法,它利用比例、积分、微分三个部分来调节系统的输出,使其跟踪或稳定到期望值。
具体来说,PID控制器可以表示为:u(t)=K_p e(t)+K_i \int_{0}^{t} e(\tau) d\tau + K_d \frac{{d}}{{dt}} e(t)e(t)表示系统的误差,K_p、K_i和K_d分别为比例、积分和微分系数,它们分别控制了系统的瞬时误差、积分误差和微分误差。
通过合理地选择这三个系数,可以使得系统的响应达到期望的效果。
在智能车领域,PID调节技术常常被用来控制车辆的速度、方向和行驶轨迹等。
当智能车需要跟随一条曲线行驶时,可以利用PID控制器来调节车辆的转向角度,使其始终保持在曲线上。
二、PID调节在智能车竞赛中的应用1. 速度控制在恩智浦杯全国智能车竞赛中,智能车通常需要完成一系列的赛道行驶任务,其中就包括对车辆速度的控制。
而PID调节技术可以很好地帮助智能车保持稳定的速度,避免出现速度波动较大的情况,从而更好地完成任务。
当智能车需要在赛道上匀速行驶时,可以利用PID控制器来控制车辆的马达输出,使得车辆的实际速度与设定速度保持一致。
通过合理地调节PID参数,可以使得车辆的速度控制更加精准、稳定。
2. 轨迹跟踪在智能车竞赛中,智能车往往需要在复杂的环境中完成轨迹跟踪任务,比如穿越障碍物、绕过障碍物等。
而PID调节技术可以帮助智能车更好地跟踪指定的轨迹。
智能车在执行轨迹跟踪任务时,往往需要根据当前位置与目标位置之间的误差来调整转向角度,以使车辆沿着指定轨迹行驶。
计算机控制设计PID智能小车
计算机控制设计PID智能小车引言:在现代社会中,智能小车有着广泛的应用,例如自动驾驶汽车、无人机等。
其中,PID(Proportional-Integral-Derivative)控制是一种常见且有效的控制方法,可以使智能小车实现精确的轨迹跟踪和运动控制。
本文将介绍计算机控制设计PID智能小车的原理和实现方法。
一、PID控制原理PID控制是一种反馈控制方法,其基本原理是通过不断调整控制器的输出,使系统的实际输出与期望输出之间的误差不断减小,直到误差趋近于零为止。
PID控制器的输出是根据误差的大小和变化率来计算的,包括比例项、积分项和微分项。
1. 比例项(Proportional term):比例项与误差成正比,用来消除静态误差。
比例项越大,控制器的响应速度越快,但容易产生震荡。
2. 积分项(Integral term):积分项与误差的累积量成正比,用来消除积分误差。
积分项主要解决系统的静态稳态误差问题。
3. 微分项(Derivative term):微分项与误差的变化率成正比,用来消除误差的瞬时变化。
微分项主要解决系统的动态稳定性问题。
通过合理地调整比例、积分和微分的权重,可以得到一个稳定且响应速度较快的PID控制器。
二、实现PID控制的步骤1.确定系统模型:首先需要建立智能小车的数学模型,例如小车的动力学方程和传感器的响应特性。
系统模型的准确性对PID控制的性能有重要影响。
2.参数调整:选择合适的PID参数对系统进行调整。
一种常用的调整方法是试错法,通过不断调整参数,观察系统的响应,并根据实际需求进行优化。
3.实时控制:通过传感器获取实时数据,计算出误差,并根据PID控制算法调整输出。
通过实时调整控制器的输出,智能小车可以实现轨迹跟踪和运动控制。
4.系统稳定性:判断系统的稳定性,保证误差在可容忍的范围内,避免系统产生震荡或不稳定的情况。
三、具体实现步骤1.搭建硬件平台:搭建智能小车的硬件平台,包括电机、传感器、控制器等。
智能车PID算法实现原理讲解
智能车PID算法实现原理讲解智能车P I D算法实现原理讲解为了实现PID控制所需要的等间隔采样,我们使用了一个定时中断,每2ms进行一次数据采样和PID计算。
与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。
为了调试的需要,程序中还在main{}函数中加入了相关的调试代码,这部分代码有最低的优先级,可以在保证不影响控制策略的情况下实现发送调试数据等功能。
检测环节对整个控制系统的质量起到至关重要的作用4.3.2 PID控制调整速度本系统采用的是增量式数字PID控制,通过每一控制周期(10ms)读入脉冲数间接测得小车当前转速vi_FeedBack,将vi_FeedBack与模糊推理得到的小车期望速度vi_Ref比较,由以下公式求得速度偏差error1与速度偏差率d_error。
error1 = vi_Ref– vi_FeedBack; (公式3) d_error = error1 –vi_PreError; (公式4)公式4中, vi_PreError为上次的速度偏差。
考虑到控制周期较长,假设按2.5m/s的平均速度计算,则一个控制周期小车大概可以跑过2.5cm,如果按这种周期用上述PID调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。
为了解决这个问题,可以在PID调速控制中加入BANG-BANG控制思想:根据error1的大小,如果正大,则正转给全额占空比;如果负大,则自由停车或给一个反转占空比;否则就采用PID计算的占空比。
PID控制算法为了使赛车平滑得保持在黑线中央,即使赛车的偏移量平滑地保持在0,实用了PID控制算法。
P为比例参数,D为微分参数。
基准值为0,PID输入为水平偏移量X0,PID输出为转角,转角方向:向左转为正,向右转为负。
P参数在智能车控制器中表示水平偏差量的权,D参数在智能车控制器中表示水平偏差速度的权。
水平偏差量直接反映了赛车偏离黑线的程度,例如赛车偏向黑线的左边越厉害,则赛车的右转角度将越大。
智能小车pid算法
3.1寻迹算法采用PID(PD)控制算法,如果某时刻检测到黑线偏左,就要向左转弯;如果检测到黑线偏右,就要向右转。
偏得越多,就要向黑线方向打越大的转角。
这就是比例控制(P)。
遗憾的是,因为小车有惯性。
假设黑线偏左,说明小车偏右了,需要左传舵,等到小车回到中心的时候,停止转舵,可是小车的惯性会使车身继续左转,直到冲过黑线,黑线又偏右。
然后控制过程反复,车身是在左右摇摆中向前行走的。
这种摇摆叫做“超调”,超调越大,控制越不稳定,容易出轨。
为了克服惯性,我们除了位置信息之外,还需要知道轨迹的变化趋势。
我们可以用黑线位置的微分值来提前得到变化趋势。
用本次位置减去前次位置求出差值,就大致知道偏移量的变化趋势。
将该差值和比例相加后一起作为控制量,即可实现提前控制。
这就叫做比例微分控制(PD控制)/*PID(PD)控制算法*/int PID_Control(signed char Position){int Temp_P,Temp_D,Temp_PID,Temp_I,k; //声明三个变量,用于存放P、I、D三分量的运算结果(I没用上)if(Position==-128) return (No_black); //错误处理(值得改进的地方)else{Temp_I=Position;for(k=0;k<5;k++)Temp_I+=Last_Position[k];Temp_I*=I_coefficient;Temp_P=P_coefficient*Position; //计算比例分量(P)=比例系数*本次位置差Temp_D=D_coefficient*(Position-Last_Position[5]); //计算微分分量(D)=微分系数*(本次位置差-前3次的位置差)//注意由于采样比较快,用本次位置-前3次位置才有足够大的控制量Last_Position[6]=Last_Position[5];Last_Position[4]=Last_Position[3];Last_Position[3]=Last_Position[2];Last_Position[2]=Last_Position[1];Last_Position[1]=Last_Position[0];Last_Position[0]=Position; /*保存前5次的位置,以备用。
PID算法通俗讲解
总所周知,PID算法是个很经典的东西。
而做自平衡小车,飞行器PID 是一个必须翻过的坎。
因此本节我们来好好讲解一下PID,根据我在学习中的体会,力求通俗易懂。
并举出PID的形象例子来帮助理解PID。
一、首先介绍一下PID名字的由来:P:Proportion(比例),就是输入偏差乘以一个常数。
I :Integral(积分),就是对输入偏差进行积分运算。
D:Derivative(微分),对输入偏差进行微分运算。
注:输入偏差=读出的被控制对象的值-设定值。
比如说我要把温度控制在26度,但是现在我从温度传感器上读出温度为28度。
则这个26度就是”设定值“,28度就是“读出的被控制对象的值”。
然后来看一下,这三个元素对PID算法的作用,了解一下即可,不懂不用勉强。
P,打个比方,如果现在的输出是1,目标输出是100,那么P的作用是以最快的速度达到100,把P理解为一个系数即可;而I呢?大家学过高数的,0的积分才能是一个常数,I就是使误差为0而起调和作用;D呢?大家都知道微分是求导数,导数代表切线是吧,切线的方向就是最快到至高点的方向。
这样理解,最快获得最优解,那么微分就是加快调节过程的作用了。
二、然后要知道PID算法具体分两种:一种是位置式的,一种是增量式的。
在小车里一般用增量式,为什么呢?位置式PID的输出与过去的所有状态有关,计算时要对e(每一次的控制误差)进行累加,这个计算量非常大,而明显没有必要。
而且小车的PID控制器的输出并不是绝对数值,而是一个△,代表增多少,减多少。
换句话说,通过增量PID 算法,每次输出是PWM要增加多少或者减小多少,而不是PWM的实际值。
所以明白增量式PID就行了。
三、接着讲PID参数的整定,也就是PID公式中,那几个常数系数Kp,Ti,Td等是怎么被确定下来然后带入PID算法中的。
如果要运用PID,则PID参数是必须由自己调出来适合自己的项目的。
通常四旋翼,自平衡车的参数都是由自己一个调节出来的,这是一个繁琐的过程。
PID算法
PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。
但是,对于PID控制而言,参数的选择始终是一件非常烦杂的工作,需要经过不断的调整才能得到较为满意的控制效果。
依据经验,一般PID参数确定的步骤如下:(1)确定比例系数Kp确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为纯比例调节。
输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。
记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
(2)确定积分时间常数Ti比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。
记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。
(3) 确定微分时间常数Td微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。
如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。
(4) 系统空载、带载联调对PID参数进行微调,直到满足性能要求。
//定义变量float Kp; //PI调节的比例常数float Ti; //PI调节的积分常数float T; //采样周期float Ki;float ek; //偏差e[k]float ek1; //偏差e[k-1]float ek2; //偏差e[k-2]float uk; //u[k]signed int uk1; //对u[k]四舍五入取整signed int adjust; //调节器输出调整量//变量初始化Kp=4;Ti=0.005;T=0.001;// Ki=KpT/Ti=0.8,微分系数Kd=KpTd/T=0.8,Td=0.0002,根据实验调得的结果确定这些参数ek=0;ek1=0;ek2=0;uk=0;uk1=0;adjust=0;int piadjust(float ek) //PI调节算法{if( gabs(ek)<0.1 ){adjust=0;}else{uk=Kp*(ek-ek1)+Ki*ek; //计算控制增量ek1=ek;uk1=(signed int)uk;if(uk>0){if(uk-uk1>=0.5){uk1=uk1+1;}if(uk<0){if(uk1-uk>=0.5){uk1=uk1-1;}}adjust=uk1;}return adjust;}下面是在AD中断程序中调用的代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
智能车P I D算法实现原理讲解为了实现PID控制所需要的等间隔采样,我们使用了一个定时中断,每2ms进行一次数据采样和PID计算。
与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。
为了调试的需要,程序中还在main{}函数中加入了相关的调试代码,这部分代码有最低的优先级,可以在保证不影响控制策略的情况下实现发送调试数据等功能。
检测环节对整个控制系统的质量起到至关重要的作用4.3.2 PID控制调整速度本系统采用的是增量式数字PID控制,通过每一控制周期(10ms)读入脉冲数间接测得小车当前转速vi_FeedBack,将vi_FeedBack与模糊推理得到的小车期望速度vi_Ref比较,由以下公式求得速度偏差error1与速度偏差率d_error。
error1 = vi_Ref– vi_FeedBack; (公式3) d_error = error1 –vi_PreError; (公式4)公式4中, vi_PreError为上次的速度偏差。
考虑到控制周期较长,假设按2.5m/s的平均速度计算,则一个控制周期小车大概可以跑过2.5cm,如果按这种周期用上述PID调节速度,则会导致加速减速均过长的后果,严重的影响小车的快速性和稳定性。
为了解决这个问题,可以在PID调速控制中加入BANG-BANG控制思想:根据error1的大小,如果正大,则正转给全额占空比;如果负大,则自由停车或给一个反转占空比;否则就采用PID计算的占空比。
PID控制算法为了使赛车平滑得保持在黑线中央,即使赛车的偏移量平滑地保持在0,实用了PID控制算法。
P为比例参数,D为微分参数。
基准值为0,PID输入为水平偏移量X0,PID输出为转角,转角方向:向左转为正,向右转为负。
P参数在智能车控制器中表示水平偏差量的权,D参数在智能车控制器中表示水平偏差速度的权。
水平偏差量直接反映了赛车偏离黑线的程度,例如赛车偏向黑线的左边越厉害,则赛车的右转角度将越大。
水平偏差量,是PID控制器的P部分。
水平偏差速度则直接反映了赛车的运动倾向,因为有了赛车的水平偏差速度,对赛车的掌握,将更加精确。
例如赛车偏向黑线左边,然而它的运动方向是向右的,那么,他的转角将比向左运动时的转角要小,因为,我知道赛车已经开始朝正确的方向调整了。
水平偏差速度,是PID控制器的D部分。
通过两个相隔一定采样时间的水平偏差量的差,来得到赛车的水平偏差速度。
然而,这个时间间隔多少比较合适呢?图3.3上述函数图像的横坐标为采样时间t,每小格为4ms。
第1幅图像的纵坐标为赛车水平偏差量;第2幅图像的纵坐标为间隔为1的时候水平偏差速度;第3幅图像的纵坐标为间隔为3时候水平偏差速度;第3幅图像的纵坐标为间隔为5的时候的水平偏差速度。
由上图可知:相邻采样点越远,数据的值域越大,更有利于描述车辆的偏差程度,但是,会降低赛车判断的响应度;相邻采样点越近,数据的值域越小,0状态越多,不利于描述赛车的偏差程度,但是有利于响应赛车的偏差程度,所以,这个相邻的数量要适中。
上图中,间隔3比较合适。
Proportion为的P参数,Derivative为的D参数,LastError[]为的水平偏差量队列,水平偏差速度即队尾-队头,队列长度为LAST_ERROR_NUM,即表示间间隔。
通过实验,长度20比较合适。
有了偏差Error,有了dError=LastError[0]- LastError[LAST_ERROR_NUM],输出值为PID_Output = Proportion * Error + Derivative * dError。
3.6 PID控制算法的改进通过实验和软件仿真,发现,PID控制器并不是在任何情况下,都是最优的选择,比如,在直线上,PID控制器的调整时间,远大于枚举调整法,而在严重偏离的时候,由于赛车的水平偏移量已经固定不变,所以,也没有必要使用PID控制了。
所以,将赛车的状态分成了3种,下面逐一介绍并说明智能车在这一状态下的控制算法。
1:赛车处于直线状态:如果赛车居中,则转角=0。
如果赛车在右边,则转角=2。
如果赛车在左边,则转角=-2。
电机占空比均为最高。
2:赛车处于严重偏离状态:如果赛车严重偏左,则赛车右转最大角度。
如果赛车严重偏右,则赛车左转最大角度。
电机占空比均反向,表示刹车。
3:赛车处于一般弯道状态(即赛车有偏移,但能检测到黑线):则将赛车的水平偏移量作为PID控制器的输入,然后经过PID运算,得出的值为转角的映射。
最后,通过一个一次函数,将输出映射成转角的值即可。
对于电机的控制,抽象出3种情况。
第1种,是稳定过弯,即水平偏移速度很小,这时候,采用加速过完的策略。
第2种,是极不稳定的情况,即水平偏移速度很大,这时候,采用刹车策略。
第3种,是一般情况,此时,采用匀速通过转弯的策略。
实验证明,这种抽象可以使赛车适应几乎任何曲率半径小于500mm 的弯道。
模拟量的采集和PD 控制模拟量的采集和位置、角度计模拟量采集传感器仍然是红外光耦传感器,接收管输出不经过施密特触发器转化成数字量,而是接到单片机的A/D 转换接口进行转换。
位置计算全局求位置法通过各个传感器的信号可以计算出连续的黑线位置,较简单的办法是用类似于长杆求重心的方法,将各个传感器输出分别乘以传感器位置再求和,除以所有传感器输出之和即可得到连续的位置信息。
这之前需要做一些准备工作,由于不同传感器具有差异,直接用A/D 转换的结果计算位置误差较大。
为了避免传感器差异造成的影响,我们采用了先定标再用相对值进行加权计算的办法,具体过程为:程序开始前让每个传感器在赛道上进行扫描,分别记录每个传感器输出信号的最大值max (对应读到黑线中心的情况)和最小值min (对应远离黑线读到白色赛道的情况),用最大值减去最小值得到每个传感器在赛道上的输出范围,小车行使过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值,再用每个传感器的相对值与传感器位置作加权平均得到的结果即为黑线位置。
公式为11()/()n n n n n i i pos v p v ===∑∑,其中pos 为位置,n v 为第n 个传感器的相对输出值,n p 为第n 个传感器的位置。
这种方法消除了传感器差异造成的影响,并能够得到相对十分连续的位置信息,相邻两次位置间隔小于0.5mm 。
然而,全局求位置法在某些入弯情况会造成计算错误,黑线与传感器排列方向夹角越小错误越大。
这是由于此时多个传感器离黑线较近,因此输出值较大,原本黑线位置较大时经过全局加权平均计算结果将偏小,用LCD (自制的调试手段,用LCD 实时显示程序变量等信息)显示测量结果,误差可达36%(正确位置为7cm ,显示值为4.5cm ),这种情况将造成小车转向不足,冲出赛道。
解决办法是采用下面介绍的对称求位置法。
1.1.1.1.对称求位置法对称求位置法的准备工作与全局求位置法相同,使用的是传感器的相对输出值,先判断出输出值最大的传感器,也就是离黑线最近的传感器,然后根据该传感器进行对称加权平均求黑线位置。
对称求位置又分为奇数对称求位置和偶数对称求位置,参与计算传感器个数在传感器总个数的约束下应尽可能大,即两端的传感器总是至少有一个参与计算。
在前面所述情况下,误差为7%(正确位置为7cm,显示值为6.5cm)。
对称求位置法与全局求位置法相比稳定性强,但由于有公式的切换,位置的连续性不如全局求位置法。
但当传感器调节得较好时,二者可以有相同的连续性,因为公式切换时被舍弃的传感器和新加入计算的传感器输出均为0,这一点可以通过后面介绍的去除定标误差办法实现。
1.1.2.角度计算1.1.2.1.多项式逼近双排直线传感器分别计算黑线位置,将结果之差除以传感器间距再进行反正切运算即可得到角度值。
反正切运算通过多项式逼近用多项式计算实现,我们的传感器测量角度范围约±︒,与舵机转向范围相同,在这个范围内,一次多项式对反正切函数的逼近效果很好。
为401.1.3.去除干扰1.1.3.1.去除定标误差由于程序开始前确定每个传感器的最大值和最小值过程存在一定误差,即该最大值和最小值并不分别等于小车运行时传感器读到黑线中心和读到远离黑线的白色赛道时的输出值,这就造成很可能所有传感器相对输出均不为0,在用对称求位置法计算时,切换公式时会使计算结果产生跳动,连续性变差,影响微分控制的效果。
解决这一问题的办法是:扫描求出最大值和最小值后,将最小值加上输出范围的a%(如10%)得到新的最小值,再计算每个传感器的输出范围。
通过调整传感器角度、位置,调节接收管上拉电阻和a的值,用LCD显示每个传感器的相对输出值,得到以下效果为最好:相对输出不为0的传感器个数只为2或3,若最边上的传感器相对输出不为0,则该个数只能为2。
这个条件不难满足,满足条件后(实际条件要更宽松一些)对称求位置法的连续性将与全局求位置法的连续性相同。
1.1.3.2.去除地图干扰由于地图中的十字线、起点线和地图外的场地会导致计算出错误的黑线位置,使小车控制出错,通过设定以下约束可以解决这些问题:a.所有传感器输出都低于一个阈值时不计算新位置b.输出超过阈值的所有传感器并非连续安放的传感器时不计算新位置c.输出最大且超过阈值的传感器与上一个满足该要求的传感器不相邻时不计算新位置。
1.1.4.连续性检测用LCD输出位置计算结果,相邻两次位置间隔小于0.5mm,相邻两次角度间隔小于0.1 。
1.2.PD控制1.2.1.比例控制位置控制中的比例控制采用了分段比例控制,位置较小时与位置较大时设置不同的比例带,原因是传感器宽度有限,检测的位置范围也就有限,统一的比例带过大会导致小车振荡,过小导致最大控制量偏小,小车转向不足,过弯时冲出赛道。
使用分段比例控制既方便又可以解决以上两种问题。
角度控制设置了死区,由于检测角度为0时,即使在直道上小车轴线与黑线也不严格平行,因此角度控制需要设置死区,以避免由此引起的小车直道振荡。
1.2.2.微分控制传感器输出模拟量的情况下检测的位置连续性较好,因此不再需要不完全微分的PD控制,用一般形式的位置和角度微分控制即可达到很好的效果。
由于比例带过小造成小车振荡时,适当增加微分控制;振荡频率较高时则应该减小微分控制,因为此时D控制量过大。
此外,加大微分控制可以使小车稳定性和跟随性变好,防止冲出赛道。