主要内容

smoothPathSpline

使用三次样条插值光滑车辆路径

自从R2019a

描述

例子

(提出了,方向)= smoothPathSpline (refPoses,refDirections,numSmoothPoses)生成一个光滑的车辆路径组成的numSmoothPoses离散的姿势,通过拟合输入参考路径对三次样条。考虑到输入参考路径方向,smoothPathSpline还返回方向,对应于每个姿势。

使用这个函数将一个C1连续的车辆路径C2连续的路径。C1连续的路径包括driving.DubinsPathSegmentdriving.ReedsSheppPathSegment路径,你可以计划使用pathPlannerRRT对象。这些路径类型的更多细节,请参阅C1-Continuous和C2-Continuous路径

您可以使用返回的姿态和方向与车辆控制器,等lateralControllerStanley函数。

(提出了,方向)= smoothPathSpline (refPoses,refDirections,numSmoothPoses,minSeparation)指定一个最小分离阈值之间的姿势。如果两个姿势之间的距离小于minSeparation,只使用一个姿势的插值函数。

(___,cumLengths,曲率)= smoothPathSpline (___)还返回累积路径长度和签署路径曲率在每个返回的姿势,使用任何以前的语法。使用这些值来生成速度剖面沿路径。

例子

全部折叠

光滑的路径由一个计划RRT路径规划。

加载和情节的costmap停车场。

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

图包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含2对象类型的形象,补丁。该对象代表的地区。

启动和目标提出了车辆定义为(x,y,Θ)向量。世界单位(x,y位置是在米。世界单位Θ取向角的度。

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

使用一个pathPlannerRRT对象从一开始就计划一个路径对目标构成。

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

情节和放大规划路径。杜宾的路径由一个序列曲线。这些曲线包括突然的变化曲率与乘客不适合开车。

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

图包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含4对象类型的形象,补丁,散点、线。这些对象代表的地区,参考路径。

插入的转型提出了路径。使用这些姿势作为参考对插值平滑路径。在每个姿势也返回运动方向。

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

指定的数量对返回在光滑的路径。返回构成间距为0.1米,沿整个长度的路径。

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

生成平滑路径由三次样条拟合的引用。smoothPathSpline返回指定数量的离散姿势沿着光滑的路径。

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

画出平滑的路径。越突然在曲率变化,现在出现在参考路径平滑。

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

图包含一个坐标轴对象。坐标轴对象包含X, Y ylabel包含5个对象类型的形象,补丁,散点、线。这些对象代表的地区,参考路径,光滑的路径。

输入参数

全部折叠

沿着路径参考车辆的姿势,指定为一个3的矩阵x,y,Θ)向量,是构成的数量。

xy在米指定车辆的位置。Θ指定车辆的定位角度。

数据类型:|

参考方向的车辆沿路径,指定为一个1的列向量1 s(移动)和1(反向运动)。数量的参考方向。的每个元素refDirections对应于一个姿势refPoses输入参数。

数据类型:|

数平滑对返回的提出了输出参数,指定为一个正整数。增加返回姿势的粒度,增加numSmoothPoses

最低姿势之间的分离,米,指定为一个积极的真正的标量。如果欧几里得(x,y)两个姿势之间的距离小于这个值,那么这些姿势的函数使用只有一个插值。

输出参数

全部折叠

离散带来的平滑路径,作为一个返回numSmoothPoses3的矩阵x,y,Θ)向量。

xy在米指定车辆的位置。Θ指定车辆的定位角度。

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

运动方向在每个输出的姿势提出了,返回numSmoothPoses1的列向量1 s(移动)和1(反向运动)。

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

在每个输出造成累积路径长度提出了,返回numSmoothPoses1实值列向量。单位是米。

您可以使用cumLengths曲率输出生成速度剖面的车辆沿着光滑的路径。更多细节,请参阅自动停车员的例子。

签署了路径曲率在每个输出的姿势提出了,返回numSmoothPoses1实值列向量。单位是每米的弧度。

您可以使用曲率cumLengths输出生成速度剖面的车辆沿着光滑的路径。更多细节,请参阅自动停车员的例子。

更多关于

全部折叠

C1连续和C2连续的路径

一条路径是C1连续的如果它存在,导数是连续的。路径,只有C1连续的曲率不连续。例如,路径由杜宾或Reeds-Shepp路径段的曲率不连续点段加入。这些不连续导致的变化方向与乘客不够平稳驾驶。

段加入的不连续点

一个路径也是C2连续的二阶导数存在,是连续的。C2连续的路径有连续曲率和足够平稳驾驶乘客。

段连续曲率的加入点

提示

  • 是否光滑无碰撞路径,指定光滑姿势作为输入checkPathValidity函数。

算法

  • path-smoothing算法篡改参数三次样条,经过所有输入参考点。的参数样条在这些点累积弦长。[1]

  • 大约的切线方向平滑输出路径的定向角匹配车辆的启动和目标提出了。

引用

[1]浮子,迈克尔。”的偏差参数三次样条Interpolant多边形的数据。”计算机辅助几何设计。第三卷。25日,2008年,页148 - 156。

[2]Lepetic, Marko格雷戈尔Klancar,伊戈尔·Skrjanc·德拉戈Matko, Bostjan Potocnik。“时间最优路径规划考虑加速度限制。”机器人和自治系统。45卷,数字3 - 4,2003年,页199 - 210。

扩展功能

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

版本历史

介绍了R2019a