lateralControllerStanley

使用Stanley方法计算路径跟踪的转向角命令

描述

例子

steerCmd= lateralControllerStanley (refPose,currPose,currVelocity)计算转向角命令,以度为单位,根据车辆的当前速度调整车辆的当前位姿以匹配参考位姿。默认情况下,该函数假定车辆处于向前运动状态。

控制器使用Stanley方法计算转向角指令[1],其控制律基于运动学自行车模型。在低速环境下,惯性效应很小的情况下,使用该控制器进行路径跟踪。

例子

steerCmd= lateralControllerStanley (refPose,currPose,currVelocity,名称,值)指定使用一个或多个名称-值对的选项。例如,lateralControllerStanley (refPose currPose currVelocity,‘方向’,1)计算车辆反向运动时的转向角指令。

例子

全部折叠

计算转向角命令,该命令将车辆当前的姿态调整为沿着行驶路径的参考姿态。车辆在向前行驶。

在本例中,您将计算单个转向角命令。在路径跟踪算法中,随着车辆姿态和速度的变化,不断地计算转向角。

在路径上设置一个参考位姿。姿态在位置(4.8米,6.5米),方向角为2度。

refPose = [4.8, 6.5, 2];%[米,米,度]

设置车辆的当前姿态。姿态在位置(2米,6.5米),方向角为0度。设置飞行器的当前速度为2m / s。

currPose = [2,6.5, 0];%[米,米,度]currVelocity = 2;米秒

计算转向角指令。为了使车辆与参考位姿匹配,方向盘必须逆时针旋转2度。

steerCmd = lateralControllerStanley (refPose currPose currVelocity)
steerCmd = 2.0000

计算转向角命令,该命令将车辆当前的姿态调整为沿着行驶路径的参考姿态。车辆在倒车。

在本例中,您将计算单个转向角命令。在路径跟踪算法中,随着车辆姿态和速度的变化,不断地计算转向角。

在路径上设置一个参考位姿。姿态是在位置(5米,9米),有一个90度的方向角。

refPose = [5,9,90];%[米,米,度]

设置车辆的当前姿态。姿态在位置(5米,10米),方向角为75度。

currPose = [5,10,75];%[米,米,度]

设置飞行器的当前速度为-2米每秒。因为飞行器是反向运动,所以速度一定是负的。

currVelocity = 2;米秒

计算转向角指令。为了使车辆与参考位姿匹配,方向盘必须顺时针旋转15度。

steerCmd = lateralControllerStanley (refPose currPose currVelocity,“方向”,1)
steerCmd = -15.0000

输入参数

全部折叠

参考位姿,指定为[x,y,Θ)向量。xy单位是米,和Θ是在度。

xy指定参考点,引导车辆转向。Θ指定此参考点处的路径的方向角,且在逆时针方向上为正。

  • 对于前进中的车辆,参考点是最接近车辆前轴中心的路径上的点。

  • 对于反向行驶的车辆,参考点是最接近车辆后轴中心的路径上的点。

数据类型:|

车辆的当前姿态,指定为[x,y,Θ)向量。xy单位是米,和Θ是在度。

xy指定车辆的位置,定义为车辆后轴的中心。

Θ指定车辆在指定位置的方向角(x,y,逆时针方向为正。

有关车辆姿态的详细信息,请参阅自动驾驶工具箱中的坐标系统

数据类型:|

车辆的当前纵向速度,指定为实标量。单位是米每秒。

  • 如果车辆在向前运动,那么这个值必须大于0。

  • 如果车辆在逆行,则此值必须小于0。

  • 值0表示车辆不处于运动状态。

数据类型:|

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值是对应的值。的名字必须出现在引号内。可以按任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:“MaxSteeringAngle”, 25岁

车辆的行驶方向,指定为逗号分隔的对组成“方向”,要么1向前运动或1反向运动。驱动方向决定了用于计算转向角指令的位置误差和角度误差。有关更多细节,请参见算法

车辆的位置增益,指定为逗号分隔对组成“PositionGain”一个正的实标量。这个值决定了位置误差对转向角的影响程度。典型值在[1,5]范围内。增加这个值以增加转向角的大小。

车辆前后轴之间的距离,以米为单位,由逗号分隔的对组成的轴距一个实数。此值仅适用于车辆向前行驶时。

车辆的最大允许转向角,以度为单位,由逗号分隔的对指定“MaxSteeringAngle”和(0,180)范围内的实数。

steerCmd值已饱和到该范围[-MaxSteeringAngle, MaxSteeringAngle]

  • 下面的值-MaxSteeringAngle-MaxSteeringAngle

  • 值高于MaxSteeringAngleMaxSteeringAngle

输出参数

全部折叠

转向角命令,以度为单位,作为实标量返回。这个值在逆时针方向上是正的。

有关更多细节,请参见自动驾驶工具箱中的坐标系统

算法

为了计算转向角指令,控制器将当前位姿相对于参考位姿的位置误差和角度误差最小化。车辆的行驶方向决定了这些误差值。

当车辆向前行驶时(“方向”名称-值对是1):

  • 位置误差为从前轴中心到路径上参考点的横向距离。

  • 角误差是前轮相对于参考路径的角度。

当车辆在倒车时(“方向”名称-值对是1):

  • 位置误差为后桥中心到路径上参考点的横向距离。

  • 角误差是后轮相对于参考路径的角度。

有关控制器如何最小化这些错误的详细信息,请参阅[1]

参考文献

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

扩展功能

C / c++代码生成
使用MATLAB®编码器™生成C和c++代码。

介绍了R2018b