2021-02-15

**

神车是:设计的时间 > 装车的时间 > 调试的时间

PID是什么?

**
PID是一种控制方法。P:propotional比例;I:integral积分;D:derivative微分。
利用PID可以快速高效地进行闭环控制,也就是使输出量能通过与给定量的比较,来控制输入量,使输出量尽可能接近给定量,且时间尽可能短。
PID分为位置式和增量式两种,对应不同的数学表达式。根据智能小车之家的视频介绍,两种控制方式效果一致。我觉得位置式更好理解。先用位置式做,先做出来,再看着学学增量式,看两者是否有区别。

**

为什么要用PID?有什么好处?

**
用PID做闭环控制简单。如果做开环控制,效果不好。做闭环控制,PID是最简单的实现方式。且不用数学建模。根据《智能车制作》一书,用理论调节PID参数,需要对电机调速系统中各个组成部分进行数学建模,并通过自动控制理论在频域对其稳定性和参数进行分析和设计,难度较大。并且车模并非完全的线性系统,用PID这种线性控制方法得到的参数也无法直接应用。所以最好还是直接用经验法调参数,可以先不进行过多的理论学习-。上手快。

**

PID有什么不好的地方?可不可以改进控制方法?

**
PID三个参数分别对系统的性能在各个方面既有好的影响,也有不好的影响。只使用PID控制不可能使系统在各方面都达到最好的效果。
改进的话
我们可以充分认识到PID三个参数的意义。再根据被控对象的不同,选择性采用三个参数。
限幅器是必要的。但在一个B站视频中,UP主对积分进行了限幅,消除了引入I变量后的一堆震荡。但在《智能车制作》中电机的PI输出接一个限幅器,用于防止输出量无限制增加或减少以致超出PWM调节器允许范围。这里我需要对I变量的影响作进一步认识,并且看些技术报告,看别人是怎么做的。
《智能车制作》中还提出了分段PID(不同段采用不同的PID参数,难点在于分段点的确定和调参难度的增大)、模糊PID(根据经验确定模糊规则库,通过模糊化、模糊推理、解模糊等步骤实现PID的变参数调节,可理解为优化后的分段PID控制)。
积分分离(为避免偏差较大时PID控制器产生的积分饱和问题,通过算法,使在适当的时候自动引入或移除I变量)。
速度电流双闭环控制。在直流电机调速系统中加入电流内环后,因为电流和转矩,转矩和转速有直接的对应关系,在系统外部转矩变化时,电流内环可以快速响应其变化,在外转速环为响应前进行调节,从而可以调高系统的外部抗扰能力,降低外部转矩扰动对电机转速的影响。又由于存在了电压环限幅器,嗲牛给定值被限制在安全范围内,可以对电机起到一定保护作用。*但首先,得要有电流采样电路才能实现此功能。*另:电流内环的控制频率与电流采样频率一般要大于1KHz,或者与PWM输出频率保持一致。
数字滤波、微分先行(解决微分放大干扰的问题)。
我认为
应该先依照惯例选取PID参数个数,先把功能做出来。
然后考虑手动设定分段PID控制。因为我认为,串级PID中,姿态控制与速度控制密切相关,且姿态优先级高,也就是,其实姿态是速度控制的一个输入量。并且直观地来讲,应该是车身越斜,速度越快。因为只有更快地向前跑才能防止车往前倒。而小车最后冲刺阶段,是又平又直的路,完全可以加大小车前倾,从而加快速度,实现冲刺。我们可以采用计时的方式进行中断,或者根据赛道的某些标志进行中断。
然后《智能车制作》中有介绍积分防饱和方法,应该也是经过检验的可行方案。也可以尝试。
其余恐怕难度太大,此次不建议采用吧。

**

要在哪些地方进行PID控制?

**
主要一个是直立的姿态,一个是前进的速度,一个是转向的角度。另外一个是电流的大小,作为直流电机调速的内环控制。这里要求有电流采样电路,先得确认有这个功能再说。
控制小车直立和控制小车前进其实都是控制电机转速。控制转向角度,其实是控制舵机角度。
所以我们有两个闭环控制系统。一个的被控对象是电机,被控量是转速,测量元件是迷你编码器,执行机构是电机驱动。另一个被控对象是舵机,被控量是角度,测量元件是加速度计*(摄像头在这里面是什么作用还不知道)*。

**

PID控制性能有什么指标?

**
稳:速度输出值可以稳定跟随速度给定值,不随外界因素,如电池电量、赛道坡度等变化而产生较大偏差。(从阶跃响应上看应该是收敛的)
快:智能车输出速度能快速调节到给定速度,或在系统输出因外部扰动而存在偏差时能够快速恢复。(上升时间、超调时间、调整时间。上升时间最明显)
准:系统给定值与实际输出值稳态误差小,系统输出精度高。

**

PID调参方法

**
PID参数对系统的影响:
P:较大时,系统的过渡过程较快,但过大容易产生震荡
I: 较大时,系统的精度调节较好,但超调量变高,过渡过程可能存在震荡,系统稳定性下降。较小时,稳态误差消除变慢,但系统的稳定性较高。
D:有助于减少系统超调量,提高系统的响应速度,但具有放大噪声的作用,从这个角度看是不利于系统稳定性的。
PI改善稳态特性,PD改善动态特性

目标:
稳快准。智能车对快的需求更大,所以可以采取P较大I不太大的方案。
调试方式:
1.仿真:大概看看就好。
2.液晶显示:简单显示给定转速,实测转速,PID参数。
3.上位机双向通信。展示的信息很丰富且可以在线数据调试。
4.实物测量:示波器测电机电流,转速测量仪测电机转速。但测量结果和单片机中的数字量有差别,不很可靠。
5.DA转化,在用示波器观察。太麻烦,也不是很可靠。

经验:
《看过的一篇较好的解释PID的文章,分享只为新手~》推荐速度慢时采用PID,充分认识到各参数意义,发现问题。提高速度后会发现响应变慢,可以去除I,用PD。建议在3m/s后就用PD控制。

《PID控制经验,回复别人问题时不小心写的,觉得有必要以自己名义发帖》推荐转向控制用PD,速度控制用增量PI(可以加D,但要限幅)。
对于位置式PD, OutVal = P*(InNew-InSet) + D*(InNew-InOld);
参数调节:

  1. 一般先调P, 初次设参数时, 估计单独的"P*(InMax-InMin)"能使输出达到最大. 此处建议初始值P = (OutMax-OutMin)/(InMax-InMin). 然后修改参数P已达到一个较好效果, 很可能达不到要求, 调到效果无法明显改善为止.
  2. 接着调D, 先注意InOld很可能不是上一次采集的值, 可能是10次甚至20次前的值(视情况而定), 以削弱随机误差的影响. 若采用上面的计算式, D一般设置成P的好几倍, 初始设定, 可设置成3P.
    最后, 修改轮流修改PD参数,调到效果无法明显改善为止.
    PS:一般经过几次修改后, 再改参数效果就不明显, 这种情况,可能的原因有两种: 1. 参数改的幅度太小. 2. 确实到极限了,这就需要从其他方面想办法.
    对于增量式PI, 这种方式一般用于控制大滞后的系统(如速度/温度控制), OutVal += P*(InNew-InOld) + I*(InNew-InSet) ;
    注意:
  3. P后面乘的是偏差的微分(差分), I后面乘的是偏差, 这是因为这个方程本质上是实现积分(累加)功能, 偏差的微分(差分)经过积分(累加)后就是偏差(对应参数P), 而偏差经过积分(累加)后就对应I.
  4. 后续代码记得限制OutVal∈[OutMin,OutMax]
  5. 此处的InOld一般是上一次采集的数据,不必是多次前的, 用多次之前的数据反而会降低系统的实时性, 因为理论上积分可以削弱随机误差的影响. 然而控制系统实际情况难以完全用理论概括, 具体实现视情况而定!!!
    参数调节:
  6. 先调I参数, 关于初始值的设置, 一般I*(InMax-InMin)能使OutVal在T内达到最大值(T为被控对象的时间常数). 则初始值可设置为I=(OutMax-OutMin)/(InMax-InMin)*dt/T=[1-(-1)]/(1-0) * 0.001/3=0.00066666666666667!
  7. 接着P参数, 类似位置式P, 初始值P=(OutMax-OutMin)/(InMax-InMin).
    最后就是以PI参数为基础, 进行调节, 而调节的各种技巧, 实在是太多, 总之一句话 “好看的就是好的”. 另外调参数还得看具体指标.
    **注意:对于飞思卡尔竞赛速度控制宁愿反应稍慢,也别冒险产生震荡, 震荡(即便看起来不明显)会减小车轮的摩擦力, 进而减小弯道速度 **
    《PID调节经验总结》:
    (1) 确定比例系数P
    首先去掉PID的积分项和微分项,纯比例调节。输入设定为系统允许输出最大值的60%~70%。比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。
    (2) 确定积分时间常数Ti
    比例系数P确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。
    (3) 确定微分时间常数Td
    微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。
    (4) 系统空载、带载联调
    对PID参数进行微调,直到满足性能要求。
    《PID的详细调试说明资料》给出了不少干货:
    PID调试一般原则
      a.在输出不振荡时,增大比例增益P。
      b.在输出不振荡时,减小积分时间常数Ti。
      c.在输出不振荡时,增大微分时间常数Td。
    常用口诀:
    参数整定找最佳,从小到大顺序查
    先是比例后积分,最后再把微分加
    曲线振荡很频繁,比例度盘要放大
    曲线漂浮绕大湾,比例度盘往小扳
    曲线偏离回复慢,积分时间往下降
    曲线波动周期长,积分时间再加长
    曲线振荡频率快,先把微分降下来
    动差大来波动慢。微分时间应加长
    理想曲线两个波,前高后低4比1
    一看二调多分析,调节质量不会低

《双车接力组基于MM32SPIN27方案浅析–逐飞科技》
直立控制部分采用串级PID来进行控制。串级PID可以大大的提高车模的稳定性,内环控制频率为1Khz。一般分为三个环节,速度环、角度环、角速度环。实际上观察数据我们会发现加速的数值波动是十分大的,并且角速度才是直观反馈车模旋转的数据。
通常内环为角速度,外环为角度,内环控制周期1ms,外环控制周期5ms,速度环控制周期100ms。角度融合采用互补滤波,也可以使用卡尔曼滤波,计算量会大一点,滤波算法运行的时间更长一些。
在调试参数的时候,从内环开始调试。角速度环的效果就是阻碍车模前倾与后倾,角度环的效果就是维持车模的角度,速度环最终控制车模的轮速。

OLED通常显示:

  • 陀螺仪基准数值
  • 加速度计基准数值
  • 运行速度设定
  • 姿态控制调节参数
  • 速度控制调节参数
  • 方向控制调节参数
  • 阈值设定
  • 电磁传感器归一化设定
  • 停车时间设定
  • 起跑线检测时间设定
  • 最大运行速度设定
  • 坡道参数阈值

**

姿态控制

**

**

速度控制

**
可以将脉冲速度和实际速度通过实验大概记录下来。
**

偏航角控制

**
最重要的地方是在弯道进行转弯。转弯有一个安全速度,先以3m/s为基准,具体根据实地实验确定。

你可能感兴趣的:(早期垃圾博客,自动化)