主要内容

referencePathFrenet

平滑的参考路径适合路径点

描述

referencePathFrenet对象拟合一个平滑的、分段的、连续的曲线到一组路径点(x, y)[x y theta].拟合后,沿曲线的点,路径点表示为[x y theta kappa dkappa s],地点:

  • xy而且θ- SE(2)状态表示为全局坐标,用x而且y单位是米和θ在弧度

  • 卡巴曲率,或半径的倒数,单位为米

  • dkappa-曲率对弧长的导数,单位为米/秒

  • 年代-弧长,或沿路径从路径原点的距离,单位为米

描绘全球弗莱内坐标

使用该对象,可以在全局坐标系和Frenet坐标系之间转换轨迹,根据弧长沿路径插值状态,并查询路径上距离全局状态最近的点。

对象将弗莱内状态表达为形式向量[S dS ddS L dL ddL],在那里年代弧长和l是与参考路径方向的垂直偏差。衍生品的年代都是相对于时间的。衍生品的l都相对于弧长,年代

相对于参考路径的弗莱内状态描述

创建

描述

例子

refPathObj =参考epathfrenet (路点将一组连续的分段曲线拟合到指定的路径点。的路点参数设置路点财产。

refPathObj =参考epathfrenet (路点、“DiscretizationDistance”discretionDist)使用插值路径点之间的指定距离将分段连续曲线集拟合到路径点。的discretionDist参数设置DiscretizationDistance财产。

属性

全部展开

内插路径点之间的弧长,以米为单位指定为正标量。该对象使用插值路径点来加速转换函数的性能frenet2global而且global2frenet.较小的离散化距离可以以牺牲内存和计算效率为代价提高精度。

数据类型:|

预采样点沿路径,指定为aP-by-2矩阵与行形式(x, y)P-by-3矩阵与行形式[x y theta].指定x而且y单位是米和θ在弧度。P是否预采样点的个数,必须大于或等于2

数据类型:|

对象的功能

closestPoint 在参考路径上找到最接近全局点的点
frenet2global 将Frenet状态转换为全局状态
global2frenet 将全局状态转换为Frenet状态
插入 插值参考路径在提供的弧长
显示 在图中显示参考路径

例子

全部折叠

使用弗莱内坐标为参考路径生成可选轨迹。为你的轨迹指定不同的初始和最终状态。根据生成的轨迹调整状态。

从一组路径点生成一个参考路径。创建一个trajectoryGeneratorFrenet对象从引用路径返回。

路点= [0 0;...50 20;...100 0;...150 10];refPath = referencePathFrenet(路径点);connector = trajectoryGeneratorFrenet(refPath);

生成一个5秒的轨迹,在路径原点和路径下30米的点之间。

initState = [0 0 0 0 0 0];% [S ds ddS L dL ddL]termState = [30 0 0 0 0 0 0];% [S ds ddS L dL ddL][~,trajGlobal] = connect(connector,initState,termState,5);

在全局坐标中显示轨迹。

显示(refPath);持有平等的情节(trajGlobal.Trajectory (: 1) trajGlobal.Trajectory (:, 2),“b”)传说([“锚点”“参考路径”“弹道高度30米”])

图中包含一个轴。坐标轴包含3个line类型的对象。这些对象表示路径点,参考路径,到30m的轨迹。

创建横向偏差在-3米到3米之间的终端状态矩阵。生成轨迹,在10秒内覆盖相同的弧长,但横向偏离参考路径。显示新的替代路径。

termStateDeviated = termState + ([-3:3]' * [0 0 0 0 1 0 0]);[~,trajGlobal] = connect(connector,initState,termStateDeviated,5);clf显示(refPath);持有平等的i = 1:length(trajGlobal) plot(trajGlobal(i).Trajectory(:,1),trajGlobal(i).Trajectory(:,2),‘g’结束传奇([“锚点”“参考路径”“另类轨迹”)举行

图中包含一个轴。坐标轴包含9个line类型的对象。这些对象表示路径点、参考路径、可选轨迹。

指定一个新的终端状态来生成一个新的轨迹。这种轨迹是不可取的,因为它需要反向运动才能达到10米/秒的横向速度。

newTermState = [5 10 0 5 0 0];[~,newTrajGlobal] = connect(connector,initState,newTermState,3);clf显示(refPath);持有平等的情节(newTrajGlobal.Trajectory (: 1) newTrajGlobal.Trajectory (:, 2),“b”);传奇([“路标”“参考路径”“新轨迹”)举行

图中包含一个轴。坐标轴包含3个line类型的对象。这些对象表示路径点、参考路径、新轨迹。

通过指定的弧长来放宽对纵向状态的限制.再次生成并显示轨迹。新位置显示出偏离参考路径的良好替代轨迹。

relaxedTermState = [NaN 10 0 5 0 0];[~, trajglobalrelaxstate] = connect(connector,initState,relaxedTermState,3);clf显示(refPath);持有平等的情节(trajGlobalRelaxed.Trajectory (: 1) trajGlobalRelaxed.Trajectory (:, 2),‘g’);持有

图中包含一个轴。坐标轴包含3个line类型的对象。

扩展功能

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

R2020b中介绍