一. 简介
点到点的轨迹规划算法可以理解为在规定的时间T内,从已知起始点
运动到末尾点
的方法。这里引入中间变量s(t),它是时间的函数,定义域为[0,T],值域为[0,1],s与
的关系见下面公式。这个公式不难理解,当s=0时,
;当s=1时,
。
对t求导是速度,即:
对t求二阶导是加速度,即
所以
由于
和
是已知的,所以速度和加速度随时间的变化取决于
,这里的s(t)有很多种方法,比较常用的是三次函数,五次函数,梯形曲线,S曲线等。这里对这几种曲线的方法和优缺点进行一下介绍。
二. 三次曲线
三次曲线公式为
,
根据起始和终止时刻的约束条件即
这四个约束条件可以分别求出
所以
分别画出
随时间变化的曲线。细心的朋友可以看出在在初始和末了时刻加速度是不连续的,会有冲击,这也是三次曲线的缺点。
三. 五次曲线
五次曲线公式为
根据起始和终止时刻的约束条件即
这六个约束条件可以分别求出
所以
分别画出
随时间变化的曲线。从图中可以看出加速度始末时刻页是连续的,消除了三次曲线始末时刻有冲击的缺点。
四. 梯形曲线
梯形曲线在电机控制中经常用到,因为
的曲线形状为梯形,所以取名为梯形曲线,见下图。
s为分段函数,即
这里的v,a,T是有约束条件的,即
-
当指定v,a则,
,且需要满足
-
当指定v,T则,
,且需要满足
-
当指定a,T则,
,且需要满足
从
曲线中可以看出在
四个时刻加速度不连续,存在冲击,为了改善这个问题有人提出S曲线。
五. S曲线
S曲线见下图,
它的定义为:
第一段:以恒定的痉挛J(加速度的导数)使加速度从0增加到预先设定的a;
第二段:以恒定的加速度加速;
第三段:已恒定的负的痉挛J(加速度的导数)使加速度从预先设定的a减到0;
第四段:以恒定的速度v匀速运动;
第五段:已恒定的负的痉挛J(加速度的导数)使加速度从0减到预先设定的-a;
第六段:以恒定的加速度-a减速;
第七段:以恒定的痉挛J(加速度的导数)使加速度从预先设定的-a增加到0;
在已知最大加速度a, 最大速度v和运行时间T时, 可由以下公式求得s曲线:
和梯形曲线一样, 也是有约束的:
解得:
我也写了Matlab程序,验证了推导是正确的,且程序中如果输入的a,v,T满足上述不等式关系,则可以运算;如果不满足上述不等式关系,通过算法可以自动调整的值,使其得到可用解,这种算法也叫自适应S曲线。
程序代码见下面链接:
https://download.csdn.net/download/fengyu19930920/10639635
例子: