赞
踩
课程讲解控制理论以及控制技术在Apollo无人驾驶中的应用、控制技术在目前无人车方案中的限制以及未来的发展,控制技术与无人车其他技术模块的联动。
本次课程的知识点有:控制理论、反馈信息、Planning、时域、频域、控制量。
控制模块根据预测的轨迹和估计的车辆状态向油门、刹车或转向扭矩发送适当的命令。控制模块使汽车尽可能接近计划的轨迹。控制器参数可以通过最小化理想状态和观测状态之间的误差函数(偏差)来估计。
一、Control in Apollo-1
1.简要介绍
本次主要对以下三个方面作介绍:
- 通用控制理论及其在Apollo自动驾驶平台上的应用
- 功能的限制和未来的趋势
- 类似的原理怎样应用于不同的模块
首先我们看看Apollo自动驾驶的基本框架如下:
可以看到控制模块的信息是规划模块(planning)和自反馈阶段信息(如localization和HD Map),它们会经过一个交互的过程,将相互之间的信息进行交流和决策。
可以从图看到,控制模块包括三个部分:预处理、控制器和后处理。
预处理部分的主要功能有几个方面:
第一对输入信号检查过滤不正常信息
第二做紧急处理
第三作一些滤波操作,例如信号的平滑
控制器主要功能有以下几个方面:
模型建立、系统识别和分析
控制器/观察器设计
参数调优
后处理部分将信号发送给执行器,包括限制的处理以及信号的滤波。
控制主要是为了弥补数学模型和物理世界执行之间的不一致性。
为了能够安全、舒适的驾驶,自动驾驶对性能的要求需要控制模块,主要体现在以下几个方面,如图所示:
首先是稳定性,如在所有场景下的车辆行为稳定和安全
其次是稳定状态的行为,减少或者消除规划和实际车辆行为的差别
最后是瞬时状态的行为
当然,我们可以把性能评测具体化,那么我们就可以通过对: 时域、频域以及离散域(discrete domain)
时域是指输出在时间上应该满足的要求,其衡量标准是steady state gain、rising time、setting time、overshoot和undershoot。其具体意义如下所示:
在频域空间,X轴是输入频率,Y轴是输出跟输入的比例,联系状态下输出和输入的比例应该为1.
除了时域和频域的要求,还需要满足discrete domain的要求
对系统来说,在time domain跟frequency domain中的系统需求是可以等价转换的。系统在时域的要求、响应、数学表达跟频域是可以相互对应的。
前面介绍了一些性能要求需要满足,如果没有控制器的话,这些事很难做到的,这就是控制器的作用。
现如今最简单的控制器就是PID控制器,即比例、积分、微分控制,它是一个model free的控制方法,就是说其控制具有通用性。其原理如下:
这其中:
U是参考量,它和反馈信号之间的差距用error 表示,即图中的e。比例控制P的意思是该控制量与误差成比例,用kp*e(t) 表示。当kp比较小的时候,接近终值的速度会非常慢,如右图的红线所示,但是它有超调与undershoot现象。当kp设置比较大时,则达到稳态速度变快,但会超调,如右图紫色曲线所示。如果系统中存在损耗,比如汽车上坡的动力或者摩擦损耗,使得比例控制每次增加的控制量就等于或者小于损耗时,出现稳态误差,这就是引入积分控制的目的,它可以将之前的误差进行积分,消除稳态误差。而微分控制的目的是使系统更快的从瞬态转化为稳态。系统的控制量就是P+I+D三项的和。
二、control in Apollo-2
本节课程知识点:
非线性、运动学模型、动力学模型、约束、力矩、扭矩
上节我们讲到了简单的PID控制,但是仅仅靠它一个是很难做到精准控制的,于是Apollo才一年基于模型控制的方法,主要包括以下几个部分:建模、系统辨识、控制器设计和参数调优。
一般可分为分析建模和拟合建模。通常一个模型主要由各种属性表示,主要包括描述输入输出的数量、线性或者非线性、离散还是连续等等。
控制模块中的模型,通常包括动力学模型和运动学模型。运动学模型是一种几何模型,感知、预测讨论的模型模型则以运动学模型为主。而在控制模块中,更多考虑动力学模型,实际上,运动学模型是动力学模型的子集。
在自动驾驶中,Dynamic model以Kinematics model为初始模型,将环境等参数设置到Kinematics model中,把车看作质点进行分析。Dynamic model将车按车轮等部分分开进行约束或者系统补偿。
下图是两个比较简单的几何模型,左图是一个综合移动机器人控制模型,右图是著名的自行车模型。
当然只考虑几何约束是显然不够的。下图是一个动力学模型,它不仅考虑了几何约束,还考虑了力矩和扭矩平衡。
下图是考虑一些刚体的力矩和扭矩分析公式,总体满足牛顿第二定律。
在假设纵向速度为0的情况下,我们可以对横向方程进行线性化。
其过程需要基于一些假设。所以在做完控制之后,我们还需要检查这些假设是否合理或者是否会造成很大的误差。
在控制器实现过程中,通常会将ODE或者PDE方程进行处理,转化为矩阵计算的形式。虽然在数学表达形式上不一致,但是其物理含义保持不变,如图9所示。在状态空间表示中还会给出一些状态量的标识,包括输入量。
-2.系统辨识度
在模型中,有些参数是未知的,系统辨识度的目的就是确定这些参数的值。确定这些值的方法有三种:白盒、灰盒以及黑盒方法。
方法 | 原理 |
---|---|
白盒方法 | 基于第一原理(如牛顿定律)的模型结构,可以由测量数据估计模型参数 |
灰盒方法 | 用于只有部分模型结构可知,通过数据重建的方法来获取模型的其他部分的方法 |
黑盒方法 | 指模型结构和参数都在未知的情况下,只能通过输入输出数据来估计的方法 |
基于模型的控制模块设计有三步,分别是滤波器设计、控制器设计以及观察器设计。
滤波器分为线性和非线性,数字滤波或者模拟信号滤波,离散滤波或者连续滤波等。
系统在频域里面需要满足某些性能要求,滤波器通常会对频域信号进行处理。当然我们会根据实现的方式不同,将器分为高斯滤波、卡尔曼滤波、贝叶斯滤波等。它们的作用通常是预测和跟踪。
三、Control in Apollo-3
知识点:开环控制、滤波器、控制量、代价函数、数字信号、时域
控制器的类型大致可以分为三类,分别是开环控制、前馈环控制和后馈环控制,如下所示:
前馈环控制器可以分为两类,如图2所示。上图是增加一个H,可以看出是一个前置滤波器,把输入转化为理想的输入。下图是把扰动量加入到前馈环中,将模型的先验知识添加到环路,减少扰动的影响。
前馈环控制器的主要控制策略有很多种,这里主要介绍三种,分别是Optimal Control(优化控制)、Adaptive Control(自适应控制)、Robust Control(鲁棒性控制)。
1.优化控制
其目的就是在特定情况下,找出一个使系统满足特定条件的优化标准。
下图给出了一个优化控制的分类和演化过程。
最早可追溯到上世纪五六十年代的卡尔曼滤波和后来的LQR。这两个控制在一起可以得到一个LQG,需要注意的是LQG是一个线性并且没有限制的控制器,在这个基础上增加限制,就得到了LMPC。在LMPC的基础上,增加非线性因素就得到了MPC。从上图左边到右边的控制器演化,响应速度更快,但是计算代价更高。
2.LQR(线性二次型调节器)
它的状态空间可以用方程X=Ax+Bα表示,α是输入,其中最重要设计代价函数,如图中的第四行所示。首先,代价函数必须是corrected的,是x的二次方的形式。另外,还有两个调节因子,一个是Q,另一个是R。
在这个基础上,增加前馈项,然后做一个拉普拉斯转换,从时域转换到频域。我们的目标是使系统的error X=0,经过一系列变换之后可以算出αff,进而得到前馈项。
3.MPC
MPC控制器基本逻辑如下图所示:
MPC的代价函数如下图所示。从图中可以看出,代价函数增加了约束边界,有上边界和下边界。
为什么要做离散化?这是我们需要思考的问题,我认为离散化实际上是在尽可能的保存连续空间信息的情况下,把连续空间的问题转换为离散空间的描述,使得计算机能够更好地处理。需要注意的是离散化跟Digital Stability是相关的,如果采样不够好,会丢失很多信息使得系统不稳定。
其此,如何进行离散化呢?离散化有很多的方法,各种方法都有各自的优缺点。但是总的来说都是把数字信号转换为模拟输入/输出信号,如图15所示。同样,也会把Analog输出进行离散化,然后输入到数字信号控制器中。
下面我们举一个简单的例子,图的左边是时域performance的表达方式,右边是进行离散化的一些常用表达形式。最后一列是收敛的速率,表示在一定情况下,数字控制在给定时间下是可以保证收敛的。
下面再给出一些简单的转换公式对应关系。
在这里我们会考虑包括Deadzone、饱和和抗饱和等因素。
Deadzone主要是执行器的一些特性引起的,例如汽车的油门,可能给油在0%到15%之间都是不会使汽车前行的,这个时候反应在图上的就是一条平行的线段,我们称之为Deadzone。在控制器设计的时候需要对这部分进行补偿设计,如下所示:
饱和和抗饱和处理也是出于对执行器的特性的考虑,通常一个执行器是有上限和下限的。如图20所示,把输出值做一个限制,使得输出在执行器的上下限范围内。如果不进行饱和处理,在输出100%的情况下突然转换状态,收敛到最终值可能需要很长的时间。
未来控制器可能从以下几个方面发展,包括数据驱动、结合轨迹生成、、结合预测的控制、基于模型的增强的学习控制方法。
目前,在Apollo中,控制的工程应用主要有两个方面,一个是系统识别,使用的是自动标定方法。另一个是安全策略,如下所示:
安全策略的考虑主要是基于控制是否与底层交流的最后一个模块,所以有很多的安全策略需在控制层面完成。安全信息可分为两个部分:上游信息(Planner发出)+下层反馈信息。如果上游Planning信息丢失、延时、未更新,控制系统需要做出诸如Emergency Stop、缓行之类的决策。类似的,由于接触不稳或者其它因素,导致控制指令没有执行,控制器也需要做一些安全策略的考虑。
本次课程总结到此结束,如有不懂的地方,可以相互研究讨论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。