二、规划控制——车辆纵向控制(2)

概述:本文主要学习车辆纵向控制的相关理论知识——经典控制理论。


前言

本文将继续深入研究自动驾驶车辆在纵向上的运动控制相关理论知识。


一、控制器(controller)

一般来说,控制器是通过接收传感器的信号来调整发送到系统的输出信号,用以改变我们受控系统状态的装置。
简单来说,控制器其实是根据一个输入信号产生一个输出信号的装置,而输入信号是一个误差信号(error signal),即我们期望达到的目标点和我们系统测量出来的值的一个差值。如图所示。
在这里插入图片描述
在一个控制器中,通过给定一个期望目标(Set point)和一个输出测量值(Measured Variable)产生一个Error误差,输入控制系统输出一个新的Control Value控制变量进行控制。

二、经典控制理论(Classical Control Theory)

2.1 理论背景

描述:一般的物理系统都可以在时域(time domain)下进行建模,而这个输出可以表示为由输入变量(various inputs)、前一个系统(一般是初始状态)状态值(previous system values)和时间(time)变化的函数。
难点:随着时间的变化,我们系统的状态和输出会随之改变。但是时域模型往往都是高阶微分方程,人工求解往往是不容易的,甚至是现代的计算机系统也很难高效求解。
解决方法:所以,为了解决这个问题,经典控制理论会使用拉普拉斯变换将时域下的常微分方程(Ordinary Differential Equation(ODE))转变为在频域(frequency domain)下的代数多项式(regular algerbraic polynomial),这样我们在这样一个转变为频域的控制系统下,可以更加直观的通过图解方式确定控制系统的整个特性,分析整个控制系统的运动过程以及提供控制系统调整的一个可能性,整个操作会变得简单。

2.2 拉普拉斯变换(Laplace Transform)

拉普拉斯变换又叫线性变化,是将一个有参数t(t>0)的函数转换为参数为复数s的函数。

  1. 拉普拉斯变换定义:
    在这里插入图片描述

  2. 微分定理:
    在这里插入图片描述
    详细证明:
    在这里插入图片描述

  3. 积分定理
    在这里插入图片描述

  4. 拉氏变换梳理:
    在这里插入图片描述(1)单位脉冲
    (2)延迟脉冲
    (3)单位阶跃
    (4)延迟阶跃
    (5)单位斜坡
    (6)指数衰减
    (7)多项指数衰减

结合参考下图:
在这里插入图片描述

2.3 传递函数(Transfer Function)

把具有线性特征对象的输入和输出之间的关系,用一个输出的拉氏变换和输入的拉氏变换的比来表达的函数就称为传递函数。
注意:在所有的传递函数中,所有的初始条件都为0。
假设线性不随时间变化的微分方程来表达系统,公式如下:

在这里插入图片描述

这里y是输出output,x是输入input,输出的高阶次向要大于等于输入。
当将上式变成拉氏变换公式,需要将所有初始条件都取0。公式如下:
在这里插入图片描述
此时经过拉式变换后的公式如下,这个函数就是传递函数:
在这里插入图片描述

2.4 开环系统(Open loop system)

其本质是,根据输入产生输出、不具有反馈调节。
这里举了一个点电机运动的例子:
在这里插入图片描述

2.5 闭环系统(Closed loop sysytem)

其本质是,根据输出来改变、调节我们输入到系统的输入(反馈)。
(1)还是刚才的例子,我们已经得到我们的开环传递函数:
在这里插入图片描述
(2)加入反馈信号,又加入了增益放大器K,如图所示:
在这里插入图片描述
则,现在变成了C(s)和E(s)的比值等于KGop(s)
在这里插入图片描述在这里插入图片描述

(3)由于E(s)等于输入减去输出,所以C(s)最终等于:
在这里插入图片描述
变换形式可得:
在这里插入图片描述
二阶系统的标准公式:
在这里插入图片描述
这里 ζ叫阻尼比或者阻尼系数,Wn叫系统无阻尼自然振荡频率。在这里插入图片描述

2.6 阶跃响应(Step Response)

通常我们在研究系统性能是否良好时,我们会看它的阶跃响应,也就是说当时间是0的时候,我们给出一个输入,看这个系统的输出随时间如何变化。在变化过程中包含的问题内容:

  1. 系统多久会达到稳态,稳态值多少。
  2. 是否存在稳态误差也就是稳态Output和Input的差。
  3. 如何达到稳态值,比如说这个过程中有没有振荡或者超调等。

我们利用上述2.5闭环系统公式(标准式)进行学习阻尼比ζ及对其系统的影响情况:
在这里插入图片描述
这里,我们在t等于0时,给一个输入为1的输入,重点关注ζ的值。在这里插入图片描述

  1. 当0<ζ<1时,欠阻尼系统(Underdamped case),往往会有一个振荡出现,就是蓝色的那条线,而振荡其实就是Wn影响的。
    特点:它其实可以很快达到稳态(steady state),但是会产生振荡(oscillation)。有些系统是可以承受振荡有些系统不能承受。
  2. 当ζ>1时,过阻尼系统(Overdamped case),就是黄色的那条线。
    特点:没有振荡出现,但是到达稳态过程会很慢,而且ζ越大,到达稳态的时间会越慢。
  3. 当ζ=1时,临界阻尼响应也叫理想阻尼系统,就是那条橙色的线。
    特点:没有振荡、没有很慢的到达稳态响应过程。

综上所述:我们在选择阻尼比的过程中,首先要保证基本没有振荡而且时间不能太长,然后需要看具体的应用来判断,如ACC的话出于安全考虑不能选择ζ<1,需要选择ζ=1或者>1;而有些系统能够接收振荡可以选择ζ=0.7-0.8可以更快的到达稳态响应。

2.7 伯德图(Bode plot)

Bode Plot是非常重要的频域分析工具,我们在分析系统响应过程中经常要用到它,它可以表现出系统响应的特征。在这里插入图片描述
伯德图是由两幅图组成,dB和Φ:

  1. dB表达的是系统在不同频率信号情况所表达的增益,也就是说当我们的输入信号的振幅是x,输出信号的振幅是y,简而言之就是对系统不同频率输入的敏感程度。
    在这里插入图片描述在这里插入图片描述
    当系统输入信号为低频输入信号时,系统输出没有稳态误差,输入输出的比值为1,但是随着输入的频率增加,那么其增益就会上升,当输入逐渐接近Wn(nature frenquency)达到时,就是我们所说的共振。

  2. Φ(相位图)
    相位图就是输入输出的相位差,也就是其峰值之间的距离,是对系统延迟的一个描述。

在这里插入图片描述
总而言之,Bode plot的应用是非常广泛的,它可以给我们提供很多的系统信息,比如相位域度、增益域度都可以反应系统的稳定性,它也可以表达系统对于特定信号输入频率的敏感度,比如低频滤波器对高频的信号的敏感度不会很高等。

三、PID控制器(PID Controller)

PID控制器实际是根据本身误差的绝对值以及误差的变化来控制我们最终输入系统的输出值,来改变我们系统的响应,对抗我们系统中存在的干扰(Disruption)。如图所示。
在这里插入图片描述
PID解析:
9. P(Proportional):比例,对误差本身进行放大或缩小,调整整个系统开环比的系数,提高系统的静态误差,降低系统的惰性,加快响应的速度。
10. I(Integral):积分,对误差的积分进行放大或缩小,提高系统的静态误差,但是由于需要误差的积累,一定程度上降低我们的响应速度。
11. D(Derivate):微分,对误差的变化量进行放大或缩小,帮助我们稳定系统,阻碍系统过快的纠正误差,一定程度上会影响系统的响应速度。

3.1 PID表达形式

  1. PID标准形式:
    在这里插入图片描述
    在这里插入图片描述
    (1)第一项是比例项:直接作用于误差上,放大或者缩小。
    (2)第二项是积分项:对误差的积分进行放大或缩小。
    (3)第三项是微分项:对误差的微分进行放大或缩小。

这三项加起来就是PID控制器在时域下的一个表达形式。通过拉式变换可得:
在这里插入图片描述
这三项是互相独立不影响的,其公式最标准的PID公式。
由于实际应用和解决问题不同如输入噪音、测量量等,可能需要不同的PID进行搭配。
这里我们举个例子,误差先经过微分,然后经过比例和积分进行控制。
在这里插入图片描述

3.2 比例控制器(Proportional Action)

比例控制器是对误差进行放大缩小,从而改变系统响应。
在这里插入图片描述
这里我们设计了一个P控制器,其中H(s)是比例控制器Kp:
在这里插入图片描述
在这里插入图片描述

如上图所示,当Kp从0.5增加到1,从1增加到2,从2增加到10的过程中,系统的稳定值越来越趋近于1,但是它永远达不到1,由闭环传递函数公式可得出:
在这里插入图片描述
当s=0时,其稳态误差不可能等于0,也就是稳定值一般都是小于1的值,除非Kp=无穷大,但是当Kp=无穷大时,整个系统也会处于不稳定状态,过度振荡。在这里插入图片描述
所以,系统仅仅使用Kp比例控制的话,永远都有一个稳态误差。其阻尼比公式:
在这里插入图片描述

3.3 PI控制器(Proportional Action)

PI控制器会使我们的稳态误差变为0,但是它会给我们的系统响应带来滞后性,因为积分是累计误差,需要系统等待一段时间或者在一定的速率下才可以影响稳态误差。

我们这里用了同样系统的一个PI控制器,其中H(s)是PI控制器:

在这里插入图片描述
在这里插入图片描述
如上图所示,Kp固定为2,当Ki从0到0.5,系统的稳态值已经到了0,随着Ki的不断增加,系统的稳态值越来趋向于0,但是同时我们会发现,随着Ki的不断增加,其系统的振荡也会越来越大,由闭环传递函数可以得出:
在这里插入图片描述
当s=0时,其稳态误差等于0,稳态稳定值就是1。
在这里插入图片描述
所以,无论Kp等于多少,在Ki越大的情况下,我们在时间足够的情况下,最终都会达到它的稳态值,但是它在系统中也会产生更多的振荡。

3.4 PD控制器(Derivative Action)

比例微分控制器主要发生在误差的变化量上,误差变化量越大,它的作用就越大,当系统发生振荡时,比例微分控制器可以帮助我们稳定系统,但是它也会使系统达到稳态响应的速度变慢,因为它会阻止系统过快的纠正稳态误差。
我们这里用了同样系统的一个PD控制器,其中H(s)是PD控制器:
在这里插入图片描述
在这里插入图片描述
如上图所示,Kp固定为2,当Kd越来越大,系统的振荡是越来越小的,但是同时我们会发现,随着Kd的不断增加,达到10时,它会导致系统无法及时地减少超调,同时当超调太大时,它会导致系统无法及时的减少到回归点,所以需要选择一个合理的Kd值,从而减少系统的振荡,使系统更加的稳定。
由闭环传递函数可以得出,无论怎么改变Kd的值都无法影响系统最终的稳定值:

在这里插入图片描述
当s=0时,和比例控制一样,其稳态误差也不可能等于0。

在这里插入图片描述
所以,我们如果对于稳态值有严格要求的话,需要引入积分控制这一项。

3.5 PID算法优化

实际应用中,我们除了要了解PID每个参数对系统的影响之外,还需要有更多的考虑,需要做哪些变化来克服实际应用中的问题。

3.5.1 微分控制器

微分控制器在实际理论上没有问题,但在实际应用中,很多系统的输出也就是稳态误差会包含很多的噪声,尤其是一些高频的噪声,如果直接对这个误差进行微分,我们会得到一个更加嘈杂的信号,在使用嘈杂的信号进行控制,实际上并不能达到我们想要的效果,甚至还会使系统出现很多不稳定的情况。
如果我们发现误差中包含很多的噪声,我们通常会把微分项转换形式:
在这里插入图片描述
在这里插入图片描述

这里引入了一个一阶低频的滤波器,如图所示:
在这里插入图片描述
可以调节N来控制滤波的范围截止频率(cutoff frequency)从而调整我们想要滤掉的波段,有效地过滤掉由高频滤波带来的实际问题。

3.5.2 积分控制器

积分控制器有一个积分饱和的概念会影响系统的响应,就是在实际应用中,任何的物理系统都只能在一定的范围内工作,如电机在达到它的额定电压时,会达到它最快的转速,电压再大的话就会烧掉。
我们以设计一个电机系统为例,输出要达到它的一个角度θ。
在这里插入图片描述
系统响应开始时,由于误差累积小,Kp的作用就会很小,此时我们Kp比例调节占据主导地位,会朝着我们的稳态值去逼近,同时误差的积分会逐渐地积累,当误差越来越小,我们积累误差的速度就会越来越慢,直到我们到达目标点(稳态值),我们的积分项也达到了最高点,如图所示。

在这里插入图片描述
此时,如果在进行响应,我们的误差变为负数,但是由于我们前面的积分项累积的误差非常大,此时尽管积分项在变小,但是它依然是正的方向,而且现在误差比较小,Kp还不能占主导,还是疾积分项占主导如图所示。
在这里插入图片描述
此时,它会继续让电机往相反的方向走,朝着目标点远离,因为积分项认为此时还没达到它所认为的回归点,如下图所示。
在这里插入图片描述
在这种情况下,当误差又变大时,积分项积累的误差才慢慢变小。如下图所示。
在这里插入图片描述
这时,我们的Kp项才会慢慢变大,最终使我们的稳态值(角度)开始往回走,慢慢矫正误差。如下图所示。
在这里插入图片描述
但在这个过程中,由于积分项的过度饱和情况,并不是使我们的系统按照误差的回归方向进行控制的,也就是说无法及时响应误差的反馈,所以严重的情况会导致我们系统的不稳定。
所以,我们要避免积分饱和的情况,此时需要加入抗积分饱和的算法。

  1. 微分分离/去积分方法
  2. 饱和积分初始化
  3. Setpoint Limitation :当饱和值因为目标值突变产生(如 阶跃响应),我们目标值可以用一个斜坡变化来避免。如果干扰很大的话,也会饱和。
  4. Clamping:限制积分累积量的上下限,避免发生积分饱和。
  5. Back-calculation:反馈抑制的抗饱和积分,将输出饱和的部分反馈给积分项,使积分项消除饱和。如下图所示:
    在这里插入图片描述

(1)实际输出值<输出最大值,输出实际输出值,则积分反馈项不起作用。
(2)实际输出值>=输出最大值,我们的actuator等于输出最大值,则会有一个非线性的条件输出给actuator。相应的,积分反馈起作用,会有一个▲u反馈给积分项,从而消弱积分的饱和即ui,当Ku(抗积分饱和系数)越大,则积分项退出饱和的作用就越强,反之越弱。

3.5 PID整定方法(PID Tuning methods)

3.5.1 Ziegler-Nichols方法

PID整定中最常用的方法为基于Ziegler-Nichols(Z-N)的PID参数工程整定方法,在工业控制中有广泛的应用。
这种方法最核心的思想就是
4:1衰减
,即利用Kp,Ki,Kd,将调节过程变化达到规定的4:1衰减比为止。
这里是一个基于Z-N的振荡法(Oscillation Method)。如下图所示。
在这里插入图片描述
这种方法应用最广范的是在低频的时候,即系统是很稳定的,随着你不断地提高增益,系统就会发生小小的振荡,甚至超调不稳定。
如上图所示,具体操作方法(4:1衰减):
(1)将Ki,Kd设置为0,Kp设置尽量小,使得我们整个控制器的输入为0。
(2)不断增加Kp的值直到Kmax,即出现等幅振荡,会得到一个振荡频率值f0。
(3)如果我们取P控制器,Kp=0.5Kmax,Ki=0,Kd=0。
(4)如果我们取PI控制器,Kp=0.45Kmax,Ki=2f0,Kd=0。
(5)如果我们取PID控制器,Kp=0.6Kmax,Ki=2f0,Kd=0.125/f0。
一般来说,这就可以得到一个大概的比较好的PID整定,但实际来说这是一个靠经验调校出来的参数,有很多系统不允许等幅振荡的,也就是说不允许有很大的超调量。所以,我们需要在此方法上进行修正。
具体操作方法大部分和上面一样(4:1衰减):
(1)将Ki,Kd设置为0,Kp设置尽量小,使得我们整个控制器的输入为0。
(2)不断增加Kp的值直出现临界稳定状态,会得到一个Kmax和振荡频率值f0。
(3)如果我们取P控制器,Kp=0.5Kmax,Ki=0,Kd=0。
(4)如果我们取PI控制器,Kp=0.45Kmax,Ki=2f0,Kd=0。
(5)如果我们取PID控制器,Kp=0.6Kmax,Ki=2f0,Kd=0.125/f0。

3.5.2 Heuristic Tuning

简要说明就是试错法,不断调整控制器的匹配来达到最优。

3.5.3 Cohen-Coon tuning

这个方法和Z-N方法类似,不需要我们对控制理论有基础,我们可以通过类似于套公式的形式调节PID参数。
在这里插入图片描述

3.5.3 Other PID tuning methods

在这里插入图片描述


总结

本文主要是对于自动驾驶规划控制学习中的纵向控制中经典控制理论知识进行学习,主要介绍了纵向经典控制理论,PID控制器以及其方法应用。这篇文章希望可以对想要学习自动驾驶规划控制方向的同学们有一定的帮助。
喜欢的朋友们动动小手点个关注,我会定期分享我的一些知识总结和心得体会,感谢大家!

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值