精华内容
下载资源
问答
  • 智能车PID
  • 智能小车PID算法资料,一些自己用的7788的资料
  • PID-小车类-智能小车PID算法
  • 51单片机智能小车PID速度控制算法源代码,该PID算法可以将智能小车的速度控制在设定的速度值上。需要结合测速模块使用。
  • 基于Arduino的蓝牙小车智能小车pid调速+测速+避障,部分注释。
  • 智能车PID_算法实现原理讲解是飞思卡尔智能车应用中最为普遍的算法
  • pid控制算法,pid算法介绍,从熟悉到精通pidpid控制实际应用例程
  • 视频链接:https://www.bilibili.com/video/BV1db4y1Q7qM/ 本设计是有AT89C51为主控芯片,主要实现了智能小车PID速度匀速前进 按键功能为设置目标速度值。

    视频链接:https://www.bilibili.com/video/BV1db4y1Q7qM/
    本设计是有AT89C51为主控芯片,主要实现了智能小车PID速度匀速前进
    按键功能为设置目标速度值。

    展开全文
  • 智能车PID 控制

    千次阅读 2018-09-01 03:53:09
    PID 控制策略其结构简单, 稳定性好, 可靠性高, 并且易于实现。 其缺点在于控制器的参数整定相当繁琐, 需要很强的工程经验。 相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。 使用试凑法来确定...

    PID 控制策略其结构简单, 稳定性好, 可靠性高, 并且易于实现。 其缺点在于控制器的参数整定相当繁琐, 需要很强的工程经验。 相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。 使用试凑法来确定控制器的比例、 积分和微分参数。
    试凑法是通过闭环试验, 观察系统响应曲线, 根据各控制参数对系统响应的大致影响, 反复试凑参数, 以达到满意的响应, 最后确定 PID 控制参数。 试凑不是盲目的,而是在控制理论指导下进行的。在控制理论中已获得如下定性知识:

    比例调节(P)作用:
    是按比例反应系统的偏差, 系统一旦出现了偏差, 比例调节立即产生调节作用用以减少偏差。 比例作用大, 可以加快调节, 减少误差, 但是过大的比例,使系统的稳定性下降, 甚至造成系统的不稳定。
    积分调节(I) 作用:
    是使系统消除稳态误差, 提高无差度。 因为有误差, 积分调节就进行, 直至无差, 积分调节停止, 积分调节输出一常值。 积分作用的强弱取决与积分时间常数 Ti, Ti 越小, 积分作用就越强。 反之 Ti 大则积分作用弱, 加入积分调节可使系统稳定性
    下降, 动态响应变慢。 积分作用常与另两种调节规律结合, 组成 PI 调节器或 PID调节器。

    微分调节(D) 作用:
    微分作用反映系统偏差信号的变化率, 具有预见性, 能预见偏差变化的趋势, 因此能产生超前的控制作用, 在偏差还没有形成之前, 已被微分调节作用消除。 因此, 可以改善系统的动态性能。 在微分时间选择合适情况下, 可以减少超调, 减少调节时间。 微分作用对噪声干扰有放大作用,因此过强的加微分调节, 对系统抗干扰不利。 此外, 微分反应的是变化率, 而当输入没有变化时, 微分作用输出为零。 微分作用不能单独使用, 需要与另外两种调节规律相结合, 组成 PD 或 PID 控制器。

    舵机pd控制

    舵机控制
    其关键部分代码如下:
    servo_pwm_change = (wucha_Now* Kp_servo + Kd_servo*(wucha_Now-wucha_Last)) / 100;
    其中, KP_servoKD_servo 两个重要的参数需要经过不断调整。 在实际调试中发现, 针对赛道类型给定参数更符合实际。 例如, 在直道和小 S 路上相应的KP_servo 可以给小, 以防舵机打角过大。 分段各段之间参数的给定要连续, 否
    则会出现舵机在参数切换之后出现较大突变, 导致智能汽车的路径变差。 我们设置一个数学函数控制参数的输出, 减少调节参数的工作量。 当然为了防止把舵机的齿轮打坏, 应该对舵机的打角进行限幅处理。

    展开全文
  • 本课题以MC9S12XS128芯片开发的自动寻迹智能车为研究对象, 主要针对增量式PID控制在复杂多变的系统中抗干扰性不强,时变系 统中的响应不够快等问题,进行算法上的改进。主要研究内容: (1)构建了以MC9S12XS...
  • . 为了实现 PID 控制所需要的等间隔采样我们使用了一个定时中断每 2ms进行一次数据 采样和 PID 计算与此并行系统中还设计了一个 转速脉冲检测中断 从而实现了转速检测 为了调试的需要程序中还
  • 智能车PID控制学习笔记

    千次阅读 多人点赞 2020-05-30 15:29:14
    智能车中还有方向PID控制(舵机调整方向),不过考虑到舵机相当于简化版的伺服电机,还是调节速度收益更大。 为什么要用PID 在理想情况下,小车的速度调节成线性,即当PWM=60%时,小车速度是2M/S;把PWM提高到90%...

    主要谈及直流电机的速度PID控制,在智能车中还有方向PID控制(舵机调整方向)。

    为什么要用PID

    在理想情况下,小车的速度调节成线性,即当PWM=60%时,小车速度是2M/S;把PWM提高到90%,则小车速度为3M/S;但实际上由于各种因素的影响,往往实际速度和输入速度有误差,因此必须要通过某种算法进行调整,PID控制的意义就在于消除这种误差。
    在这里插入图片描述

    PID理论基础

    PID控制器(比例-积分-微分控制器),由比例单元§、积分单元(I)和微分单元(D)组成,通过Kp, Ki和Kd三个参数进行设定。
    P代表了当前的信息,起纠正偏差的作用,使反应迅速;
    D代表了将来的信息,在过程开始时强迫过程进行,过程结束时减小超调,克服振荡,提高系统的稳定性,加快系统的过渡过程;
    I代表了过去积累的信息,它能消除静差,改善系统的静态特性。

    比例环节(放大环节):输出量以一定比例不失真也无时间滞后地复现输入信号
    积分环节:输出量正比于输入量单独积分
    微分环节:其输出与输入量的导数成比例

    PID控制器主要适用于线性且动态特性不随时间变化的系统。当不完全了解一个系统和被控对象或不能通过有效的测量手段来获得系统参数时,最适合采用PID控制技术。
    在这里插入图片描述

    动态性能指标:
    见下方时域图。
    在这里插入图片描述

    1.比例(proportion)控制
    比例控制器能立即成比例地响应输入的变化量,其实质相当于一个放大器。调节器输出u与其输入偏差e之间的关系是比例关系,误差值和kp相乘,然后和预定的值相加。仅有比例控制时,系统输出存在稳态误差,这是由比例控制的本质决定的,如果偏差为0,比例控制器就会失去作用,从而导致偏差增大,因此很少单独使用比例控制。

    u=kp*error
    

    在这里插入图片描述
    上图为比例控制。

    稳态误差是指时间趋于无穷时(即系统稳定后)输出量与期望输出的偏差。控制系统的稳态误差越小说明控制精度越高。

    2.比例积分(PI)控制
    即比例+积分(PI)控制器。
    为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差的运算取决于时间的积分,随着时间增加,积分项会增大,所以即便误差很小,积分项也会随时间增加而加大,它推动控制器的输出增大,使稳态误差进一步减小,直到等于零。但是积分作用的引入,会使系统稳定性变差(见图)。
    比例积分控制对于时间滞后的被控对象使用不够理想。

    u=kp*error+ ki∗∫ error
    

    在这里插入图片描述
    上图为比例积分控制。

    3.比例微分(PD)控制
    即比例+微分(PD)控制器。
    在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。其原因是由于存在有较大惯性组件(如储能元件)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
    解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
    所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性,否则反而会使系统的控制受到影响。

    u=kd*(error(t)-error(t-1))
    

    4.PID控制
    PID的离散化公式(便于计算机处理)为:
    在这里插入图片描述
    在这里插入图片描述
    上图为比例积分微分控制(理想情况)。

    变频器的闭环运行就是在变频器控制的拖动系统中引入负反馈,进行反馈控制,以提高反馈精度。

    关于对PID算法的通俗理解,可参考:
    https://zhuanlan.zhihu.com/p/39573490 PID控制算法原理 (抛弃公式,从本质上真正理解PID控制)

    PID控制器的参数整定

    PID参数对控制质量的影响不十分敏感,因而不同的PID系数的组合可能达到相近的控制效果。

    编写可行的PID程序从来不是什么难点,难的是PID参数整定,异常麻烦以至于我们宁愿用开环控制。
    需要设定的值有:

    ● Setpoint:目标值
    ● Kp,Ki,Kd: pid参数
    ● OutputLimits:输出极限
    ● SampleTime:采样时间

    一般采用的是临界比例法(属于工程整定法)。

    工程整定法主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。(简单来讲就是试凑)

    利用该方法进行PID控制器参数的整定步骤如下:
    (1)首先预选择一个足够短的采样周期让系统工作,输入设定为系统允许的最大值的60%~70%;
    (2)仅加入P比例控制环节。初调时,选小一些,然后慢慢调大,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期,设定PID的比例增益P为当前值的60%~70%;
    (3)加入I积分控制环节。积分系数初调时要把积分时间设置长些,然后慢慢调小直到系统稳定为止,设定PID的积分时间常数Ti为当前值的150%~180%。

    一般情况下到此为止

    (4)D微分控制环节一般不用设定。如果通过比例、积分参数的调节还是收不到理想的控制要求,才调节微分时间。初调时把这个系数设小,然后慢慢调大,直到系统稳定。

    1.PID控制器的参数整定(经验总结)
    2.PID:从入门到放弃

    舵机的PID参数整定

    舵机通常采用PD算法,智能车过弯是一个比较特殊的环境,去掉参数I可以加快系统的反应速度,使小车过弯更加顺畅。

    展开全文
  • 智能车PID算法资料包

    2018-05-17 17:35:15
    最全的PID调节资料,里面包含了PID算法,调节技巧,源代码,以及上位机
  • PID控制器参数选择的方法很多,例如试凑法、临界比例度法、扩充临界比例度法等。
  • 智能车PID_原理

    千次阅读 多人点赞 2019-04-03 22:04:43
    为了实现PID控制所需要的等间隔采样,我们使用了一个定时中断,每2ms进行一次数据采样和PID计算。与此并行,系统中还设计了一个转速脉冲检测中断,从而实现了转速检测。为了调试的需要,程序中还在main{}函数中加入...

        为了实现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(对应远离黑线读到白色赛道的情况),用最大值减去最小值得到每个传感器在赛道上的输出范围,小车行使过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值,再用每个传感器的相对值与传感器位置作加权平均得到的结果即为黑线位置。公式为其中pos为位置, 为第n个传感器的相对输出值, 为第n个传感器的位置。

    这种方法消除了传感器差异造成的影响,并能够得到相对十分连续的位置信息,相邻两次位置间隔小于0.5mm。然而,全局求位置法在某些入弯情况会造成计算错误,黑线与传感器排列方向夹角越小错误越大。这是由于此时多个传感器离黑线较近,因此输出值较大,原本黑线位置较大时经过全局加权平均计算结果将偏小,用LCD(自制的调试手段,用LCD实时显示程序变量等信息)显示测量结果,误差可达36%(正确位置为7cm,显示值为4.5cm),这种情况将造成小车转向不足,冲出赛道。解决办法是采用下面介绍的对称求位置法。

          1. 对称求位置法

    对称求位置法的准备工作与全局求位置法相同,使用的是传感器的相对输出值,先判断出输出值最大的传感器,也就是离黑线最近的传感器,然后根据该传感器进行对称加权平均求黑线位置。对称求位置又分为奇数对称求位置和偶数对称求位置,参与计算传感器个数在传感器总个数的约束下应尽可能大,即两端的传感器总是至少有一个参与计算。

    在前面所述情况下,误差为7%(正确位置为7cm,显示值为6.5cm)。对称求位置法与全局求位置法相比稳定性强,但由于有公式的切换,位置的连续性不如全局求位置法。但当传感器调节得较好时,二者可以有相同的连续性,因为公式切换时被舍弃的传感器和新加入计算的传感器输出均为0,这一点可以通过后面介绍的去除定标误差办法实现。

    1. 1.2角度计算
      1. 多项式逼近

    双排直线传感器分别计算黑线位置,将结果之差除以传感器间距再进行反正切运算即可得到角度值。反正切运算通过多项式逼近用多项式计算实现,我们的传感器测量角度范围约为 ,与舵机转向范围相同,在这个范围内,一次多项式对反正切函数的逼近效果很好。

    1. 1.3去除干扰
      1. 去除定标误差

    由于程序开始前确定每个传感器的最大值和最小值过程存在一定误差,即该最大值和最小值并不分别等于小车运行时传感器读到黑线中心和读到远离黑线的白色赛道时的输出值,这就造成很可能所有传感器相对输出均不为0,在用对称求位置法计算时,切换公式时会使计算结果产生跳动,连续性变差,影响微分控制的效果。解决这一问题的办法是:扫描求出最大值和最小值后,将最小值加上输出范围的a%(如10%)得到新的最小值,再计算每个传感器的输出范围。通过调整传感器角度、位置,调节接收管上拉电阻和a的值,用LCD显示每个传感器的相对输出值,得到以下效果为最好:相对输出不为0的传感器个数只为2或3,若最边上的传感器相对输出不为0,则该个数只能为2。这个条件不难满足,满足条件后(实际条件要更宽松一些)对称求位置法的连续性将与全局求位置法的连续性相同。

                    2.去除地图干扰

    由于地图中的十字线、起点线和地图外的场地会导致计算出错误的黑线位置,使小车控制出错,通过设定以下约束可以解决这些问题:a.所有传感器输出都低于一个阈值时不计算新位置b.输出超过阈值的所有传感器并非连续安放的传感器时不计算新位置c.输出最大且超过阈值的传感器与上一个满足该要求的传感器不相邻时不计算新位置。

    1. 1.4连续性检测

    用LCD输出位置计算结果,相邻两次位置间隔小于0.5mm,相邻两次角度间隔小于 。

    1. 1.4.1PD控制
      1. 比例控制

    位置控制中的比例控制采用了分段比例控制位置较小时与位置较大时设置不同的比例带,原因是传感器宽度有限,检测的位置范围也就有限,统一的比例带过大会导致小车振荡,过小导致最大控制量偏小,小车转向不足,过弯时冲出赛道。使用分段比例控制既方便又可以解决以上两种问题。角度控制设置了死区,由于检测角度为0时,即使在直道上小车轴线与黑线也不严格平行,因此角度控制需要设置死区,以避免由此引起的小车直道振荡。

                  2.微分控制

    传感器输出模拟量的情况下检测的位置连续性较好,因此不再需要不完全微分的PD控制,用一般形式的位置和角度微分控制即可达到很好的效果。由于比例带过小造成小车振荡时,适当增加微分控制;振荡频率较高时则应该减小微分控制,因为此时D控制量过大。此外,加大微分控制可以使小车稳定性和跟随性变好,防止冲出赛道。

     

     

     

     

     

     

    展开全文
  • 本文档对智能车的算法实现有详细讲解,希望对那些喜欢智能小车的同学有帮助
  • 两轮智能车PID控制如何实现

    千次阅读 2020-01-03 15:52:39
    PID基础理论知识 都知道PID控制,但是总是没有搞清楚,看了很多公式和图形就是没整明白。下面这个图形就是pid控制的原理图。 PID算法在很多方面都有重要应用,比如电机的速度控制,恒温槽的温度控制,四轴飞行器...
  • 需要pwm速度控制的孩纸们可以看看.可以帮助新手们快速上手。
  • MSP432E401Y单片机智能小车PID调速代码

    千次阅读 2018-06-19 17:12:05
    * Description:PID处理函数 * 引脚: * * Author: Robin.J ***************************************************************************/ #include <PID.h> #include "ti/devices/msp43....
  • PID 飞思卡尔智能车PID控制教程,讲的很详细,也很容易懂 PID 飞思卡尔智能车PID控制教程,讲的很详细,也很容易懂
  • PID 飞思卡尔智能车PID控制教程,讲的很详细,也很容易懂
  • 智能车PID

    千次阅读 多人点赞 2020-01-22 10:43:38
    首先感谢学长带我走上飞思卡尔智能车比赛的路,万分感谢。 我们要了解pid是什么,就得知道pid是干什么的。因为没有通过专业的学过pid的用法,一切都是新鲜的,我只能用我的理解简略的介绍一下pid的用处。我们在做...
  • 如果说智能车的视觉处理是眼睛,PID就是双手可以去帮你完成智能车的运动控制。没有一个好的PID,就可能会产生手眼打架的情形。比如说,你去看了一个美食博主的美食的制作过程,眼睛说,我会了,手说,你快拉到吧。...
  • PID调速智能车

    2017-12-29 15:00:24
    嵌入式智能小车,通过PID调节速度,实时追踪前车达到控制目的
  • 一条PID黑/白线跟随,基于STC15W4K32S4 MCU的伺服转向智能车。 硬件组件: STC15W4K32S4 MCU× 1 5A DC-DC可调电源模块× 2 TB6612FNG双通道电机驱动器× 1 直流电机(通用)280减速电机。× 2 MG996R数字伺服(通用...
  • 智能车 控制策略

    2011-10-15 22:46:40
    智能车pid 智能车pid 智能车pid 智能车pid
  • 智能车舵机控制PID

    热门讨论 2012-11-20 01:33:10
    增量式pid学控制的可以看看运用在智能车的舵机 分享给大家,欢迎交流啊

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 478
精华内容 191
关键字:

智能车pid