3.1 概述
操作臂正运动学研究操作臂的运动特性,主要涉及与运动有关的几何参数和时间参数。本章中,只研究静止状态下操作臂连杆的位置和姿态。
处理这些复杂的几何参数需要一些步骤:首先需要在操作臂的每个连杆上分别固接一个连杆坐标系,然后再描述这些连杆坐标系之间的关系。并且,还需要研究当各个连杆通过关节连接起来后,连杆坐标系之间的相对关系。
本章重点是把操作臂关节变量作为自变量,描述操作臂末端执行器的位置和姿态与操作臂基座之间的函数关系。
3.2 连杆的描述
操作臂可以看成由一系列通过关节连接成运动链的刚体。我们将这些刚体称为连杆。通过关节将两个相邻的连杆连接起来。当两个刚体之间的相对运动是两个平面相互之间的相对滑动时,连接相邻两个刚体的运动副称为低副。
下图是6种常用的低副关节。
通常优先选择仅具有一个自由度的关节作为连杆的连接方式。(极少数选择n个自由度的,一般可看成由n个单自由度的关节把n-1个长度为0的连杆连接而成的)大部分操作臂中包括转动关节和移动关节。
从操作臂的固定基座开始为连杆进行编号,可以称固定基座为连杆0.第一个可动连杆为连杆1,以此类推。
为了确定末端执行器在三维空间中的位置和姿态,操作臂至少需要6个关节。典型操作臂具有5个或6个关节。
建立机构运动学方程时,为了确定操作臂两个相邻关节轴的位置关系,可把连杆看作一个刚体。其中,用空间中的直线来表示关节轴,用空间中的一条直线或一个向量表示关节i,连杆i绕关节轴i相对于连杆i-1转动。
由此可知,描述一个连杆的运动时,可用两个参数表示。它们定义了空间中两个关节轴的相对位置。
三维空间中,任意两轴间距离均确定,当两轴不平行时公垂线仅有1条。平行则有无数条。
第一个参数:连杆长度
关节轴之间公垂线长度称为连杆长度,如下图所示, a i − 1 a_{i-1} ai−1即为关节轴i和关节轴i-1的连杆长度。所以很容易知道,连杆长度和径向无关。
同时也有这样一种描述连杆长度的方法,即是以关节轴i-1为轴线作一个圆柱,并且把圆柱半径向外扩大,直到圆柱面和另一关节轴相交,此时圆柱半径即等于 a i − 1 a_{i-1} ai−1。
这条公垂线有且只有一条(当然了,两个关节轴是异面直线),这样就有了唯一性,可以描述两连杆间的相对位置关系。
第二个参数:连杆扭转角
作一个平面,使该平面与两关节轴间的公垂线垂直,然后把关节轴i-1和关节轴i投影到该平面上,按右手法则从轴i-1绕 a i − 1 a_{i-1} ai−1(由轴i-1指向轴i)转向轴i测量两轴线的夹角。当两个关节轴线相交时,两轴线的夹角可在两者所在的平面下测量,但 a i − 1 a_{i-1} ai−1没有意义。此时, a i − 1 a_{i-1} ai−1的符号可以随意选取。
怎么想象呢?
可以想象这两根关节轴是两根双节棍。以其中一根双节棍为基座,另一根双节棍相对旋转。
有了这两个参数,我们就可以确定两连杆间的相对位置关系了。
3.3 连杆连接的描述
处于运动链中间位置的连杆
相邻的两个连杆之间有一个公共的关节轴。沿两个相邻连杆公共轴线方向的距离称为连杆偏距,在关节轴i上的连杆偏距记为 d i d_i di,用另一个参数描述两相邻连杆绕公共轴线旋转的夹角,称为关节角,记为 θ i \theta_i θi。
理解这个 d i d_i di实际上就是理解提到的公共关节轴。
这个公共关节轴,以图3-4为例,实际上就是 a i − 1 a_{i-1} ai−1和 a i a_i ai夹着的这个轴i。
a i a_i ai是连杆i的长度,也就是轴i和轴i+1之间的公垂线的长度。它和 a i − 1 a_{i-1} ai−1之间的距离就是它们在轴i上的交点之间的距离,这就是 d i d_i di。这也很好推出,因为两个都是垂足,直接取得距离就行。
然后,把 a i a_i ai向下平移,垂足重合,作 a i − 1 a_{i-1} ai−1的延长线,其和 a i a_{i} ai的夹角即为 θ i \theta_i θi。
图3-4表示相互连接的连杆i-1和连杆i。 a i a_i ai表示连接连杆i两端关节轴的公垂线长度。从公垂线 a i − 1 a_{i-1} ai−1与关节轴i的交点到公垂线 a i a_i ai关节轴i交点的有向距离即为描述相邻两连杆连接关系的第一个参数,即连杆偏距 d i d_i di。连杆偏距 d i d_i di的表示方法如图3-4所示。当关节i为移动关节时,连杆偏距 d i d_i di是一个变量。平移公垂线 a i − 1 a_{i-1} ai−1和 a i a_i ai绕关节轴i旋转所形成的夹角即为描述相邻两连杆连接关系的第二个参数,即关节角 θ i \theta_i θi,如图3-4。双斜线标为平行线。当关节i为转动关节时,关节角 θ i \theta_i θi是一个变量。
运动链中首端连杆和末端连杆
连杆的长度 a i a_i ai和连杆扭转角 α i \alpha_i αi取决于关节轴线i和i+1,因此在本节中按从 a i a_i ai到 a n − 1 a_{n-1} an−1以及从 α 1 \alpha_1 α1到 α n − 1 \alpha_{n-1} αn−1的规定讨论。
对于运动链中的两端的连杆,其参数习惯设定为0,即 a 0 = a n = 0.0 a_0=a_n=0.0 a0=an=0.0, α 0 = α n = 0.0 \alpha_0=\alpha_n=0.0 α0=αn=0.0。在本节中,按照上面的规定对关节2到关节n-1的连杆偏距 d i d_i di和关节角 θ i \theta_i θi进行了定义。
如果关节1为转动关节,则 θ 1 \theta_1 θ1的零位可以任意选取,并且设定 d 1 = 0.0 d_1=0.0 d1=0.0。同样,如果关节1为移动关节,则 d 1 d_1 d1的零位可以任意选取,并且设定 θ 1 = 0.0 \theta_1=0.0 θ1=0.0。这种设定方法完全适用于关节n。
当一个参数可以任意选取时,把另一个参数设定为0,可以使以后的计算尽量简单。
连杆参数
因此,机器人的每个连杆都可以用4个运动学参数来描述,其中两个参数用于描述连杆本身,另两个参数用于描述连杆之间的连接关系。
通常,对于转动关节, θ i \theta_i θi变三不变,对于移动关节, d i d_i di变三不变。
这种用连杆参数描述运动关系的规则称为 D e n a v i t − H a r t e n b e r g Denavit-Hartenberg Denavit−Hartenberg方法。
根据上述方法,可以确定任意机构的 D e n a v i t − H a r t e n b e r g Denavit-Hartenberg Denavit−Hartenberg参数,并用这些参数来描述该机构。
例如对于一个6关节机器人,需要用18个参数完全描述这些固定的运动学参数。如果是6个转动关节的机器人,这是18个固定参数可以分6组( a i , α i , d i a_i,\alpha_i,d_i ai,αi,di)表示。
需要注意的是,这个就叫做DH,找这方面的资料找DH就可以了。
3.4 连杆坐标系的定义
固连在连杆i上的固连坐标系称为坐标系{i}.
运动链中间位置连杆坐标系的定义
连杆固连坐标系的确定方法:
坐标系{i}的 Z ^ \hat{Z} Z^轴称为 Z ^ i \hat{Z}_i Z^i,并与关节轴i重合,坐标系{i}的原点位于公垂线 a i a_i ai与关节轴i的交点处。 X ^ i \hat{X}_i X^i沿 a i a_i ai方向由关节i指向关节i+1。
当 a i = 0 a_i=0 ai=0时, X ^ i \hat{X}_i X^i垂直于 Z ^ i \hat{Z}_i Z^i和 Z ^ i + 1 \hat{Z}_{i+1} Z^i+1所在的平面。按右手定则绕 Z ^ i \hat{Z}_i Z^i轴的转角定义为 α i \alpha_i αi,由于方向(时针)不确定,所以需要正负号。 Z ^ i \hat{Z}_i Z^i轴的位置也由右手定则确定。
这样,坐标系 i {i} i的定义就完成了。
定义完单个坐标系后,我们需要将其应用到首端和末端的坐标系定义中,假设动系中仅存在这两个连杆,那么我们可以把一个连杆坐标系看作是参考坐标系。它通常是连杆1的坐标系。当关节变量1为0时,设定参考坐标系 0 {0} 0与 1 {1} 1重合。
在这个条件下总有:
a 0 = 0.0 a_0=0.0 a0=0.0;
α 0 = 0.0 \alpha_0=0.0 α0=0.0
当关节1为转动关节时,
d 1 = 0.0 d_1=0.0 d1=0.0;
当关节1为移动关节时,
θ 0 = 0.0 \theta_0=0.0 θ0=0.0。
为了简化坐标系的选取步骤,我们先设定 X ^ N \hat{X}_N X^N轴与 X ^ N + 1 \hat{X}_{N+1} X^N+1轴方向相同,由此有:
theta=0.0$
同时为了简化计算,取 d n = 0.0 d_n=0.0 dn=0.0的点为原点。
而对于移动关节,为了简化计算,选 θ n = 0.0 \theta_n=0.0 θn=0.0,当 d n = 0.0 d_n=0.0 dn=0.0时,原点选在 X ^ n − 1 \hat{X}_{n-1} X^n−1轴与关节 n n n的交点位置。
连杆参数在连杆坐标系中的表示方法
连杆参数有如下4个定义:
a i = a_i= ai=沿 Z ^ i \hat{Z}_i Z^i轴,从 Z ^ i \hat{Z}_{i} Z^i移动到 Z ^ i + 1 \hat{Z}_{i+1} Z^i+1的距离。(通常大于0)
α i = \alpha_i= αi=沿 Z ^ i \hat{Z}_i Z^i轴,从 Z ^ i \hat{Z}_{i} Z^i旋转到 Z ^ i + 1 \hat{Z}_{i+1} Z^i+1的角度。
d i = d_i= di=沿 Z ^ i \hat{Z}_i Z^i轴,从 X ^ i \hat{X}_i X^i移动到 X ^ i + 1 \hat{X}_{i+1} X^i+1的距离。
θ i = \theta_i= θi=沿 Z ^ i \hat{Z}_i Z^i轴,从 X ^ i \hat{X}_i X^i旋转到 X ^ i + 1 \hat{X}_{i+1} X^i+1的角度。
所以,只需要确定两个坐标轴的变换距离和角度,就可以确定一个新的坐标系。
建立连杆坐标系的步骤
- 找出各关节轴,标出延长线。
- 找出相邻关节轴的公垂线/交点,指定该公垂线垂足/交点为原点。
- 规定 Z ^ i \hat{Z}_i Z^i正方向。
- 规定 X ^ i \hat{X}_i X^i正方向,若两个关节轴相交,则规定 X ^ i \hat{X}_i X^i轴垂直于关节轴 i i i和 i + 1 i+1 i+1所在的平面。
- 按照右手定则确定 Y ^ i \hat{Y}_i Y^i轴。
- 当第一个关节变量为0时,规定坐标系{0}和{1}重合。对于坐标系{N},其原点和 X ^ N \hat{X}_N X^N的方向可以任意选取,但是选取时,通常尽量使连杆参数为0。
一个三连杆机械臂能够说明我们的参数:
三个关节均为转动关节,因此我们称其为RRR(或3R)机构。
定义参考坐标系,即坐标系{0},固定在基座上。当第一个关节变量值 ( θ 1 ) (\theta_1) (θ1)为0时,坐标系{1}与{0}重合。
这个机械臂所有的关节轴线都与机械臂所在的平面垂直。所有 Z ^ \hat{Z} Z^轴相互平行,没有连杆偏距。所有的 d i d_i di都为0。所有关节都是旋转关节,因此当转角都为0时,所有 X ^ \hat{X} X^轴一定在一条直线上。
连杆参数如图3.8所示。
所有 α i \alpha_i αi都为0,因为没有需要相对转动的 Z ^ i \hat{Z}_i Z^i轴。
没有L3的原因:原点在最后一个关节轴上,L3自然为0。
3.5 操作臂正运动学
这一节的任务是导出相邻连杆间坐标系变换的一般形式,并将这些独立的变换联系起来求出连杆 n n n相对于连杆0的位置和姿态。
连杆变换的推导
通过任务我们可以得知,我们的切入点是求出坐标系之间的变换。我们仍然继续讨论坐标系{i}相对于坐标系{i-1}的变换。一般这个变换是由4个连杆参数得出的函数。这4个参数我们已经在上一节得出。
对于任意给定的机器人,这个变换是只有一个变量的函数,另外3个参数由机械系统确定。通过对每个连杆逐一建立坐标系,我们把运动学问题分解为 n n n个子问题。为了解决每个子问题,即 i i − 1 T ^{i-1}_{i}T ii−1T,再将每个子问题再分解成4个次子问题。
通过这样的拆解,我们可以发现,假如我们需要求解坐标系{n}相对于坐标系{1}的变换,我们就需要先去求2对1的变换,然后去求 a 2 a_2 a2、 α 2 \alpha_2 α2、 d 2 d_2 d2、 θ 2 \theta_2 θ2作为变量的函数,假如此时 a 1 a_1 a1是变量,那么其他就由机械系统决定好;接着,讨论完这4个次子问题,就去求3对2,4对3,…n-1对n,以此类推。
我们为每个连杆定义3个中间坐标系——{P}、{Q}、{R}。
上图是原书的图片,我将其简化后为如图所示的逻辑:
运算推导:
上面的PQR变换可以写成:
i − 1 P = R i − 1 T Q R T P Q T i P T i P ^{i-1}P=^{i-1}_RT^R_QT^Q_PT^P_iT^iP i−1P=Ri−1TQRTPQTiPTiP(1)
简化:
i − 1 P = i i − 1 T i P ^{i-1}P=^{i-1}_iT^iP i−1P=ii−1TiP(2)
易知:
i i − 1 T = R i − 1 T Q R T P Q T i P T ^{i-1}_iT=^{i-1}_RT^R_QT^Q_PT^P_iT ii−1T=Ri−1TQRTPQTiPT(3)
考虑每一个变换矩阵,改写(3)式:
i i − 1 T = R X ( α i − 1 ) D X ( a i ) R Z ( θ i ) D Z ( d i ) ^{i-1}_iT=R_X(\alpha_{i-1})D_X(a_i)R_Z(\theta_i)D_Z(d_i) ii−1T=RX(αi−1)DX(ai)RZ(θi)DZ(di)(4)
或者
i i − 1 T = S c r e w X ( a i − 1 , α i − 1 ) S c r e w Z ( d i , θ i ) ^{i-1}_iT=Screw_X(a_{i-1},\alpha_{i-1})Screw_Z(d_i,\theta_i) ii−1T=ScrewX(ai−1,αi−1)ScrewZ(di,θi)(5)
其中, S c r e w Q ( r , ϕ ) Screw_Q(r,\phi) ScrewQ(r,ϕ)代表沿 Q ^ \hat{Q} Q^轴平移 r r r,再绕 Q ^ \hat{Q} Q^轴旋转角度 ϕ \phi ϕ的组合变换。
矩阵连乘后得到:
连杆变换的连乘
在上面的研究我们发现,只要有了坐标系和4个参数,就能建立运动学方程去求解变换了,并且我们还可以做更多事,比如研究机械臂的运动学问题。
我们很容易能够得到坐标系N相对于坐标系0的变换矩阵,它是一个矩阵连乘后的矩阵结果。
得到了机器人关节位置传感器的值,我们就能通过上述结果求解末端连杆的位置和姿态(比如夹取的钳头)。
3.6 驱动器空间、关节空间和笛卡尔空间
对于一个具有n个自由度的操作臂来说,它的所有连杆位置可由一组n个关节变量确定。我们称之为 n × 1 n×1 n×1的关节向量。关节向量组成的空间称为关节空间。驱动器空间则是基于笛卡尔坐标系的机器人运动空间。同时,假设每个运动关节都由某种驱动器驱动,考虑到驱动器为止。我们将关节向量表示为一组驱动器变量方程,即驱动向量,其组成的空间也就是驱动器空间。
这样,我们可以选择用三种不同的描述去描述操作臂的位置和姿态:驱动器空间描述、笛卡尔空间描述、关节空间描述。
采用驱动器空间描述需要注意的是,必须确定驱动器位置和关节位置的对应关系。这样逻辑才算完整。
3.7 坐标系的标准命名
坐标系需要规范、标准的命名加以区别,才能够应对实际的繁杂运算工作。
基坐标系{B}
基坐标系{B}位于操作臂的基座上,它仅是赋予坐标系{0}的另一个名称,因为它固连在机器人的静止部位,所以有时称为连杆0。
它确定了固定坐标系和腕部坐标系。
固定坐标系{S}
固定坐标系{S}位置与任务相关,它位于工作台的一个角上,其是一个通用坐标系,所有运动都相对于它执行。所以,它还有这样的别称:任务坐标系、世界坐标系或通用坐标系。它通常根据基坐标系确定,即 S B T ^B_ST SBT。
它确定了目标坐标系。
腕部坐标系{W}
腕部坐标系{W}附于操作臂的末端连杆。也可以称为坐标系{N}。大多数情况,它的原点位于操作臂的手腕上,随着操作臂的末端连杆移动。它通常根据基坐标系确定,即 W = W B T = N 0 T {W}=^B_WT=^0_NT W=WBT=N0T。
它确定了工具坐标系。
工具坐标系{T}
工具坐标系{T}附于机器人所夹持工具的末端。当手部没有夹持工具时,工具坐标系的原点位于机器人的指尖之间(图中机器人抓持轴销的末端)。它根据腕部坐标系确定。
目标坐标系{G}
目标坐标系{G}是对机器人移动工具到达的位置描述。机器人运动结束时,工具坐标系应当与目标坐标系重合(图中位于将要插入轴销的轴孔)。它通常根据固定坐标系确定。
3.8 工具的位置
工具坐标系非常重要,因为工具的使用是任务成败的根本。我们需要计算工具坐标系相对于固定坐标系{S}的变换矩阵。
T S T = S B T − 1 ^S_TT=^B_ST^{-1} TST=SBT−1 W B T T W T ^B_WT^W_TT WBTTWT
上述方程有时被称为定位函数,是广义的运动学方程,这样就可以计算手臂的位置了。按上图所示,定位的结果是轴销相对于工作台顶角处的位置和姿态。
3.9 计算问题
-
定点数表示法较常采用,变量变化范围较小,且容易确定。它所需的位数一般不超过24位。
-
增加局部变量来减少乘和加的次数,避免计算机重复运行相同的语句。
-
计算问题主要在于超越函数的计算(正弦、余弦)。现在常用查表的方式去计算,能够节省时间。
-
矩阵运算需要选择简单的列计算。