PID控制包含三项:
其时间域公式为:
u
(
t
)
=
K
P
e
(
t
)
+
K
I
∫
0
1
e
(
t
)
d
t
+
K
D
e
˙
(
t
)
u(t)=K_{P}e(t)+K_{I}\int_{0}^{1}e(t)dt +K_{D}\dot{e}(t)
u(t)=KPe(t)+KI∫01e(t)dt+KDe˙(t)
对其进行拉普拉斯变换可得:
U
(
s
)
=
G
c
(
s
)
E
(
s
)
=
(
K
P
+
K
I
s
+
K
D
s
)
E
(
s
)
=
(
K
D
s
2
+
K
P
s
+
K
I
s
)
E
(
s
)
U(s)=G_{c}(s)E(s)=(K_{P}+\frac{K_{I}}{s}+K_{D}s)E(s)=(\frac{K_{D}s^{2}+K_{P}s+K_{I} }{s})E(s)
U(s)=Gc(s)E(s)=(KP+sKI+KDs)E(s)=(sKDs2+KPs+KI)E(s)
对于系统响应,我们定义几个评价指标:
下图展示了P、I、D分别对如上指标的影响

系统受到输入力F的作用,模型的输出为物体位移x。 质量块M通过具有常数K的弹簧和具有阻尼系数b的阻尼器连接墙面。

其状态转移函数如下图

令m=1,b=10,k=20,F=1。当使用单位阶跃输入来激励系统。 此时系统响应为开环响应,没有控制器应用于系统。系统响应以及状态如下图

当添加控制器到系统中时,此时为闭环响应,其系统响应和状态函数变为


汽车纵向控制中最常用的控制应用就是巡航控制。通常巡航控制系统主要功能就是:通过节气门或制动命令维持车辆速度。
通常控制器可以分为两个级别:高级控制器和低级控制器。

高级控制器:高级控制器根据车辆参考速度和实际速度之差,生成所需的加速度以减小速度差。其输入是速度差,输出是车辆的期望加速度。
根据PID原理我们所需的加速度可以写成:

低级控制器:低级控制器通过增加或减小发动机产生的扭矩来产生期望的加速度。将期望的加速度转换为扭矩需求,然后将扭矩需求转换为节气门角度指令。

前馈图是一个典型的闭环结构,将输出与参考信号做比较。 并将两者之差输入到反馈控制器中。反馈图是一个开环结构,其中参考信号直接馈入前馈控制器。两者结构如下图:

在许多应用中,通常前馈回路和反馈回路会结合使用以提高控制器性能。主要原因是前馈控制器在产生参考输出以实现特定跟踪响应时会提供预测响应,尤其是在所需输入为非零时。反馈控制器会修正响应,从而消除由于干扰而引起的控制误差。

我们使用反馈和前馈控制器用于汽车纵向速度控制。结构如下:

参考速度是前馈控制器的输入,速度差是反馈控制器的输入。 两个控制器均产生两个车辆控制信号,即节气门和制动命令。其具体步骤如下:

设计汽车横向控制器时,通常需要进行以下三步:
车辆的参考路径可以有如下几种:直线段序列,一系列紧密间隔的航点,一系列连续的参数化曲线

有两种类型控制器:
如下图所示,我们将使用线段作为参考路径,在图中以实心黑线显示。还可以看到一条平行于路径但穿过前轴中心的黑色虚线。为了进行横向控制,我们重新定义了相对于当前路径线段的航向δ和ψ。

我们可以在后轴中心,前轴中心或重心处放置车辆参考系。
两种类型误差:航向误差和轨迹偏移误差。
通过公式我们可以看出随着速度的增加,误差变化更快。
Pure Persuit(纯跟踪): 横向控制 | Pure Persuit(纯跟踪)算法
Stanley算法:横向控制 | Stanley算法
MPC算法:自动驾驶控制算法实例之模型预测控制(MPC)–从模型推导到代码实现(以Autoware为例)
三种算法比较:横向自动控制方法:Purepursuit, Stanley, MPC对比