关于自动驾驶车辆控制
目录
1. 本文目的
2. 自动驾驶中控制原理
2.1 控制在自动驾驶中的位置
2.2 控制的数据流
3. 汽车控制模型
3.1 汽车运动学模型
3.2 汽车动力学模型
3.3 运动学模型和动力学模型的作用
4. 汽车控制方法
4.1 基于预瞄和PID的控制方法
4.3 基于MPC的控制方法
1. 本文目的
本文主要目的在于解析自动驾驶控制,以及几种典型的应用控制方法,部分方法小编并没有经过实战,若有笔误,请多指出。
2. 自动驾驶中控制原理
2.1 控制在自动驾驶中的位置

如图所示,为一种典型的自动驾驶控制系统,包括感知-定位-规划-控制以及车辆执行器,车辆控制则直接通过CAN与车辆通信,进行对车辆执行器的控制。
2.2 控制的数据流
以车辆在道路自动驾驶为例,说明车辆控制的数据流,首先用户输入起始点,通过导航,输出一条全局的规划路径,在行驶的过程中,通过感知系统,实时检测交通状态,道路的边界,以及道路中的障碍物(动态或静态),输入到规划系统,规划系统根据当前 状态,进行车辆行为决策,计算可行驶区域,构建和搜索可行驶的轨迹,同时结合当前车辆的状态和约束,输出一条平滑可行驶的轨迹给控制系统,【控制系统】则根据输入的目标轨迹,以及当前车辆状态,经过控制算法,计算出当前油门-刹车-转向等车辆执行器的目标值,并将目标数据通过CAN传递给车辆执行器ECU,执行器则根据目标值,来具体控制执行器的动作(如转向EPS,来控制方向盘转动的角度,刹车ABS来控制刹车泵的制动深度等),以上就简单说明了整个自动驾驶中经过控制数据流的部分。
那么控制在其中的作用可以总结为以下两点:
- 跟上规划给定的目标轨迹;
 - 输出目标的控制值给车辆执行器。
 
3. 汽车控制模型
3.1 汽车运动学模型
所谓的运动学模式,是不考虑车身的受力情况,仅仅考虑车辆运动以及几何关系,以下以自行车模型为例进行说明。

- β 为汽车侧偏角
 - ψ为汽车航向角
 - X为汽车纵向方向运动
 - Y为汽车横向方向运动
 - δf为前轮转向角
 
可以得到运动学模型如下:
X' = V cos(ψ+β)
Y' = V sin(ψ+β)
ψ' = V cos(β) (tanδf - tanδr)/(lf+lr)
β = arctan((lftanδr + lrtanδf ) / (lf + lr))
核心推导过程说明:
- 针对三角形OCA 和三角形OCB分别使用正弦定理,得到两等式;
 - 利用 ψ' = ω = V/R,消除其中的R,以此得到 ψ' 的等式;
 - X' 和 Y' 以肉眼即可看出;
 - 其中β角度的计算推导,也是由三角函数中尽量转为tanβ方式即可计算出。
 
3.2 汽车动力学模型

如上图所示,车辆的y方向受到前后轮胎的摩擦力,同时绕着中心轴做旋转运动,以此根据y方向上的力平衡,以及绕中心轴的力矩平衡,可以得到
- m*ay = Fyf + Fyr (其中ay = y'' + Vx *ψ')
 - Ix * ψ'' = lfFyf - lrFy (注意力的方向)
 
Fyr和Fyf 与轮胎侧偏角相关,根据如下图可以得到轮胎侧偏角

- Fyr = 2 Car (θr) (Car 后轮侧偏刚度 θr 后轮侧偏角)
 - Fyf = 2 Caf (δ - θvf)
 
根据以上几个受力关系,可以推导得到如下的动力学模型:

3.3 运动学模型和动力学模型的作用
利用运动学模型,可以快速的计算出当前车速-航向以及输入的方向盘转角之间的关系;
利用动力学模型,可以进一步获得误差模型或跟踪误差的状态方程,以此计算稳态转向问题。
4. 汽车控制方法
4.1 基于预瞄和PID的控制方法
首先根据规划,会输出一条控制需要的参考运行轨迹。基于预瞄的方法,就是模拟驾驶员,进行横向的预瞄,同时根据当前车辆位置,进行纵向预瞄(若纵向需要位置控制)。

根据横向预瞄结果,获得横向的位置误差以及航向的偏差,进而根据前文提到的车辆模型,基于PID调节控制方向盘或前轮转角;

根据纵向预瞄结果,获得纵向的位置误差,或速度误差,进一步获得加速度控制误差,根据油门刹车与加速度的映射关系,控制油门刹车的量来完成纵向的控制。

4.3 基于MPC的控制方法
MPC典型的控制流

【参考轨迹】:一般规划的轨迹为x y 方向的位置-速度-加速度 甚至jerk
【预测模型】:根据运动学模型,得到如下:

【滚动优化】典型的损失项包括 横向跟踪误差 + 纵向跟踪误差 + 转向误差 +速度误差 + 转角大小损失 + 加速度大小损失 + yawrate 大小损失 + jerk 大小损失 (一般损失的系数是标定量,根据标定量来进行实车调试)
【控制对象】即为油门+刹车+转向
MPC控制的过程为,根据输入轨迹和当前控制状态,预测一段时间内的控制走向,并根据损失函数,计算最优的输出。
4.3 基于Pure Pursuit 轨迹跟踪
纯轨迹跟踪法的思路是,也是把车简化为自行车模型,以后轴为切点,根据规划好的轨迹上的一个点为目标点,车按照一定的圆弧运动,可以让后轴点,经过该目标点。如图所示,以下进行详细的推导。

根据上述的运动学模型 可以得到:
 (1)
其中L为车轴距,R为车辆转动半径。
根据正弦定理,可以得到:
 (2)
进而可以得到:
 (3)
将该(3) 带入 (1)综合以上可以得到:
 (4)
引入横向误差 
 则有
 (5)
可以得到
 (6)
通过该式,可以得到横向控制偏差,与选择的前视距离以及转弯半径相关。
Ld为前视距离,一般选择与车速正相关,如 Ld = k * Vx ,因此有:


