台大机器人学——林沛群

Linear Function with Parabolic Blends 轨迹规划法

1.缘由

  • 在很多类型的任务上均需要使用直线轨迹;
  • 轨迹中若包含多个直线段轨迹,线段间转择点速度不连续;
  • 该方法保证直线的同时,保证直线段轨迹之间有二次连接,保证轨迹的圆滑;
初始末端速度为0
  • 转折处,由速度为0瞬间变为某个速度,加速度趋近于∞!
  • 解决方法:将直线两端修正为二次方程式,让速度轨迹smooth...

2.规划方法

头尾对称,中间直线等速运动;

  • linear 直线段,一次多项式:
  • Parabolic 二次多项式,等加速度:

所以①②中的 [公式] 需要相等,故:


于是有:

这两将\theta_tb''与\theta_tb'进行了等价代换

这里要注意的是,根号内需为正数或者0才有意义:

关于加速度 [公式] 状态讨论;

中间点的瞬间的速度

三种方式比较:
(1)only linear function,可以发现,加速度在速度突变出趋于∞;
(2)一般状况,Linear function with parabolic blends,加上二次轨迹后,速度不会突变,加速、减速阶段为等加速度;(很多电系统响应快,所以大致能够满足这种非连续加速度场景)
(3)特例Only parabolic function,没有直线段;等加速直接等减速;可以发现其最大速度是第一种情况的2倍,因为位移相同,所以速度曲线包含的面积应相同,故速度必是2倍才能满足相同的位移。


多段Linear Function with Parabolic Blends

  • 设定:A path with n via points

将每一个区段 [公式] 各自等效到之前举例单一linear线段 [公式] ,要注意的是,与此线段前后相连接线段的速度不为0;

串接所有的转择点(二次式,使速度连续)

1---对中间任意几个线段:详细分析:

  • Linear段(直线,一次多项式)
    [公式] , [公式] 
  • Parabolic (二次多项式)
    • 方法一:设定加速度解时间
      • [公式] # 正负号判定;
      • 解出需要的时间大小: [公式]
    • 方法二:设定时间解加速度
      • [公式]
      • [公式]

2---对头尾段进行探索

  • 第一个线段:(
    • [公式]可以视为整段轨迹起始点 [公式] 在时间上往后移(parabolic曲线段所需时间 [公式] 的一半)以导入parabolic(二次抛物线)曲线段,让速度由起始点开始可以连续。(一开始的缓加速需要 [公式] 的时间, [公式] 实际是由 [公式] 变动得到的)
    • 这样做的好处,在t=0的时候,仍然可以保持在 [公式] 的位置;这样到达 [公式] 的时候,它就可以到达需要的速度。
    • 在进行轨迹规划前,要对的起始点进行一个时间往后平移的动作。
  • 第一段:等加速;第二段:等速
  • 方法一:设定加速度解时间(判定符号、求解时间)
  • 接着,通过第一段可以计算得到到达 [公式] 的时间:
  • 方法二:设定时间解加速度
  • 最后一个线段(
    • 一个trick,同开始一样,引入 [公式] ,这个 [公式] 的位置与 [公式] 一样,但是位置要稍微提前(此时 [公式] 处速度不为0),parabolic曲线段所需时间为 [公式] 的一半,以导入parabolic曲线段,让速度由起始点开始可以连续。
    • 方法一:设定加速度求解时间:
解出等减速段时间长度t_n
    • 方法二:设定时间解加速度
求出匀速段

Linear Function with Parabolic Blends注解-1

☺ 真实系统中可以达到的加速度 [公式] 取决于很多因素

  • Motor的规格(规划的θ得是马达能给到的τ)
  • 手臂姿态:手臂在不同姿态下,各轴所需承载(如重力)的扭力不同;
  • 手臂运动状态:手臂在不同动态下,各轴需承载惯性力不用;

马达所能输出扭力τ与运动变量之间的关系(以RR机械手臂为例):

其中:第一部分——惯性力部分(转动惯量矩阵M); 第二部分——离心力与科氏力(只要手臂有速度,这项就有值,手臂需要有τ);第三部分——可以考虑为重力所造成的部分,手臂即使不动,也需要产生τ来保持住姿态
可以看出,机械臂的实际应用场景中,若G较大,能够用来产生离心力或者加减速运动的第一部分的τ就有局限;同样,如果第二项较大,即手臂工作在离型力较大的场合,则τ能够用来应付加减速与自身重力的部分就很小(Joint Space下)。

☺ 规划后轨迹并未通过via points的情况

  • 连接的parabolic段没有通过via points,仅加速度趋于∞的轨迹有通过via points
过渡段,直线段通过,圆滑后不通过,只有t趋于无穷小才会通过
  • 该种情况下,如果通过via points为必须,则需要建立pseudo via points,让原本的via points落在linear的线段上,就会通过。(以为在直端左右,无论怎么规划,都不会不通过临界两点)然后再进行规划

☺ 若有Cartesian Space下直线轨迹的需求,轨迹规划需要在Cartesian Space下进行——(Linear Function with Parabolic Blends一般是在Cartesian space下进行,才能确保最后是直观的是直线轨迹)

☺ Programming里,需要仔细的定义好某时间t所属的线段或者曲线段;

针对同一个时间基准t,写出该轨迹方程
- 先看直线段, [公式] ,根据Kinematics Equation:

- 再来看二次段(parabolic), [公式] ,同样以 [公式] 为基准,向后进行计算;