主要内容

lateralControllerStanley

用斯坦利法计算路径跟踪的转向角命令

描述

例子

steerCmd= lateralControllerStanley (refPosecurrPosecurrVelocity计算转向角度命令(以度数为单位),该命令在给定车辆当前速度的情况下,调整车辆的当前姿态以匹配参考姿态。默认情况下,该函数假定车辆是向前运动的。

控制器使用斯坦利方法计算转向角度命令[1],其控制律基于运动学自行车模型。在低速环境中使用该控制器进行路径跟踪,惯性效应最小。

例子

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

例子

全部折叠

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

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

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

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

设置车辆的当前姿势。该位姿位于(2米,6.5米)位置,并具有0度的定向角。设置车辆的当前速度为2米每秒。

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

输入参数

全部折叠

引用姿势,指定为[xyΘ)向量。x而且y单位是米,和Θ是在度。

x而且y指定车辆转向的参考点。Θ指定该参考点上路径的方向角,并在逆时针方向上为正。

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

    车辆向前移动,并在道路上标记参考点。单位是世界坐标。

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

    车辆倒车,并在道路上标上参考点。单位是世界坐标。

数据类型:|

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

x而且y指定车辆的位置,它被定义为车辆后轴的中心。

Θ指定车辆在位置(xy),逆时针方向为正。

标有姿态的车辆。单位是世界坐标。

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

数据类型:|

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

  • 如果车辆向前行驶,则该值必须大于0。

  • 如果车辆倒车,则该值必须小于0。

  • 值为0表示车辆处于静止状态。

数据类型:|

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“MaxSteeringAngle”,25岁

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

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

车辆前轴和后轴之间的距离,以米为单位,用逗号分隔的对表示的轴距还有一个实标量。此值仅在车辆前进时适用。

车辆允许的最大转向角,以度为单位,用逗号分隔的对表示“MaxSteeringAngle”和(0,180)范围内的实标量。

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

  • 下面的值-MaxSteeringAngle-MaxSteeringAngle

  • 值高于MaxSteeringAngleMaxSteeringAngle

输出参数

全部折叠

转向角度命令,以度为单位,返回为一个真实标量。逆时针方向为正。

前轮转动并标明转向角度的车辆

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

算法

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

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

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

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

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

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

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

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

参考文献

[1]霍夫曼,加布里埃尔M,克莱尔J.汤姆林,迈克尔蒙特默洛,塞巴斯蒂安特龙。越野驾驶自动驾驶汽车轨迹跟踪:控制器设计、实验验证和赛车。美国控制会议.2007年,页2296 - 2301。doi: 10.1109 / ACC.2007.4282788

扩展功能

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

版本历史

介绍了R2018b

Baidu
map