工业机器人运动轨迹规划方法简述

本文介绍了工业机器人的运动轨迹规划方法,包括关节空间的3次多项式、高阶多项式、抛物线过渡线性插值和B样条插值。此外,还探讨了笛卡尔空间中的位置、姿态规划及SE(3)规划,分析了路径规划中的几何问题和挑战。

工业机器人的运动轨迹

这里写图片描述

  1. 点到点运动:不需要在笛卡尔空间规划末端运动轨迹,机器人各个关节运动不需要联动。
  2. 轨迹跟踪运动:以点到点为基础,各个关节运动需要联动。

一般而言,运动包括工具相对于工作台的姿态变化和位置变化。

关节空间运动规划

目标:使关节空间轨迹平滑。
一般情况下,关节空间的规划方法便于计算,并且由于关节空间与笛卡尔空间之间并不存在连续的对应关系,因而不会发生机构的奇异性问题。

3次多项式插值

做如下假设:某个关节从 t 0 t_{0} t0 时刻的位置 q 0 q_{0} q0 运动到 t f t_{f} tf 时刻的位置 q f q_{f} qf 。在 t 0 t_{0} t0 t f t_{f} tf 时刻速度均为0。
q ( 0 ) = q 0 , q ( t f ) = q f , q ˙ ( 0 ) = 0 , q ˙ ( t f ) = 0 q(0)=q_{0}, q(t_{f})=q_{f},\dot{q}(0)=0,\dot{q}(t_{f})=0 q(0)=q0,q(tf)=qf,q˙(0)=0,q˙(tf)=0
利用3次多项式来拟合轨迹:
q ( t ) = a 0 + a 1 t + a 2 t 2 + a 3 t 3 q ˙ ( t ) = a 1 + 2 a 2 t + 3 a 3 t 2 q ¨ ( t ) = 2 a 2 + 6 a 3 t \begin{aligned} &q(t)=a_{0}+a_{1}t+a_{2}t^{2}+a_{3}t^{3}\\ &\dot{q}(t)=a_{1}+2a_{2}t+3a_{3}t^{2 } \\ &\ddot{q}(t) = 2a_{2}+6a_{3}t \end{aligned} q(t)=a0+a1t+a2t2+a3t3q˙(t)=a1+2a2t+3a3t2q¨(t)=2a2+6a3t
将边界条件代入即可解出参数 a 1 , … , a 3 a_{1},\dots,a_{3} a1,,a3
cubic1
cubic2
cubic3

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

假设起点与终点的关节速度不为0时,利用3次多项式进行插值。解法同上,不再赘述。
需要注意,选择路径点的关节速度时,要考虑到保证每个路径点的加速度是连续的。

高阶多项式插值

当考虑到机器人关节空间起始点和目标点的加速度时,需采用高阶多项式插值。即修改边界条件为:
q ( 0 ) = q 0 , q ( t f ) = q f q ˙ ( 0 ) = q ˙ 0 , q ˙ ( t f ) = q ˙ f q ¨ ( 0 ) = q ¨ 0 , q ¨ ( t f ) = q ¨ f \begin{aligned} &q(0)=q_{0},\quad &q(t_{f})=q_{f}\\&\dot{q}(0)=\dot{q}_{0},\quad &\dot{q}(t_{f})=\dot{q}_{f}\\ &\ddot{q}(0)=\ddot{q}_{0},\quad &\ddot{q}(t_{f})=\ddot{q}_{f} \end{aligned} q(0)=q0q˙(0)=q˙0q¨(0)=q¨0q(tf)=qfq˙(tf)=q˙fq¨(tf)=q¨f
因此,6个边界条件对应高阶多项式的6个系数, a 0 , … , a 5 a_{0},\dots,a_{5} a0,,a5
q ( t ) = a 0 + a 1 t + a 2 t 2 + a 3 t 3 + a 4 t 4 + a 5 t 5 q(t)=a_{0}+a_{1}t+a_{2}t^{2}+a_{3}t^{3}+a_{4}t^{4}+a_{5}t^{5} q(t)=a0+a1t+a2t2+a3t3+a4t4+a5t5

用抛物线过渡的线性插值

直接进行线性插值会导致起始点和终止点的关节运动速度不连续,因此我们可以在中间利用直线线性插值,两端利用抛物线过渡。利用直线段求出关节速度:
q ˙ t b = q h − q b t h − t b \dot{q}_{tb}=\frac{q_{h}-q_{b}}{t_{h}-t_{b}} q˙tb=thtbqhqb
其中 t h t_{h} th 为中间时刻, t b t_{b} tb 为过渡时刻, q h q_{h} qh 为中间位置。假设关节加速度 q ¨ \ddot{q} q¨ 已知,则
q b = q 0 + 1 2 q ¨ t b 2 q_{b}=q_{0}+\frac{1}{2}\ddot{q}t_{b}^{2} qb=q0+21q¨tb2
且我们知道: q ˙ b = q ¨ t b \dot{q}_{b}=\ddot{q}t_{b} q˙b=q¨tb
因此我们可以利用上述3式解出
t b = f f 2 − q ¨ 2 t f 2 − 4 q ¨ ( q f − q 0 ) 2 q ¨ t_{b}=\frac{f_{f}}{2}-\frac{\sqrt{\ddot{q}^{2}t_{f}^{2}-4\ddot{q}(q_{f}-q_{0})}}{2\ddot{q}} tb=2ff2q¨q¨2tf24q¨(qfq0)
为了保证直线存在,加速度不能太小。
parabolic

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

将邻近路径点用直线相连,路径点附近利用抛物线过渡。求取过渡时间时可以将路径分为第一路径、中间路径和最后路径三种情况分别讨论,原理同上,不再赘述。
multi-para
值得注意的是,多段带有抛物线拟合的直线样条曲线实际并没有经过那些中间点,除非操作臂在此处停留。如果用户需要操作臂精确经过某个中间点而不停留,仍可采用前述计算公式,但是需要做如下补充:将操作臂希望经过的中间点替换为位于其两侧的两个伪中间点
这里写图片描述

B样条插值

首先简要介绍下B样条:
m m m 为样条的次数,在 m + 1 m+1 m+1 个子区间以外的其他子区间上, B样条的取值均为0。 B样条函数可以采用递归的方式进行定义。假设对于自变量 x x x m + 2 m+2 m+2 个点 x i , x i + 1 , … , x i + m + 1 x_{i},x_{i+1},\dots,x_{i+m+1} xi,xi+1,,xi+m+1 构成 m + 1 m+1 m+1 个子区间。首先定义 0 次B样条函数:
N i , 0 ( x ) = { 1 , x ∈ [ x i . x i + 1 ) 0 , x ∉ [ x i , x i + 1 ) N_{i,0}(x)=\left\{\begin{aligned}&1,&x\in[x_{i}.x_{i+1})\\&0, &x\notin[x_{i},x_{i+1}) \end{aligned}\right. Ni,0(x)={1,0,x[xi.xi+1)x/[xi,xi+1)
对于 m m m 次B样条:
N i , m ( x ) = x − x i x i + m − x i N i , m − 1 ( x ) + x i + m − 1 − x x i + m − 1 − x i + 1 N i + 1 , m − 1 ( x ) N_{i,m}(x)=\frac{x-x_{i}}{x_{i+m}-x_{i}}N_{i,m-1}(x)+\frac{x_{i+m-1}-x}{x_{i+m-1}-x_{i+1}}N_{i+1,m-1}(x) Ni,m(x)=xi+mxixxiNi,m1(x)+xi+m1xi+1xi+m1xNi+1,m1(x)
在区间 [ x 0 , x k ] [x_{0},x_{k}] [x0,xk] 内的任意函数,可以表达为利用第 m m m 次B样条函数作为基函数的加权和:
f ( x ) = ∑ i = − m k a i N i . m ( x ) f(x)=\sum_{i=-m}^{k}a_{i}N_{i.m}(x) f(x)=i=mkaiNi.m(x)
上式包含了 k + m + 1 k+m+1 k+m+1 个参数 a a a 。在每个子区间上,最多为 m + 1 m+1 m+1 个B样条函数的加权和。在进行曲线插值或拟合时,需要确定这 k + m + 1 k+m+1 k+m+1 个参数。

  • 有时候为了消除在非期望点的波动,可以利用相邻期望点的中间点作为控制点。
  • B样条的主要特点是在局部的修改不会引起样条形状的大范围变化。

笛卡尔空间运动规划

笛卡尔空间的路径规划,就是计算机器人在给定路径上各点处的位置与姿态。
在关节空间中计算出的路径可保证操作臂能够到达中间点和目标点,即使这些路径点事用笛卡尔坐标系来规定的。不过,末端执行器在空间的路径不是直线,而且,其路径的复杂程度取决于操作臂特定的运动学特征。

位置规划

对于直线运动:
P ( i ) = P 1 + α i P(i)=P_{1}+\alpha i P(i)=P1+αi
其中 P P P 是位置, α \alpha α 为步长。

对于圆弧运动:
假设圆弧由 P 1 , P 2 , P 3 P_{1},P_{2},P_{3} P1,P2,P3 点构成,首先利用2平面的交点确定圆心位置,进而计算出半径。利用矢量相加一步步规划出 P 1 P_{1} P1 P 3 P_{3} P3 每个中间点的位置。

姿态规划

假设机器人在起始位置的姿态为 R 1 R_{1} R1 ,在目标位置的姿态为 R 2 R_{2} R2 ,则机器人需要调整的姿态 R R R 为:
R = R 1 T R 2 R=R_{1}^{T}R_{2} R=R1TR2
利用通用旋转变换求取等效转轴与转角,进而求取机器人第 i i i 步相对于初始姿态的调整量。

在笛卡尔空间中,将机器人的第 i i i 步的位置与姿态相结合,得到机器人第 i i i 步的位置与姿态矩阵:
T ( i ) = ( R i R ( i ) P ( i ) 0 1 ) T(i)=\begin{pmatrix}R_{i}R(i) & P(i) \\ 0 & 1 \end{pmatrix} T(i)=(RiR(i)0P(i)1)

在规划和生成笛卡尔空间直线路径时,最好使用带有抛物线拟合的直线样条函数。然而,如果在每个中间点将姿态定义成旋转矩阵,则无法对其分量进行线性插值,因为这样做不一定总能得到有效的旋转矩阵。

SE(3) 规划

假设给定的起点和终点均为 S E ( 3 ) SE(3) SE(3) 位形表示,考虑线性插值,要如何定义二者间的直线呢?一种做法是基于Screw motion进行插值,类似于上一节讲到的姿态规划方法。
X ( s ) = X 1 exp ⁡ ( log ⁡ ( X 1 − 1 X 2 ) s ) , X ∈ S E ( 3 ) , s ∈ [ 0 , 1 ] X(s) = X_{1}\exp\left( \log\left( X_{1}^{-1}X_{2} \right)s \right), X\in SE(3),s\in [0,1] X(s)=X1exp(log(X11X2)s),XSE(3),s[0,1] 注意这里实际上这里是假定screw axis是固定的,此时机器人的末端并不一定沿着笛卡尔空间的直线运动。
当然,如果想让机器人末端沿着笛卡尔空间的直线运动,那么我们可以将位置和姿态分别进行插值,如前两节的做法。
p ( s ) = p 1 + s ( p 2 − p 1 ) R ( s ) = R 1 exp ⁡ ( log ⁡ ( R 1 − 1 R 2 ) s ) \begin{aligned} p(s) &= p_{1} + s(p_{2} - p_{1}) \\ R(s) &= R_{1}\exp\left( \log\left( R_{1}^{-1}R_{2} \right)s \right) \end{aligned} p(s)R(s)=p1+s(p2p1)=R1exp(log(R11R2)s) 其区别可参考下图。
在这里插入图片描述
注意,这里暂时没有考虑速度规划的问题,即 s s s 如何指定,具体方法可以参考上一节中各种插值方法。

笛卡尔路径的几何问题

1.不可达的中间点:尽管操作臂的起始点和目标点都在其工作空间内部,但是很有可能在连接这两点的直线上有些点不在工作空间中。
q1
2.在奇异点附近的高关节速率:在某些未知处无法用有限的关节速度来实现末端执行器在笛卡尔空间的期望速度。
q2
3.不同解下的可达起点和终点:如下图所示,两杆操作臂的两个杆长度相同,但是关节存在约束,这使得机器人到达空间给定点的解数量减少。
这里写图片描述


  • Thanks John J. Craig for his great work of Introduction to Robotics - Mechanics and Control - 3rd Edition.
  • Thanks Kevin Lynch & Frank Park for their great work of Modern Robotics - Mechanics, Planning and Control, 2016.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值