自动驾驶路径规划——轨迹规划(详解插值法)

这篇具有很好参考价值的文章主要介绍了自动驾驶路径规划——轨迹规划(详解插值法)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言

1. 轨迹规划

1.1 轨迹规划包括以下几个问题:

2. 三次多项式插值

​​​​​​3.  过路径点的三次多项式插值

4. 用抛物线过渡的线性插值

过路径点的用抛物线过渡的线性插值

5. 高阶多项式插值

声明


前言

       这个学期学校开设了相应的课程,同时也在学习古月居机器人学系列的《基于栅格地图的机器人路径规划指南》,为了巩固知识,方便自己的学习与整理,遂以学习笔记的形式记录。


1. 轨迹规划

      全局路径由一系列路径点构成,这些路径点只要包含空间位置信息即可,也可以包含姿态信息,但是不需要与时间相关,这些路径点被称为全局路径点。
      路径(Path)和轨迹(Trajectory)的区别就在于,轨迹还包含了时间信息,轨迹点也是一种路径点,它在路径点的基础上加入了时间约束。

1.1 轨迹规划包括以下几个问题:

  • 对工作对象及作业进行描述,给出轨迹上若干个节点
  • 用一条轨迹通过或逼近节点,此轨迹可按一定的原则优化,如加速度平滑得到直角空间的位移时间函数X(t)或关节空间的位移时间函数q(t);
  • 在节点之间如何进行插补,即根据轨迹表达式在每一个采样周期实时计算轨迹上点的位姿和各关节变量值;
  • 规划机器人的运动轨迹时,需明确其路径上是否存在障碍约束的组合
  • 在空间中进行轨迹规划,需要给定车辆在起始点和终止点的位形;
  • 对轨迹进行插值时应满足一系列的约束条件,例如初始点和停止点等关键节点上的位姿、速度和加速度的要求;
  • 与此相应的在整个时间间隔内的连续性要求以及其极值必须在车辆性能的容许范围之内等。

      满足所要求的约束条件之后,可以选取不同类型的关节插值函数,生成不同的轨迹。常用的关节空间插补有以下方法:

  • 三次多项式插值
  • 过路径点的三次多项式插值
  • 用抛物线过渡的线性插值
  • 高阶多项式插值

2. 三次多项式插值

       在无人车或机器人机械臂运动过程中,若位置的起始和终止点已知,可以用通过起始点和终止点的一个平滑轨迹函数​来表示。 为实现系统的平稳运动,轨迹函数至少需要满足四个约束条件即两端点位置约束和两端点速度约束。      
      端点的位置约束是指起始位姿和终止位姿分别所对应的关节角度。​在时刻​=0时是起始关节角度​,在终端时刻tf时是终止关节角度​,即

 ​

     为满足运动速度的连续性要求,起始点和终止点的速度可简单地设定为零。

      轨迹规划方法一般是在机器人的初始位置和目标位置之间用多项式函数来“内插”或“逼近”给定的路径,并产生一系列的控制点。若只给出无人车起始点和终止点的关节角度,由于缺少足够的约束,会产生多解,如下图所示。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

      对于一般的轨迹规划问题,首先列出相应的三次多项式:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

     再对其分别求一阶导和二阶导,得到速度和加速度的方程:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

     由于轨迹函数​至少要满足4个约束条件,所以我们需设置相应的约束:

 ​  和 ​

     现在有4个方程,可以解出四个待定系数为:

     回代到三次多项式中,可得:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

    对其分别求一阶导和二阶导,得到速度和加速度的方程: 

       三次多项式插值的运动轨迹曲线如图所示。由图可知,其速度曲线为抛物线,相应的加速度曲线为直线。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       由图所示,三次多项式插值得到的加速度曲线为直线,并不连续,需要通过高次多项式才能解决。

​​​​​​3.  过路径点的三次多项式插值

       若所规划的作业路径在多个节点上有位姿要求,如图所示,机器人作业除在A、D点有位姿要求外,在路径点B、C也有位姿要求。 对于这种情况,假如车辆在路径点停留,即各路径点上速度为0,则轨迹规划可连续直接使用前面介绍的三次多项式插值方法;但若只是经过,并不停留,就需要将前述方法推广。 
       进行轨迹规划时,把相邻的两个路径节点分别看做起始点和终止点,再确定相应的三次多项式插值函数,把路径点平滑连接起来。 一般情况下,这些起始点和终止点的关节运动速度不再为零。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       设路径点上的节点速度已知,这时,确定三次多项式系数的方法与前所述完全一致,只是速度约束条件变为

 

      利用约束条件可确定三次多项式系数a0,a1,a2和a3,和前面有所不同。但当路径点上的关节速度为0时,确定的三次多项式与上一种方法完全相同,这就说明了这里所确定的三次多项式描述了起始点和终止点具有任意给定位置和速度约束条件的运动轨迹。 总结一下,三次多项式插值方法是:把所有路径点都看成是“起点”或“终点”,确定所要求的三次多项式插值函数,把路径点平滑的连接起来。不同的是,这些“起点”和“终点”的关节速度不再是零
     据此,我们可以求解出各项系数:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       由上式确定的三次多项式描述了起始点和终止点具有任意给定位置和速度的运动轨迹。剩下的问题就是如何确定各路径点上的关节速度,有以下三种方法:

  1.  根据在直角坐标空间中的瞬时线速度和角速度来确定每个路径点的关节速度 ;该方法工作量大。
  2. 为了保证每个路径点上的加速度连续,由控制系统按照此要求自动地选择路径点的速度
  3. 在直角坐标空间或关节空间中采用某种适当的启发式方法,由控制系统自动地选择路径点的速度;

       对于方法(2),为了保证路径点处的加速度连续,可以设法用两条三次曲线在路径点处按照一定的规则联系起来,拼凑成所要求的轨迹。其约束条件是:联接处不仅速度连续,而且加速度也要连续。 

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       对于方法(3), 这里所说的启发式方法很简单,即假设用直线段把这些路径点依次连接起来,如果相邻线段的斜率在路径点处改变符号,则把速度选定为零;如果相邻线段不改变符号,则选择路径点两侧的线段斜率的平均值作为该点的速度。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

 4. 用抛物线过渡的线性插值

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       首先来谈谈单纯的线性插值。单纯的线性插值,有对于给定起始点和终止点的情况选择线性函数插值最为简单的优点也有会导致起始点和终止点的运动速度不连续,且加速度无穷大,显然,在两端点会造成刚性冲击的缺点
       为了解决其缺点,可以在使用线性插值时,把每个结点的邻域内增加一段抛物线的“缓冲区段”,从而使整个轨迹上的位移和速度都连续。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

        如图所示,此方法存在多解。加速度的值越大,过渡长度越短。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       在插值时,通常以线性函数+两段抛物线函数的方式将曲线平滑地衔接在一起,形成带有抛物线过渡域的线性轨迹。为了求解方便,通常设两端的抛物线轨迹具有相同的持续时间 ,具有大小相同而符号相反的恒加速度 。此时,会形成一个梯形速度曲线。按照经验,的取值为:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

         这类轨迹具有多解性和对称性。多解性——这类路径规划存在有多个解,其轨迹不惟一;对称性——每条路径都对称于时间中点​和位置中点

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       要保证路径轨迹的连续、光滑,即要求抛物线轨迹的终点速度必须等于线性段的速度,故有下列关系:

 与轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

      设关节从起始点到终止点的总运动时间为​,则​=2,并注意到轨迹规划,自动驾驶规划,算法,自动驾驶,机器人,从而有轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

        一般情况下,​、​、​是已知条件,可以选择相应的加速度和​,得到相应的轨迹。通常的做法是先选定加速度的值,然后求出相应的​

        由上式知,为保证有解,加速度值 必须选得足够大,即

 

       当上式中的等号成立时,轨迹线性段的长度缩减为零,整个轨迹由两个过渡域组成,这两个过渡域在衔接处的斜率(关节速度)相等; 加速度的取值愈大,过渡域的长度会变得愈短,若加速度趋于无穷大,轨迹又复归到简单的线性插值情况。  

过路径点的用抛物线过渡的线性插值

       如图所示,在运动中设有n个路径点,其中三个相邻的路径点表示为j,k和l,每两个相邻的路径点之间都以线性函数相连,而所有的路径点附近则有抛物线过渡。(同样存在多解)

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       要求机器人通过某个结点,同时速度不为零,可以在此结点两端规定两个“伪结点”,令该结点在两伪结点的连线上,并位于两过渡域之间的线性域上。

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

 5. 高阶多项式插值

       若对于运动轨迹的要求更为严格,约束条件增多,三次多项式就不能满足需要,须用更高阶的多项式对运动轨迹的路径段进行插值。 若对某段路径的起始点和终止点都规定了位置、速度加速度,则要用一个五次多项式进行插值,即:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人

       多项式的系数a0,a1,…,a5必须满足6个约束条件,即对起始点、终止点的位姿、速度、加速度都作出约束,如下式所示:

轨迹规划,自动驾驶规划,算法,自动驾驶,机器人


声明

       本人所有文章仅作为自己的学习记录,若有侵权,联系立删。文章来源地址https://www.toymoban.com/news/detail-815438.html

到了这里,关于自动驾驶路径规划——轨迹规划(详解插值法)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 算法--插值法

    插值法是一种数学方法,主要用于通过已知的离散数据来估算未知值。常见的插值法有线性插值、最近邻插值、双线性插值和双三次插值。以下是其基本原理和应用: 线性插值:假设在两个已知数据点之间,数据的变化是线性的,因此可以通过已知的两点的坐标来计算经过这

    2024年01月18日
    浏览(44)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(49)
  • 浅谈拉格朗日插值法

    好像FFT要用到,所以就学习一手 版题 其意义在于: 理解一下: 就是把一个足球踢出去,假设球始终在一个平面上飞行,它的轨迹就可以抽象为 (f(x)) (假设这个函数至于时间有关) 现在你有一些照片,所以你可以得到某几个时间点球的位置,想要还原出这个函数 (f(x)) 的

    2023年04月25日
    浏览(42)
  • 数学建模之插值法

    数模比赛中,常常需要根据已知的函数点进行数据、模型的处理和分析,而有时候现有的数据是极少的,不足以支撑分析的进行,这时就需要使用一些数学的方法,“ 模拟产生 ”一些新的但又比较靠谱的值来满足需求,这就是插值的作用。 那什么是插值法? 插值法又可以分

    2024年02月03日
    浏览(48)
  • 上采样(最近邻插值、双线性插值法、反池化、转置卷积)

    一般图像分割的时候,需要对图像进行像素级别的分类,因此在卷积提取到抽象特征后需要通过上采样将feature map还原到原图大小,在FCN和U-net等网络中都提到了上采样的操作,这里会一些上采样的方法进行总结。 最简单的图像缩放算法就是最近邻插值,也称作零阶插值,就

    2024年02月05日
    浏览(66)
  • 数学建模学习笔记(一):插值法

    本文主要内容是分享博主在学习MATLAB插值与拟合过程中的一些笔记与见解,并记录使用代码实现的过程 一维插值问题可描述为:已知函数在 x 0 , x 1 , … , x n x_0,x_1,…,x_n x 0 ​ , x 1 ​ , … , x n ​ 处的值 y 0 , y 1 , … , y n y_0,y_1,…,y_n y 0 ​ , y 1 ​ , … , y n ​ ,求简单函数 p (

    2024年02月06日
    浏览(56)
  • Matlab图像处理-灰度插值法

    最近邻法 最近邻法是一种最简单的插值算法,输出像素的值为输入图像中与其最邻近的采样点的像素值。是将 ( u 0 , v 0 ) (u_0,v_0) 点最近的整数坐标 u , v (u,v) 点的灰度值取为 ( u 0 , v 0 ) (u_0,v_0) 点的灰度值。 在 ( u 0 , v 0 ) (u_0,v_0) 点各相邻像素间灰度变化较小时,这种方法是一

    2024年02月10日
    浏览(53)
  • 【数值分析实验】(一)插值法(含matlab代码)

            实际问题中许多变量的关系可以用数学函数概念进行刻画,但是在大多数情况下,这些函数的表达式是未知的,或者已知但十分复杂,需要我们将这个函数的未知解析式近似地构造出来,或者用一个简单的函数表达式来代替复杂的函数表达式。基于上述过程,我们

    2024年02月12日
    浏览(48)
  • 解读 拉格朗日插值法python,保你学明白

    什么是插值法 插值法是一种数学方法,用于在已知数据点(离散数据)之间插入数据,以生成连续的函数曲线。 插值法可以用于确定一个未知数据点的值,并简化复杂的数学计算过程。 插值法的应用广泛,如统计学、工程学、科学研究等领域。 拉格朗日插值法的原理 格朗

    2024年02月08日
    浏览(45)
  • 二次插值法详细步骤及其matlab代码举例

    基本思想:在搜索区间中不断使用二次多项式去近似目标函数,并逐步用插值多项式的极小点去逼近搜索问题(什么鬼?)其实就是模拟目标函数,求出模拟出来的函数的极小值近似等于目标函数极小值 mini f(x)    区间[a,b] 精度e=0.3(自己设置) 确定目标函数区间[a,b],精度e

    2024年02月10日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包