纵向控制器斯坦利

用斯坦利法控制车辆纵向速度

  • 库:
  • 自动驾驶工具箱/车辆控制

描述

纵向控制器斯坦利block计算控制车辆速度的加速和减速命令,以米/秒为单位。指定参考速度、当前速度和当前驱动方向。控制器使用Stanley方法计算这些命令[1]块作为一个离散比例积分(PI)控制器与积分反卷绕实现。有关更多细节,请参见算法

您还可以使用Stanley方法计算车辆的转向角命令。看到横向控制器斯坦利块。

港口

输入

全部展开

参考速度,单位是米/秒,用实标量表示。

飞行器的当前速度,单位是米/秒,用实标量表示。

车辆行驶方向,规定为1对于向前运动和1反向运动。

触发复位积分速度误差,e(k),为零。的值0持有e(k)稳定。非零值重置e(k)。

输出

全部展开

加速命令,以[0]范围内的实标量返回,一个),一个的值是多少最大纵向加速度(m/s^2)参数。

减速命令,以[0]范围内的实标量返回,D),D的值是多少最大纵向减速(m/s^2)参数。

参数

全部展开

控制器的比例增益,Kp,指定为正的实标量。

控制器的积分增益,K,指定为正的实标量。

控制器的采样时间,以秒为单位,指定为正的实标量。

最大纵向加速度,单位是米/秒的平方,表示为正的实标量。

块使输出饱和AccelCmd取值范围[0,一个),一个为该参数的值。值高于一个一个

最大纵向减速,以米/秒的平方为单位,指定为正的实标量。

块使输出饱和DecelCmd端口到范围[0,D),D为该参数的值。值高于DD

算法

纵向控制器斯坦利块实现了一个具有积分反紧的离散比例积分(PI)控制器,如Anti-windup方法(金宝appSimulink) PID控制器块的参数。block使用如下公式:

u ( k ) = ( K p + K T 年代 z z 1 ) e ( k )

  • u(k)是控制信号k时间步长。

  • Kp是比例增益,因为设置比例增益,Kp参数。

  • K的积分增益积分增益,吻参数。

  • T年代块的采样时间是否以秒为单位样品时间(年代)参数。

  • e(k为速度误差(CurrVelocity- - - - - -RefVelocity)k时间步长。为每一个k,此误差等于电流速度与参考速度输入(CurrVelocity- - - - - -RefVelocity)。

控制信号,u,确定加速命令的值AccelCmd和减速命令DecelCmd。块将加速和减速命令饱和到各自的范围[0,一个]和[0,D),地点:

  • 一个的值。最大纵向加速度(m/s^2)参数。

  • D的值是多少最大纵向减速(m/s^2)参数。

在每个时间步,只有一个AccelCmdDecelCmd端口值为正,另一个端口值为0。换句话说,车辆可以在一个时间步内加速或减速,但不能同时做这两件事。

中指定的运动方向方向输入端口,确定哪个命令在给定的时间步长是正的。

方向端口值 控制信号值u(k) AccelCmd端口值 DecelCmd端口值 描述
1(移动)

u(k)> 0

积极的真正的标量 0 车辆前进时加速

u(k)< 0

0 积极的真正的标量 车辆前进时减速
1(反向运动)

u(k)> 0

0 积极的真正的标量 车辆倒车时减速

u(k)< 0

积极的真正的标量 0 车辆在倒车时加速

参考文献

[1] Hoffmann, Gabriel M., Claire J. Tomlin, Michael Montemerlo,和Sebastian Thrun。越野自动汽车轨迹跟踪:控制器设计、实验验证和赛车。美国控制会议。2007年8月,第2296-2301页。doi: 10.1109 / ACC.2007.4282788。

扩展功能

C / c++代码生成
使用Simulink®Coder™生成C和c++代码。金宝app

介绍了R2019a