基于MATLAB&SIMULINK开发自动驾驶系统第九讲纵向车速控制
本讲是采用纵向控制器Stanley模块来控制车辆向前运动的速度。在本模块中,以车辆的加速度从0到10米/秒为例。
纵向控制器Stanley块是一个离散的比例积分控制器,具有积分防抖功能。给定车辆的当前速度和行驶方向,该块输出所需的加速和减速指令,以匹配指定的参考速度。
运行模型,然后,打开范围,查看速度的变化和相应的加速和减速命令。
纵向控制器Stanley块以最大的3米/秒的值饱和加速指令。该块的最大纵向加速度(m/s^2)参数决定了这个最大值。试着调整这个参数并重新仿真模型。观察
变化对范围的影响。可以调整的其他参数包括块的比例和积分分量的增益系数,分别使用比例增益 Kp 和积分增益 Ki 参数。
10.1 说明
纵向控制器Stanley块计算控制车辆速度的加速和减速指令,单位为米/秒。指定参考速度、当前速度和当前行驶方向。控制器使用Stanley方法来计算这些命令,该块作为一个具有积分反余量的离散比例积分(PI)控制器来实现。
10.2 端口
10.2.1 输入
RefVelocity - 参考速度
参考速度,单位为米/秒,指定为实数标量。
CurrVelocity - 当前速度
车辆的当前速度,以米/秒为单位,指定为实数标量。
方向--行驶方向
1 (正向运动) |-1 (反向运动)
车辆的行驶方向,正向运动为1,反向运动为-1。
Reset - 重置速度误差积分的触发器。
0(保持稳定)|非零标量(重置)。
重置速度误差积分e(k)为零的触发器。值为0时,e(k)保持稳定。非零值重置e(k)。
10.2.2 輸出
AccelCmd - 加速指令
加速度命令,以实数标量形式返回,范围为 [0, MA],其中 MA为参数的值。最大纵向加速度(m/s^2)参数。
DecelCmd - 减速命令
减速命令,以实数标量形式返回,范围为 [0, MD],其中MD为参数的值。最大纵向减速度(m/s^2)参数。
10.3 参数
比例增益,Kp - 比例增益。
2.5(默认)
控制器的比例增益,Kp,指定为正实标量。
整数增益,Ki - 整数增益
1(默认)
控制器的积分增益,Ki,指定为正实标量。
采样时间 (s) - 采样时间
0.05(默认)
控制器的采样时间,以秒为单位,指定为正实标量。
最大纵向加速度(m/s^2)--最大纵向加速度。
3(默认)
最大纵向加速度,单位为米/秒的平方,指定为正实数。
该块将AccelCmd的输出饱和到[0, MA],其中 MA是该参数的值。高于MA的值设置为MA。
最大纵向减速度(m/s^2) - 最大纵向减速度。
6(默认)
最大纵向减速度,单位为米/秒平方,指定为正实数。
该块将DecelCmd端口的输出饱和到[0, MD],范围内,其中MD是该参数的值。超过MD的值将被设置为MD。
10.4 算法
纵向控制器Stanley块实现了一个具有积分反余量的离散比例积分(PI)控制器,如PID控制器块的 "反余量方法"(Simulink)参数所述。该块使用的是这个公式。
- u(k)是第k个时间步长的控制信号。
- Kp 为比例增益,由比例增益Kp 参数设置。
- Ki 为积分增益,由积分增益Ki 参数设置。
- Ts是块的采样时间,单位为秒,由采样时间(s)参数设置。
- e(k) 是第k个时间步的速度误差(CurrVelocity - RefVelocity)。对于每一个k,这个误差等于当前速度和参考速度输入的差值(CurrVelocity - RefVelocity)。
控制信号u决定加速指令AccelCmd和减速指令DecelCmd的值。该块将加速和减速命令饱和到各自的[0,MA]和[0,MD]范围内,其中。
- MA是最大纵向加速度(m/s^2)参数的值。
- MD是最大纵向加速度(m/s^2)参数的值。
在每个时间步中,AccelCmd和DecelCmd端口值中只有一个为正,另一个端口值为0,换句话说,车辆在一个时间步中既可以加速,也可以减速,但不能同时做到这两点。
方向输入端口所指定的运动方向,决定了在给定的时间步中,哪条指令为正值。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|