控制
控制简介
控制是驱使车辆前行的策略。对于汽车而言,最基本的控制输入为转向、加速和制动。通常,控制器使用一系列路径点来接收轨迹。控制器的任务是使用控制输入让车辆通过这些路径点。
基本控制输入有:转向、加速、制动
控制器的任务:使用控制输入让车辆通过轨迹上的路径点
控制的要求:准确性、可行性、平稳度
控制流程
控制器预计有两种输入:目标轨迹与车辆状态。
目标轨迹来自规划模块,在每个轨迹点,规划模块指定一个位置和参考速度,在每个时间戳都对轨迹进行更新。
车辆状态包括:通过本地化模块来计算的车辆位置、从车辆内部传感器获取的数据(如速度、转向和加速度)。
通过使用这两个输入来计算目标轨迹与实际行进轨迹之间的偏差。
控制器的输出是控制输入(转向、加速和制动)的值。当偏离目标轨迹时,应该采取行动来纠正偏差。将使用方向盘控制行驶方向(即转向)、使用油门加速、使用刹车减速(即制动)这三个值传递给车辆,进行无人驾驶了。
PID控制
PID的第一组件为P代表“比例”(Proportional)P控制器在车辆开始偏离时立即将其拉回目标轨迹。比例控制意味着,车辆偏离越远,控制器越难将其拉回目标轨迹。
D代表“微分”(Derivative)D项致力于使运动处于稳定状态。它增加了一个阻尼项,可最大限度地减少控制器输出的变化速度
I代表积分(Integral)I控制器负责纠正车辆的任何系统性偏差。例如,转向可能失准,这可能造成恒定的转向偏移,这就需要稍微向一侧转向以保持直行。为解决这一问题,控制器会对系统的累积误差进行惩罚。
将P、I和D组件结合构成PID控制器。
PID优劣对比
- PID控制器很简单,只需要知道与目标轨迹有多大的偏离。在很多情况下的效果很好。
- 但是PID控制器只是一种线性算法,对于非常复杂的系统而言,这是不够的
- PID控制器依赖于实时误差测量,这意味着受到测量延迟限制时可能会失效
- 车辆越偏离轨道,越难拉回既定轨道。
LQR(线性二次调节器)
线性二次调节器(Linear Quadratic Regulator 或LQR)是基于模型的控制器,它使用车辆的状态来使误差最小化。
Apollo使用LQR进行横向控制。横向控制包含四个组件:横向误差、横向误差的变化率、朝向误差和朝向误差的变化率。变化率与导数相同,用变量名上一个点代表。我们称这四个组件的集合为X,这个集合X捕获车辆的状态。除了状态之外,该车有三个控制输入:转向、加速和制动。我们将这个控制输入集合称为U。
Apollo使用LQR进行横向控制
横向控制包含四个组件(称这四个组件的集合为X):
- 横向误差
- 横向误差的变化率
- 朝向误差
- 朝向误差的变化率
三个控制输入(称这个控制输入集合为U):
- 转向
- 加速
- 制动
模型预测控制MPC
模型预测控制(或MPC)是一种更复杂的控制器,它非常依赖于数学优化,但基本上可以将MPC归结为三个步骤:
- 建立车辆模型
- 使用优化引擎计算有限时间范围内的控制输入
- 执行第一组控制输入
MPC是一个重复过程,它着眼未来,计算一系列控制输入,并优化该序列。但控制器实际上只实现了序列中的第一组控制输入,然后控制器再次重复该循环。计算一系列控制输入,优化该序列,但控制器只实现该序列中的第一组控制输入,再执行循环。若执行一系列控制输入序列,因为用的是近似测量与计算,结果会与目标值误差偏离较大,要在每个时间步不断地重新评估控制输入的最优序列。
MPC优化
优化引擎间接评估控制输入,对车辆轨迹进行建模,成本函数计算轨迹成本。
成本函数主要基于与目标轨迹的偏差,其次还有速度加速度舒适度等模型、约束、成本函数结合解决优化问题。在不同优化引擎中找到最佳选择。
MPC优劣对比
优点:
- 考虑车辆模型,更精确
- 适用于不同的成本函数,可以在不同情况下优化不同的成本
缺点: - 复杂
- 缓慢
- 难以实现