主要内容

Smoothpathspline

使用立方样条插值平稳的车辆路径

描述

例子

[[姿势,,,,方向] = Smoothpathspline(refpops,,,,避难所,,,,numsmoothposes产生一条平稳的车辆路径,包括numsmoothposes通过将输入参考路径姿势拟合到立方样条来通过离散化的姿势。给定输入参考路径方向,Smoothpathspline还返回与每个姿势相对应的方向。

使用此功能转换A C1- 通往C的连续车路2- 连续路径。C1- 连续路径包括驾驶或者驾驶您可以计划使用的路径Pathplannerrrt目的。有关这些路径类型的更多详细信息,请参见C1连续和C2连续路径

您可以使用车辆控制器使用返回的姿势和指示外侧controllerstanley功能。

[[姿势,,,,方向] = Smoothpathspline(refpops,,,,避难所,,,,numsmoothposes,,,,缩影指定姿势之间的最小分离阈值。如果两个姿势之间的距离小于缩影,该函数仅使用其中一种用于插值。

[[___,,,,暨长度,,,,曲率] = Smoothpathspline(___还返回累积路径长度和签署path curvature at each returned pose, using any of the previous syntaxes. Use these values to generate a velocity profile along the path.

例子

全部收缩

平滑一条由RRT*路径计划器计划的路径。

加载并绘制停车场的成本量表。

数据=负载('ParkingLotCostMap.mat');costmap = data.parkinglotcostmap;情节(Costmap)

图包含一个轴对象。轴对象包含2个类型图像的对象。该物体代表膨胀的区域。

将车辆的启动和目标姿势定义为[X,,,,y,,,,θ]向量。世界单位(X,,,,y)位置为米。世界单位θ方向角度为程度。

startpose = [4,4,90];%[米,仪表,学位]守门= [30,13,0];

用一个Pathplannerrrt反对计划从开始姿势到目标姿势的路径。

planner = pathplannerrrt(costmap);示意=计划(计划者,起跑者,门柱);

绘制并放大计划的道路。该路径由DUBINS曲线序列组成。这些曲线包括不适合与乘客驾驶的曲率突然变化。

抓住情节(心心'车辆',,,,'离开',,,,'显示名称',,,,“参考路径”)xlim([3 31])Ylim([3 18])

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

插值路径的过渡姿势。使用这些姿势作为插值光滑路径的参考姿势。还以每个姿势返回运动方向。

[refposs,refdirections] =插块(乱圈);

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

近似= 0.1;%米numsMoothPoses = round(示意 /近似值);

通过将立方样条拟合到参考姿势来生成平滑路径。Smoothpathspline返回沿平滑路径的指定数量的离散姿势。

[姿势,方向] = SmoothPathspline(refposs,Refdirections,NumsMoothPoses);

绘制光滑的路径。现在,参考路径中存在的曲率突然变化已被平滑。

情节(姿势(:,1),姿势(:,2),'行宽',2,'显示名称',,,,“平滑路径”) 抓住离开

图包含一个轴对象。轴对象包含5个类型图像,补丁,散点,线的对象。这些物体代表膨胀的区域,参考路径,平滑路径。

输入参数

全部收缩

沿着路径的车辆的参考姿势,指定为m-by-3矩阵[X,,,,y,,,,θ]向量,哪里m是姿势的数量。

Xy指定车辆以米为单位的位置。θ指定车辆的方向角度。

数据类型:单身的|双倍的

车辆沿着路径的参考指示,指定为m-1列矢量为1S(正向运动)和–1(反向运动)。m是参考方向的数量。每个元素避难所对应于refpops输入参数。

数据类型:单身的|双倍的

光滑的姿势数量要在姿势输出参数,指定为正整数。为了增加返回姿势的粒度,请增加numsmoothposes

姿势之间的最小分离,以米为单位,指定为正真实标量。如果欧几里得X,,,,y)两个姿势之间的距离小于此值,然后该函数仅使用以下姿势之一进行插值。

输出参数

全部收缩

平滑路径的离散姿势,返回numsmoothposes-by-3矩阵[X,,,,y,,,,θ]向量。

Xy指定车辆以米为单位的位置。θ指定车辆的方向角度。

值中的值姿势与该值相同的数据类型refpops输入参数。

每个输出姿势的运动方向姿势,返回numsmoothposes-1列矢量为1S(正向运动)和–1(反向运动)。

值中的值方向与该值相同的数据类型避难所输入参数。

每个输出姿势的累积路径长度姿势,返回numsmoothposes-1 by-1实值列向量。单位为米。

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

每个输出姿势的签名路径曲率姿势,返回numsmoothposes-1 by-1实值列向量。单位以每米弧度为单位。

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

更多关于

全部收缩

C1- 连续和c2- 连续路径

路径是c1- 连续性是否存在并且是连续的。只有C的路径1- 连续的曲率不连续。例如,由Dubins或Reeds-Shepp路径段组成的路径在段落连接的点处的曲率不连续。这些不连续性导致方向变化,这些方向不足以使乘客驾驶。

连接点不连续的细分市场

路径也是C2- 连续的第二个导数存在并且是连续的。C2- 连续路径具有连续的曲率,并且足够光滑,可以与乘客驾驶。

连接点连续曲率的段

提示

  • 要检查是否没有碰撞的平滑路径,请指定光滑姿势作为输入checkpathvality功能。

算法

  • 路径平滑算法插值一个参数立方样条,该算法通过所有输入参考姿势点。样条的参数是在这些点处的累积和弦长度。[1]

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

参考

[1] Floater,MichaelS。“关于参数立方样条插值剂与其数据多边形的偏差。”计算机辅助几何设计。卷。25,第3期,2008年,第148-156页。

[2] Lepetic,Marko,Gregor Klancar,Igor Skrjanc,Drago Matko和Bostjan Potocnik。“考虑加速度限制的时间最佳路径计划。”机器人技术和自主系统。卷。45,数字3–4,2003,pp。199–210。

扩展功能

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

版本历史记录

在R2019a中引入