原创: 阿波君 Apollo开发者社区 8月14日
控制模块根据预测的轨迹和估计的车辆状态向油门、刹车或转向扭矩发送适当的命令。控制模块使汽车尽可能接近计划的轨迹。控制器参数可以通过最小化理想状态和观测状态之间的误差函数(偏差)来估计。
决策问题通常用POMDP加上一些机器学习的技术来解决。解决好规划问题,需要把两个方面做好,一个是数据闭环(Data Driven),另一个是基于规则的方法。
上周阿波君为大家详细介绍了「进阶课程㉖Apollo规划技术详解——Understand More on the MP Difficulty」。详细地讲解了Apollo EM planner规划框架,以及解决优化问题的常用方法:离散化的方式、Expectation Maximization(期望最大化)。
本周阿波君将继续与大家分享Apollo控制技术详解——控制理论的相关课程。下面,我们一起进入进阶课程第27期。
目录
1.简介
2.控制模块
3.什么是控制,为什么需要控制
本节主要介绍Apollo控制相关内容,包括常用控制理论、功能限制与未来趋势、相似原理在不同模块中的应用。目的是让大家了解控制模块的整体脉络及理论,通过案例讲解将理论转化成code及真正测试标准的方法。
本次课主要介绍以下三个方面的内容:
通用控制理论及其在Apollo自动驾驶平台上的应用。
功能的限制和未来的趋势。
类似的原理怎样应用于不同的模块。
首先我们回顾一下Apollo自动驾驶框架的基本结构,如图1所示。
▲图1 Apollo 软件框架
从图中可以看出,控制模块的输入一方面来自planning(规划模块),另一方面来自反馈阶段信息(如localization和HD Map),此部分信息包括车辆位置、朝向、速度等。
其输出结果是控制指令,与下层模块canbus(车辆交互标准)进行交互;同时控制模块也会从底层车辆得到反馈信号(车辆本身in vehicle reference frame:速度信息、四轮转速信息、车辆健康状况信息、底盘是否报错信息、危险信息)
如图2所示,控制模块包括三个部分:预处理、控制器和后处理。其中,预处理部分的主要功能包括三方面,第一是对输入信号的检查,对不正常信号的过滤;第二是做一些紧急处理,第三是做一些滤波操作,例如信号的平滑等。
▲图2 控制模块的组成
控制器主要功能包括:模型建立、系统识别和分析,控制器/观察器设计以及参数调优等功能,如图3所示。
▲图3 控制器的主要功能
后处理部分将信号发送给执行器,包括限制的处理以及信号滤波,如图4所示。因为油门、刹车、转向这种执行器本身有上下限、滞后(回滞曲线),所以需要对信号进行一些相关处理。
▲图4 后处理
控制主要是为了弥补数学模型和物理世界执行之间的不一致性。对于自动驾驶而言,规划的轨迹和车辆的实际运行轨迹并不完全一致,控制器按照规划轨迹在条件允许下尽可能地调节车辆本身。为了能够安全、舒适的行驶,自动驾驶系统对性能的要求需要控制模块,主要体现在以下几个方面,如图5所示。
首先是稳定性,包括在所有场景下的车辆行为稳定和安全。
其次是稳定状态的行为,减少或者消除规划和实际车辆行为的差别。
最后是瞬时状态的行为。
▲图5 自动驾驶系统对性能的要求
具体而言,自动驾驶系统是否满足性能要求可以从三个角度去评测:时域、频域以及discrete domain(离散域)。时域是指输出在时间轴上应该满足的要求。其衡量的指标包括steady state gain、rising time、setting time、overshoot和undershoot。每个指标对应的具体含义如图6所示。
▲图6 控制模块在时域上的性能要求
类似的,系统在频域里也需要满足一定的要求。在频域空间,X轴是输入频率,Y轴是输出跟输入的比例,理想状态下输出和输入比例应该为1。系统性能在频域中的评价指标包括pass band、cutoff frequency等,如图7所示。
▲图7 频域的评判指标
除了时域和频域的要求,还需要满足discrete domain的要求。
▲图8 时域和频域的相互关系
对系统来说,在time domain跟frequency domain中的系统需求是可以等价转换的。系统在时域中的要求、响应、数学表达跟频域是可以相互对应的。
此外,系统性能要求还有一些其它的考量指标,如图9所示。
▲图9 满足系统性能要求的额外考量指标
前面介绍了自动驾驶系统需要满足一些性能需求,如果没有控制器的话,这些性能指标可能难以满足,这就是为什么在自动驾驶系统中需要引入控制器的原因。
那么怎么样设计出好的控制模块呢?最简单的控制器就是PID控制器,即比例、积分、微分控制,它是一个model free的控制方法,也就是说PID控制具有通用性。PID控制的基本原理如图10所示。
▲图10 PID 控制器
U是参考量,它和反馈信号之间的差距用error 表示,即图中的e。比例控制P的意思是该控制量与误差成比例,用kp*e(t) 表示。当kp比较小的时候,接近终值的速度会非常慢,如右图的红线所示,但是它有超调与undershoot现象。当kp设置比较大时,则达到稳态速度变快,但会超调,如右图紫色曲线所示。如果系统中存在损耗,比如汽车上坡的动力或者摩擦损耗,使得比例控制每次增加的控制量就等于或者小于损耗时,出现稳态误差,这就是引入积分控制的目的,它可以将之前的误差进行积分,消除稳态误差。而微分控制的目的是使系统更快的从瞬态转化为稳态。系统的控制量就是P+I+D三项的和。