主要内容

smoothPathSpline

利用三次样条插值平滑车辆路径

描述

例子

提出了方向) = smoothPathSpline (refPosesrefDirectionsnumSmoothPoses生成平滑的车辆路径,由numSmoothPoses通过将输入参考路径的姿态拟合为三次样条来离散姿态。给定输入参考路径方向,smoothPathSpline也返回对应于每个姿势的方向。

使用这个函数转换一个C1连续车辆路径到C2连续的路径。C1-连续路径包括开车。DubinsPathSegment开车。ReedsSheppPathSegment可用于规划的路径pathPlannerRRT对象。有关这些路径类型的详细信息,请参见c1 -连续和c2 -连续路径

可以将返回的姿态和方向与车辆控制器一起使用,例如lateralControllerStanley函数。

提出了方向) = smoothPathSpline (refPosesrefDirectionsnumSmoothPosesminSeparation指定姿势之间的最小分离阈值。如果两个姿势之间的距离小于minSeparation,该函数只使用其中一个姿态进行插值。

___cumLengths曲率) = smoothPathSpline (___还返回每个返回的姿势的累计路径长度和带符号的路径曲率,使用任何前面的语法。使用这些值生成沿路径的速度剖面。

例子

全部折叠

平滑由RRT*路径规划器规划的路径。

加载并绘制一个停车场的成本图。

data =负载(“parkingLotCostmap.mat”);costmap = data.parkingLotCostmap;情节(costmap)

图中包含一个axes对象。坐标轴对象包含两个类型为image、patch的对象。该对象表示膨胀区域。

定义车辆的起始和目标姿态为[xyΘ)向量。的世界单位(xy)的位置以米为单位。世界单位Θ方位角以度为单位。

startPose = (4, 90);%[米,米,度]goalPose =[0] 30日13日;

使用一个pathPlannerRRT对象来规划从起始姿势到目标姿势的路径。

规划师= pathPlannerRRT (costmap);refPath =计划(计划、startPose goalPose);

绘制并放大规划的路径。该路径由一系列杜宾斯曲线组成。这些曲线包括曲率的突变,不适合与乘客驾驶。

持有情节(refPath“汽车”“关闭”“DisplayName的”参考路径的xlim([3 31]) ylim([3 18])

图中包含一个axes对象。坐标轴对象包含4个类型的对象,图像,补丁,散点,直线。这些对象表示膨胀区域,参考路径。

插值路径的过渡姿态。使用这些姿态作为平滑路径插值的参考姿态。同时返回每个姿势的运动方向。

[refPoses, refDirections] =插入(refPath);

指定在平滑路径中返回的姿势的数量。沿着整个路径,每隔0.1米返回一个姿势。

approxSeparation = 0.1;%米numSmoothPoses =圆(refPath。长度/ approxSeparation);

通过拟合三次样条到参考位姿生成平滑路径。smoothPathSpline沿平滑路径返回指定数量的离散姿势。

(姿势,方向)= smoothPathSpline (refPoses、refDirections numSmoothPoses);

画出平坦的道路。参考路径中出现的更突然的曲率变化现在被平滑了。

情节(姿势(:1),姿势(:,2),“线宽”2,“DisplayName的”“一帆风顺”)举行

图中包含一个axes对象。坐标轴对象包含5个类型的对象,图像,补丁,散点,直线。这些对象表示膨胀区域,参考路径,平滑路径。

输入参数

全部折叠

车辆沿路径的参考姿态,指定为-by-3矩阵的[xyΘ)向量,是姿势的数量。

x而且y以米为单位指定车辆的位置。Θ以度为单位指定飞行器的朝向角度。

数据类型:|

车辆沿道路的参考方向,指定为- × 1的列向量,1s(前进)和-1s(反向)。是参考方向的数量。的每个元素refDirections对应于refPoses输入参数。

数据类型:|

返回的平滑姿势的数量提出了输出参数,指定为正整数。若要增加返回姿势的粒度,请添加numSmoothPoses

姿态之间的最小间隔,以米为单位,指定为正实标量。如果欧几里得(xy)两个姿态之间的距离小于此值,则该函数只使用其中一个姿态进行插值。

输出参数

全部折叠

平滑路径的离散姿态,返回为numSmoothPoses-by-3矩阵的[xyΘ)向量。

x而且y以米为单位指定车辆的位置。Θ以度为单位指定飞行器的朝向角度。

中的值提出了的值具有相同的数据类型refPoses输入参数。

中每个输出位姿的运动方向提出了,作为numSmoothPoses- × 1的列向量,1s(前进)和-1s(反向)。

中的值方向的值具有相同的数据类型refDirections输入参数。

中每个输出位姿的累积路径长度提出了,作为numSmoothPoses-by-1实值列向量。单位是米。

您可以使用cumLengths而且曲率输出生成车辆沿平滑路径的速度轮廓。有关更多详细信息,请参见自动停车员的例子。

中的每个输出位姿的有符号路径曲率提出了,作为numSmoothPoses-by-1实值列向量。单位是弧度每米。

您可以使用曲率而且cumLengths输出生成车辆沿平滑路径的速度轮廓。有关更多详细信息,请参见自动停车员的例子。

更多关于

全部折叠

C1连续和C2连续的路径

路径是C1-连续,如果它的导数存在且连续。只有C的路径1-连续的曲率有不连续。例如,由dubin路径段或reed - shepp路径段组成的路径在这些路径段的连接点上具有曲率不连续。这些不连续会导致方向的变化,不适合乘客驾驶。

在连接点处有不连续的段

路径也是C2-连续,如果二阶导数存在且连续。C2-连续路径具有连续的曲率,足够平滑,适合乘客驾驶。

在连接点处具有连续曲率的线段

提示

算法

  • 路径平滑算法插值一个经过所有输入参考位姿点的参数三次样条。样条曲线的参数是这些点的累积弦长。[1]

  • 平滑输出路径的切线方向大致匹配车辆在起始和目标姿态时的方向角。

参考文献

Floater, Michael S。关于参数三次样条插值与数据多边形的偏差。计算机辅助几何设计.2008年第3期,第25卷,第148-156页。

Lepetic, Marko, Gregor Klancar, Igor Skrjanc, Drago Matko和Bostjan Potocnik。考虑加速限制的时间最优路径规划。机器人与自主系统.2003年第45卷第3-4期,199-210页。

扩展功能

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

版本历史

介绍了R2019a

Baidu
map