机器视觉与控制——轨迹(上)

 前言

       轨迹是具有特定时间属性的一条路劲,其中一个重要特征是要平滑(位置和姿态随时间流畅地变化),文章分俩篇将从一维扩展到多维,最后讨论如何生成分段性轨迹,使得机器人不间断地经过一系列中间点。

 一维轨迹

时间地标量函数是光滑的,它的低阶时间导数是连续的。一般速度和加速度都是必须连续的,有时候其导数也需要连续。

这种函数的一个常见代表是时间多项式函数(容易求导,且提供连续性和边界条件比较方便)

常用的五次多项式:

其中时间t属于[0,T].其中一阶和二阶导数也是光滑的多项式:

轨迹上定义了位置、速度、加速度的边界条件,一般情况下下速度和加速度的边界条件均为零。

该矩阵是方阵,我们可以使用标准的线性代数方法(eg:MATLAB中的算子)来求解系数向量(A,B,C,D,E,F).五次多项式的加速度是一条光滑的三次曲线,加速度率是一个抛物线。

 工具箱中的函数tpoly可以生成一个五次多项式轨迹,如式(3.1)所述。eg:

     s=tpoly(0,1,50);

返回一个50×1的列向量,其值在0到1范围内分50个时间步平滑变化。

我们可以绘制出该轨迹曲线:plot(s)

相应的速度和加速度同样可通过增加输出选项参数返回

s=tpoly(0,10,50,0.5,0);

       多项式轨迹另一个很实际的问题式它的速度,可以从图3.1(a)的中间一幅看出。速度sd在t=225时达到最大值,而一个真正的机器人关节都有一个额定的最大速度,为了使关节运动时间最短,应使保持最大速度的时间尽可能长。sd曲线顶部我们希望使一条平直线。

       一种公认的较理想的选择是采用混合曲线轨迹,  即由中间的恒速段平直线加上两侧的加速段和减速段多项式曲线构成的轨迹,

       s=lspb(0,1,50);

       参数和tpoly中的含义相同,轨迹曲线如3.2(a)所示,由一条线段和两条抛物线混合而成。与tpoly相同lspb也可以返回速度和加速度:【s,sd,sdd】=lspb(0,1,50);

这种类型的轨迹由于sd-t曲线形状也被称为梯形轨迹,并广泛应用于工业马达驱动中

lspb默认的直线段速度为max(sd)ans=0.0306

但也可以加一个参数来自主选择数值 eg: s=lspb(0,1,50,0.025);

       上述这些不同情形的轨迹都叠加显示在图3.2(b)中.不难发现,随着直线段速度的增大,该段占有的时间会减少,最终会变为零.所以,这个速度的值不能过高或过低都将产生一个不可行的轨迹,函数返回错误。

多维的情况

       大多数投入使用的机器人都有一个以上的运动轴或自由度(在一定约束条件下,样本所能提供的独立的信息的个数),我们用向量形式表示为x属于R^M,M代表自由度的数目。轮式移动机器人由它的位置(x,y)或位姿(x,y,θ)来描述,而关节臂机器人的末端工具则有位置(x,y,z),位姿(x,y,z,θr,θp,θy)

因此我们可以在工具箱中使用函数mtraj来从初始位姿向量到最终位姿向量的多维平滑运动

       eg,从(0,2)移动到(1,-1)分50个时间步可以表示为

可得一个50×2的矩阵x,其中每一行对应一个时间步,每一列对应一个轴.输给mtraj的第一个参数是一个函数,即tpoly或lspb,它生成一个标量轨迹.以lspb为例绘制其轨迹为

如图3.3所示

对于三维空间中的位姿问题,可以考虑先用以下方法将位姿齐次矩阵T转换为一个六维向量:

然后产生相应的轨迹.不过后面会看到,对于描述姿态的三个角度的插值会存在一定的限制.

多端轨迹

       机器人应用中经常要求机器人平滑地沿一条路径运动,并不停顿地经过一个或多个中间节点.这样做或许是要在工作空间中避开障碍物,也可能是为了执行一项需要高精度连续轨迹的任务,eg:制造业中要涂抹一圈密封胶

       假设轨迹含有N个中间点Xk,k属于1到N,因此有N-1个运动段.

       机器人从静止状态X1开始运动,到Xn结束停止,但在通过中间点时不能停顿.生成这个运动轨迹的最大问题是约束.为了实现速度连续,只能舍弃让轨迹能达到每个中间点.在一维这个问题更容易理解,如图3.4.该轨迹包括直线运动段与多项式曲线段的混合,如同lspb,但在这里我们选择五次多项式,因为它们能够匹配位置,速度,加速度在起点和终点的边界条件.