主要内容

closestPoint

在参考路径上找到最接近全局点的点

描述

例子

pathPoints= closestPoint (refPath查找引用路径上与每个指定的(xy)位置

pathPointsinWindow= closestPoint(refPath可选地返回一个逻辑向量inWindow,指定每个点是否对应xy协调在投影在搜索窗口内。

[_] = closestPoint(refPathsearchWindow可选地接受一个非递减的行向量searchWindow,它定义了用于查找最近点的路径的间隔。

例子

全部折叠

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

路点= [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对象。

全局点,指定为aP-by-2数值矩阵的行形式(x, y)P是点数。位置单位是米。

路径上的搜索窗口,以确定最近的点,指定为两元素行向量。

输出参数

全部折叠

引用路径上的最近点,返回为N-by-6数字矩阵与行形式[x y theta kappa dkappa s],地点:

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

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

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

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

N沿参考路径采样的点数。

指示每个点是否最接近对应xy协调在,投影在搜索窗口中,返回为N-element逻辑列向量,其中N点数是多少.在搜索窗口内投影的点是真正的,或如果他们躺在窗户的尽头。

扩展功能

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

版本历史

R2020b中介绍

Baidu
map