智能车PID 算法实现原理讲解

合集下载

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的算法推荐

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算法的原理和算法一、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算法的原理和算法

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控制算法是一种用于实现控制系统的经典算法。

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算法的采用很有意义。

首先必须明确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控制器的核心思想是通过不断地调整控制器的输出,使系统的实际输出与期望输出尽可能接近。

其包括三个部分:比例控制(P)、积分控制(I)和微分控制(D)。

比例控制用来减小当前误差,积分控制用来消除过去误差的影响,而微分控制用来预测未来误差的趋势。

通过合理地调整这三个部分的系数,可以实现对系统的精确控制。

在智能车竞赛中,PID调节通常用于调整车辆在赛道上的行驶轨迹。

赛道通常是一条带有弯道和直道的环形赛道,车辆需要根据赛道的曲线进行转向和调整速度,保持在规定的赛道内行驶。

而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.循环执行上述步骤,使得车辆能够持续地调整控制量,使得实际值逐渐接近设定值,从而实现稳定的控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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控制量过大。

此外,加大微分控制可以使小车稳定性和跟随性变好,防止冲出赛道。

相关文档
最新文档