主要内容

frenet2global

将Frenet状态转换为全局状态

描述

例子

globalState= frenet2global (refPathfrenetState将弗莱内轨迹状态转换为全局状态。

globalState= frenet2global (refPathfrenetStatelatTimeDerivatives接受latTimeDerivatives包含横向偏差相对于时间的一阶和二阶导数,以及一个标志,指示在转换为全局坐标期间标题是否应该翻转。

例子

全部折叠

从一组路径点生成一个参考路径。

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

从引用路径创建一个trajectoryGeneratorFrenet对象。

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]frenetTraj = connect(connector,initState,termState,5);

将轨迹转换为全局状态。

globalTraj = frenet2global(refPath,frenetTraj.Trajectory);

显示参考路径和轨迹。

显示(refPath);轴平等的持有情节(globalTraj (: 1) globalTraj (:, 2),“b”

指定全局点,并在参考路径上找到最近的点。

globalPoints = waypoints(2:end,:) + [20 -50];nearstpathpoint = closestPoint(refPath,globalPoints);

显示全局点和参考路径上的最近点。

情节(globalPoints (: 1) globalPoints (:, 2),的r *“MarkerSize”10)情节(nearestPathPoint (: 1), nearestPathPoint (:, 2)," b *’“MarkerSize”, 10)

在参考路径上的前两个最近点的弧长之间进行插值。

arclengths = linspace(nearestPathPoint(1,6),nearestPathPoint(2,6),10);pathStates = interpolate(refPath, arclths);

显示插值路径点。

情节(pathStates (: 1) pathStates (:, 2),‘g’)传说([“锚点”“参考路径”“弹道高度30米”...“全球点”“最近点”“插值路径点”])

图中包含一个轴对象。axis对象包含6个line类型的对象。这些对象表示路径点,参考路径,30米的轨迹,全局点,最近点,插值路径点。

输入参数

全部折叠

引用路径,指定为referencePathFrenet对象。

在Frenet坐标系中的状态,返回为P-by-6数字矩阵与行形式[S dS ddS L dL ddL],在那里年代弧长和l是与参考路径方向的垂直偏差。衍生品的年代都是相对于时间的。衍生品的l都相对于弧长,年代P为弗莱内州的总数。

横向时间导数,表示为N-by-3矩阵,其中每行的形式为[dL / dtddL / dt ^ 2invertHeading),N总分是多少.每一行包含横向偏差的一阶和二阶时间导数和一个标志,invertHeading,指示在转换为全局坐标时是否应翻转标题(真正的)或否().

请注意

如果定义latTimeDerivatives不使用global2frenet,应遵循以下规则:

  1. invertHeadingFlag在以下情况下为真:

    1. 车辆在倒车(速度小于0)

    2. 车辆是静止的(速度等于0),并且车辆正对着路径的切向量。即cos(|tangentAngle(obj,S)-thetaExpected|) < 0

  2. 如果1b为真,那么dL / dS必须否定。

输出参数

全部折叠

全局坐标框架中的状态,指定为P-by-6数字矩阵与行形式[x y theta kappa速度加速度],地点:

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

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

  • 速度——速度θ方向,单位为m/s。

  • accel——加速度θ方向,单位为m/s2

P是全局状态的总数。

扩展功能

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

版本历史

R2020b中介绍

Baidu
map