写在前面

本文所有机械臂均采用标准D-H建模法,该方法的建立过程可参考机器人学回炉重造(1):正运动学、标准D-H法与改进D-H法的区别与应用(附ABB机械臂运动学建模matlab代码)

三连杆平面机械臂

坐标系建立如下图所示。其实这图有些误导人,不会出错的建模是在将各个关节变量角 θ i \theta_i θi均置0 的情况下进行的,也就是图中红线画的那样。

在这里插入图片描述

D-H坐标参数如下表所示。

Link a i a_i ai α i \alpha_i αi d i d_i di θ i \theta_i θi
1 a 1 a_1 a100 θ 1 \theta_1 θ1
2 a 2 a_2 a200 θ 2 \theta_2 θ2
3 a 3 a_3 a300 θ 3 \theta_3 θ3

平行四边形操作臂

先讲闭链结构及其正运动学问题的解决办法。

闭链结构

大多数情况下讨论的基于D-H法的直接运动学方法都是利用了开链机械臂的固有递归特性,根据下面的技术可以将该方法扩展到包含闭链结构的机械手的情况。

考虑一个由n+1个连杆组成的闭链操作臂。由于闭环的存在,关节 l l l的数量肯定会比 n n n大;尤其是,能够理解得到闭环的数量等于 l − n l-n ln

在这里插入图片描述

如上图所示,连杆0到i通过第一个 i i i关节相继连接,如同开链运动结构一样。连杆 i i i和连杆 i + 1 ′ i+1' i+1通过关节 i + 1 ′ i+1' i+1连接,连杆 i i i和连杆 i + 1 ′ ′ i+1'' i+1通过关节 i + 1 ′ ′ i+1'' i+1连接;假定关节 i + 1 ′ i+1' i+1和关节 i + 1 ′ ′ i+1'' i+1的轴线对齐。尽管未在图中表示,连杆 i + 1 ′ i+1' i+1和连杆 i + 1 ′ ′ i+1'' i+1是闭链的组成结构。特别的,连杆 i + 1 ′ i+1' i+1通过关节 i + 2 ′ i+2' i+2进一步与连杆 i + 2 ′ i+2' i+2连接,以此类推,直到连杆 j j j连接关节 j j j。同样地,连杆 i + 1 ′ ′ i+1'' i+1通过关节 i + 2 ′ ′ i+2'' i+2进一步与连杆 i + 2 ′ ′ i+2'' i+2连接,以此类推,直到连杆 k k k连接关节 k k k。最终,连杆 j j j和连杆 k k k通过关节 j + 1 j+1 j+1连接到一起并组成闭链。通常情况下, j ≠ k j \not= k j=k

为了将框架附加到各个连杆上并且运用D-H规则,要考虑一条封闭的运动链。假设闭合链可以在关节 j + 1 j+1 j+1处(即连杆 j j j和连杆k之间的关节)断开。可以获得一条等效的树状运动学开链,因此可以如上图所示定义连杆坐标系。因为连杆0到 i i i在树的两个分叉结构之前,因此它们在考虑范围之外。同样地,连杆 j + 1 j+1 j+1 n n n也被忽略了。注意到,坐标系 i i i z i z_i zi轴与关节 i + 1 ′ i+1' i+1和关节 i + 1 ′ ′ i+1'' i+1的轴对齐。

由此可见,坐标系 j j j相对于坐标系 i i i的位姿可以通过齐次变换得到
A j i ( q ′ ) = A i + 1 ′ i ( q i + 1 ′ ) … A j j − 1 ( q j ) … … ( 1 ) A_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)=\boldsymbol{A}_{i+1^{\prime}}^{i}\left(q_{i+1^{\prime}}\right) \ldots \boldsymbol{A}_{j}^{j-1}\left(q_{j}\right)……(1) Aji(q)=Ai+1i(qi+1)Ajj1(qj)1
其中, q ′ = [ q i + 1 ′ , … q j ] T \boldsymbol{q}^{\prime}=\left[\begin{array}{lll}{q_{i+1\prime},} & {\dots} & {q_{j}}\end{array}\right]^{T} q=[qi+1,qj]T。同样地,坐标系 k k k相对于坐标系 i i i的位姿可由以下得出
A i k ( q ′ ′ ) = A i + 1 ′ ′ i ( q i + 1 ′ ′ ) … A k k − 1 ( q k ) … … ( 2 ) A_{i}^{k}\left(\boldsymbol{q}^{\prime\prime}\right)=\boldsymbol{A}_{i+1^{\prime\prime}}^{i}\left(q_{i+1^{\prime\prime}}\right) \ldots \boldsymbol{A}_{k}^{k-1}\left(q_{k}\right)……(2) Aik(q)=Ai+1i(qi+1)Akk1(qk)2
其中, q ′ ′ = [ q i + 1 ′ ′ , … q k ] T \boldsymbol{q}^{\prime\prime}=\left[\begin{array}{lll}{q_{i+1\prime\prime},} & {\dots} & {q_{k}}\end{array}\right]^{T} q=[qi+1,qk]T

因为连杆 j j j和连杆 k k k通过关节 j + 1 j+1 j+1和彼此连接,因此分析坐标系 j j j和坐标系 k k k之间的相互位姿关系是有价值的,如下图所示。注意到,因为连杆 j j j和连杆 k k k连接以形成一个闭链,轴 z j z_j zj和轴 z k z_k zk是对齐的。

在这里插入图片描述

因此,可得到坐标系 j j j和坐标系 k k k之间的方向约束如下公式所示
z j i ( q ′ ) = z k i ( q ′ ′ ) … … ( 3 ) z_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)=\boldsymbol{z}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)……(3) zji(q)=zki(q)3
其中,两个轴的单位向量均相对于坐标系 i i i

此外,如果关节 j + 1 j+1 j+1是平移关节,轴 x j x_j xj和轴 x k x_k xk之间形成的关节角 θ j k \theta_{jk} θjk是固定不变的,根据式(3),可得到如下约束:
x j i T ( q ′ ) x k i ( q ′ ′ ) = cos ⁡ θ j k … … ( 4 ) \boldsymbol{x}_{j}^{i T}\left(\boldsymbol{q}^{\prime}\right) \boldsymbol{x}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)=\cos \theta_{j k}……(4) xjiT(q)xki(q)=cosθjk4
显然,没有必要在轴 y j y_j yj和轴 y k y_k yk上施加类似的约束,因为这是多余的。

至于坐标系 j j j和坐标系 k k k之间的位置约束,让 p j i p_j^i pji p k i p_k^i pki分别表示坐标系 j j j和坐标系 k k k的原点相对于坐标系 i i i的位置。通过将坐标系 k k k到坐标系 j j j的距离向量投影到坐标系 j j j上,可以得到如下约束:
R i j ( q ′ ) ( p j i ( q ′ ) − p k i ( q ′ ′ ) ) = [ 0 0 d j k ] T … … ( 5 ) \boldsymbol{R}_{i}^{j}\left(\boldsymbol{q}^{\prime}\right)\left(\boldsymbol{p}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)-\boldsymbol{p}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)\right)=\left[\begin{array}{lll} {0} & {0} & {d_{j k}} \end{array}\right]^{T}……(5) Rij(q)(pji(q)pki(q))=[00djk]T5
其中, R i j = R j i T \boldsymbol{R}_i^j=\boldsymbol{R}_j^{iT} Rij=RjiT表示坐标系 i i i相对于坐标系 j j j的方向余弦矩阵。此时,如果关节 j + 1 j+1 j+1是旋转关节,那么 d j k d_{jk} djk是沿着轴 z j z_j zj的固定偏移量;因此,式(5)中的三个等式可以充分描述位置约束。但是,如果关节 j + 1 j+1 j+1是移动关节,那么 d j k d_{jk} djk是变量。因此,只有式(5)中的前两个等式可以描述位置约束,即
[ x j i T ( q ′ ) y j i T ( q ′ ) ] ( p j i ( q ′ ) − p k i ( q ′ ′ ) ) = [ 0 0 ] … … ( 6 ) \left[\begin{array}{c} {x_{j}^{i T}\left(\boldsymbol{q}^{\prime}\right)} \\ {\boldsymbol{y}_{j}^{i T}\left(\boldsymbol{q}^{\prime}\right)} \end{array}\right]\left(\boldsymbol{p}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)-\boldsymbol{p}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)\right)=\left[\begin{array}{l} {0} \\ {0} \end{array}\right]……(6) [xjiT(q)yjiT(q)](pji(q)pki(q))=[00]6
其中, R j i = [ x j i , y j i , z j i ] \boldsymbol{R_j^i}=[x_j^i,y_j^i,z_j^i] Rji=[xji,yji,zji]

综上,如果关节 j + 1 j+1 j+1是旋转关节,则约束可表示为
{ R i j ( q ′ ) ( p j i ( q ′ ) − p k i ( q ′ ′ ) ) = [ 0 0 d j k ] T z j i ( q ′ ) = z k i ( q ′ ′ ) … … ( 7 ) \left\{\begin{array}{l} {\boldsymbol{R}_{i}^{j}\left(\boldsymbol{q}^{\prime}\right)\left(\boldsymbol{p}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)-\boldsymbol{p}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)\right)=\left[\begin{array}{lll} {0} & {0} & {d_{j k}} \end{array}\right]^{T}} \\ {\boldsymbol{z}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)=\boldsymbol{z}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)} \end{array}\right.……(7) {Rij(q)(pji(q)pki(q))=[00djk]Tzji(q)=zki(q)7
如果关节 j + 1 j+1 j+1是移动关节,则约束可表示为
{ [ x j i T ( q ′ ) y j i T ( q ′ ) ] ( p j i ( q ′ ) − p k i ( q ′ ′ ) ) = [ 0 0 ] z j i ( q ′ ) = z k i ( q ′ ′ ) x j i T ( q ′ ) x k i ( q ′ ′ ) = cos ⁡ ϑ j k … … ( 8 ) \left\{\begin{array}{l} {\left[\begin{array}{c} {\boldsymbol{x}_{j}^{i T}\left(\boldsymbol{q}^{\prime}\right)} \\ {\boldsymbol{y}_{j}^{iT}\left(\boldsymbol{q}^{\prime}\right)} \end{array}\right]\left(\boldsymbol{p}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)-\boldsymbol{p}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)\right)=\left[\begin{array}{l} {0} \\ {0} \end{array}\right]} \\ {\boldsymbol{z}_{j}^{i}\left(\boldsymbol{q}^{\prime}\right)=\boldsymbol{z}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)} \\ {\boldsymbol{x}_{j}^{i T}\left(\boldsymbol{q}^{\prime}\right) \boldsymbol{x}_{k}^{i}\left(\boldsymbol{q}^{\prime \prime}\right)=\cos \vartheta_{j k}} \end{array}\right.……(8) [xjiT(q)yjiT(q)](pji(q)pki(q))=[00]zji(q)=zki(q)xjiT(q)xki(q)=cosϑjk8
无论哪种情况,都必须满足六个等式条件。应该解决这些问题,以便从 q ′ \boldsymbol{q}^\prime q q ′ ′ \boldsymbol{q}^{\prime\prime} q组成部分(闭链的自由度特征)中敏锐地选择数量减少独立关节变量。自然而然地,这些变量是被激活的关节,而该链上的其他关节(包括切割关节)通常是未被激活的。这些独立变量与以上分析中未涉及的其余关节变量一起构成了关节向量 q \boldsymbol{q} q,其可由正运动学公式计算得到
T n 0 ( q ) = A i 0 A j i A n j … … ( 9 ) \boldsymbol{T}_n^0(\boldsymbol{q})=\boldsymbol{A}_i^0\boldsymbol{A}_j^i\boldsymbol{A}_n^j……(9) Tn0(q)=Ai0AjiAnj9
这是从坐标系 j j j恢复链关闭后的连续转换序列。

通常,除非机械臂具有简单的运动学结构,否则无法保证在封闭形式下解决约束问题。换句话说,对于具有特定集合形状(例如平面结构)的给定机械臂,上述某些等式特性可能变得具有依赖性。因此,独立等式的数量少于六个,这应该会很容易解决。

总而言之,有必要勾勒出使用D-H准则为闭链机械臂计算正运动学函数过程的操作步骤。

  1. 在闭链中,选择一个未激活的关节。假设将关节切开,以便在树形结构中获得开链;
  2. 根据D-H准则计算几次变换矩阵;
  3. 找到通过切割关节连接的两个坐标系之间的等式约束;
  4. 解出减少关节变量个数的约束;
  5. 通过上述关节变量计算得到齐次变换矩阵,并通过组合从基座标系到末端执行器坐标系的各种变换来计算得到正运动学函数。

例:平行四边形操作臂

在这里插入图片描述

考虑如上图所示的平行四边形机械臂。在闭合链中,前两个关节分别将连杆 1 ′ 1' 1和连杆 1 ′ ′ 1'' 1连接到连杆 0 0 0。选择第4个关节作为切割关节,并相应地建立了连杆坐标系。D-H参数如下表所示,其中根据平行四边形结构可以看出 a 1 ′ = a 3 ′ a_{1'}=a_{3'} a1=a3 a 2 ′ = a 1 ′ ′ a_{2'}=a_{1''} a2=a1

Link a i a_i ai α i \alpha_i αi d i d_i di θ i \theta_i θi
1‘ a 1 ′ a_{1'} a100 θ 1 ′ \theta_{1'} θ1
2’ a 2 ′ a_{2'} a200 θ 2 ′ \theta_{2'} θ2
3‘ a 3 ′ a_{3'} a300 θ 3 ′ \theta_{3'} θ3
1’‘ a 1 ′ ′ a_{1''} a100 θ 1 ′ ′ \theta_{1''} θ1
4 a 4 a_4 a4000

经过上文闭链结构的分析可知,可分别得到树状结构两个分支的坐标变换如下
A 3 ′ 0 ( q ′ ) = A 1 ′ 0 A 2 ′ 1 ′ A 3 ′ 2 ′ = [ c 1 ′ 2 ′ 3 ′ − s 1 ′ 2 ′ 3 ′ 0 a 1 ′ c 1 ′ + a 2 ′ c 1 ′ 2 ′ + a 3 ′ c 1 ′ 2 ′ 3 ′ s 1 ′ 2 ′ 3 ′ c 1 ′ 2 ′ 3 ′ 0 a 1 ′ s 1 ′ + a 2 ′ s 1 ′ 2 ′ + a 3 ′ s 1 ′ 2 ′ 3 ′ 0 0 1 0 0 0 p 1 ] … … ( 10 ) \boldsymbol{A}_{3^{\prime}}^{0}\left(\boldsymbol{q}^{\prime}\right)=\boldsymbol{A}_{1^{\prime}}^{0} \boldsymbol{A}_{2^{\prime}}^{1^{\prime}} \boldsymbol{A}_{3^{\prime}}^{2^{\prime}}=\left[\begin{array}{cccc} {c_{1^{\prime} 2^{\prime} 3^{\prime}}} & {-s_{1^{\prime} 2^{\prime} 3^{\prime}}} & {0} & {a_{1^{\prime} c_{1}^{\prime}}+a_{2^{\prime}} c_{1^{\prime} 2^{\prime}}+a_3^{\prime} c_{{1}^{\prime} 2^{\prime} 3'}} \\ {s_{1^{\prime} 2^{\prime} 3^{\prime}}} & {c_{1^{\prime} 2^{\prime} 3^{\prime}}} & {0} & {a_{1^{\prime}} s_{1^{\prime}}+a_{2^{\prime}} s_{1^{\prime} 2^{\prime}}+a_{3^{\prime}} s_{1^{\prime} 2^{\prime} 3'}} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {p} & {1} \end{array}\right]……(10) A30(q)=A10A21A32=c123s12300s123c12300001pa1c1+a2c12+a3c123a1s1+a2s12+a3s1230110
其中, q ’ = [ θ 1 ′ , θ 2 ′ , θ 3 ′ ] \boldsymbol{q}’=[\theta_{1'}, \theta_{2'}, \theta_{3'}] q=[θ1,θ2,θ3],并且
A 1 n 0 ( q ′ ′ ) = [ c 1 ′ ′ − s 1 ′ ′ 0 a 1 ′ ′ c 1 ′ ′ s 1 ′ ′ c 1 ′ ′ 0 a 1 ′ ′ s 1 ′ ′ 0 0 1 0 0 0 0 1 ] … … ( 11 ) \boldsymbol{A}_{1^{n}}^{0}\left(q^{\prime \prime}\right)=\left[\begin{array}{cccc} {c_{1 \prime\prime}} & {-s_{1 \prime\prime} } & {0} & {a_{1 \prime\prime} c_{1 \prime\prime} } \\ {s_{1 \prime\prime}} & {c_{1 \prime\prime}} & {0} & {a_{1 \prime\prime} s_{1 \prime\prime}} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1} \end{array}\right]……(11) A1n0(q)=c1s100s1c1000010a1c1a1s10111
其中, q ′ ′ = θ 1 ′ ′ q''=\theta_{1''} q=θ1。最后一个连杆的齐次变换矩阵为
A 4 3 ′ = [ 1 0 0 a 4 0 1 0 0 0 0 1 0 0 0 0 1 ] … … ( 12 ) A_{4}^{3^ \prime}=\left[\begin{array}{llll} {1} & {0} & {0} & {a_{4}} \\ {0} & {1} & {0} & {0} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1} \end{array}\right]……(12) A43=100001000010a400112
根据式(7)可以得到位置约束为( d 3 ′ 1 ′ ′ = 0 d_{3'1''}=0 d31=0
R 0 3 ′ ( q ′ ) ( p 3 ′ 0 ( q ′ ) − p 1 ′ ′ 0 ( q ′ ′ ) ) = [ 0 0 0 ] T … … ( 13 ) {\boldsymbol{R}_{0}^{3'}\left(\boldsymbol{q}^{\prime}\right)\left(\boldsymbol{p}_{3'}^{0}\left(\boldsymbol{q}^{\prime}\right)-\boldsymbol{p}_{1''}^{0}\left(\boldsymbol{q}^{\prime \prime}\right)\right)=\left[\begin{array}{lll} {0} & {0} & {0} \end{array}\right]^{T}} ……(13) R03(q)(p30(q)p10(q))=[000]T13
因为 a 1 ′ = a 3 ′ a_{1'}=a_{3'} a1=a3 a 2 ′ = a 1 ′ ′ a_{2'}=a_{1''} a2=a1,因此可以提取两个独立变量
a 1 ′ ( c 1 ′ + c 1 ′ 2 ′ 3 ′ ) + a 1 ′ ′ ( c 1 ′ 2 ′ − c 1 ′ ′ ) = 0 a 1 ′ ( s 1 ′ + s 1 ′ 2 ′ 3 ′ ) + a 1 ′ ′ ( s 1 ′ 2 ′ − s 1 ′ ′ ) = 0 \begin{aligned} &a_{1^{\prime}}\left(c_{1^{\prime}}+c_{1^{\prime} 2^{\prime} 3^{\prime}}\right)+a_{1^{\prime \prime}}\left(c_{1^{\prime} 2^{\prime}}-c_{1^{\prime \prime}}\right)=0\\ &a_{1^{\prime}}\left(s_{1^{\prime}}+s_{1^{\prime} 2^{\prime} 3^{\prime}}\right)+a_{1^{\prime \prime}}\left(s_{1^{\prime} 2^{\prime}}-s_{1^{\prime \prime}}\right)=0 \end{aligned} a1(c1+c123)+a1(c12c1)=0a1(s1+s123)+a1(s12s1)=0
为了满足 a 1 ′ a_{1'} a1 a 1 ′ ′ a_{1''} a1的任意性,必须有
θ 2 ′ = θ 1 ′ ′ − θ 1 ′ θ 3 ′ = π − θ 2 ′ = π − θ 1 ′ ′ + θ 1 ′ … … ( 14 ) \begin{aligned} &\theta_{2'}=\theta_{1''}-\theta_{1'}\\ &\theta_{3'}=\pi-\theta_{2'}=\pi-\theta_{1''}+\theta_{1'} \end{aligned}……(14) θ2=θ1θ1θ3=πθ2=πθ1+θ114
因此,可以得到关节变量为 q = [ θ 1 ′ , θ 1 ′ ′ ] T \boldsymbol{q}=[\theta_{1'}, \theta_{1''}]^T q=[θ1,θ1]T。这些关节是被激活关节的自然选择。将 θ 2 ′ \theta_{2'} θ2 θ 3 ′ \theta_{3'} θ3的表达式带入齐次变换矩阵 A 3 ′ 0 \boldsymbol{A_{3'}^0} A30中并计算正运动学函数,如下
T 4 0 ( q ) = A 3 ′ 0 ( q ) A 4 3 ′ = [ − c 1 ′ s 1 ′ 0 a 1 ′ ′ c 1 ′ ′ − a 4 c 1 ′ − s 1 ′ − c 1 ′ 0 a 1 ′ ′ s 1 ′ ′ − a 4 s 1 ′ 0 0 1 0 0 0 0 1 ] … … ( 15 ) \boldsymbol{T}_{4}^{0}(\boldsymbol{q})=\boldsymbol{A}_{3^{\prime}}^{0}(\boldsymbol{q}) \boldsymbol{A}_{4}^{3^{\prime}}=\left[\begin{array}{cccc} {-c_{1^{\prime}}} & {s_{1^{\prime}}} & {0} & {a_{1^{\prime \prime}} c_{1^{\prime \prime}}-a_{4} c_{1^{\prime}}} \\ {-s_{1^{\prime}}} & {-c_{1^{\prime}}} & {0} & {a_{1^{\prime \prime}} s_{1^{\prime \prime}}-a_{4} s_{1^{\prime}}} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1} \end{array}\right]^……(15) T40(q)=A30(q)A43=c1s100s1c1000010a1c1a4c1a1s1a4s10115
可以看出,平行四边形机械臂在运动学上等效于二连杆平面臂。然而,值得注意的区别是,两个驱动关节——提供结构的自由度——位于基座上。对于该结构的动力学模型而言,上述过程能够带来很大的简化。

球形臂

在这里插入图片描述

考虑上图所示的球形臂,其连杆坐标系如上图所示。注意到,坐标系{0}原点在轴 z 0 z_0 z0和轴 z 1 z_1 z1的交叉点处,因此 d 1 = 0 d_1=0 d1=0,类似地,坐标系{2}的原点在轴 z 1 z_1 z1和轴 z 2 z_2 z2的交叉点处。D-H参数如下表所示。

Link a i a_i ai α i \alpha_i αi d i d_ i di θ i \theta_ i θi
10 − π / 2 -\pi/2 π/20 θ 1 \theta _1 θ1
20 π / 2 \pi/2 π/2 d 2 d_2 d2 θ 2 \theta _ 2 θ2
300 d 3 d_3 d30

可计算得到正运动学公式如下
T 3 0 ( q ) = A 0 1 A 1 2 A 2 3 = [ c 1 c 2 − s 1 c 1 s 2 c 1 s 2 d 3 − s 1 d 2 s 1 c 2 c 1 s 1 s 2 s 1 s 2 d 3 + c 1 d 2 − s 2 0 c 2 c 2 d 3 0 0 0 1 ] … … ( 16 ) \boldsymbol{T}_3^0(q) = \boldsymbol{A}_0^1\boldsymbol{A}_1^2\boldsymbol{A}_2^3= \left[\begin{array}{cccc} {c_1c_2} & {-s_1} &{c_1s_2} & {c_1s_2d_3 - s_1d_2} \\ {s_1c_2} & {c_1} & {s_1s_2} & {s_1s_2d_3 + c_1d_2} \\ {-s_2} & {0} & {c_2} & {c_2d_3} \\ {0} & {0} & {0} & {1} \end{array}\right]……(16) T30(q)=A01A12A23=c1c2s1c2s20s1c100c1s2s1s2c20c1s2d3s1d2s1s2d3+c1d2c2d3116
其中变量 q = [ θ 1 θ 2 d 3 ] T \boldsymbol{q} = [\theta_1\quad\theta_2\quad d_3]^T q=[θ1θ2d3]T。注意到,第三个关节对旋转矩阵的影响并不明显。另外,单位向量 y 3 0 \boldsymbol{y}_3^0 y30的方向由第一个关节唯一决定,这是因为第二个关节的旋转轴 z 1 z_1 z1与轴 y 3 y_3 y3平行。与之前的结构不同,在球形臂的例子中,坐标系{3}能够表示末端执行器坐标系的单位方向向量 ( n e o e a e ) (n_e\quad o_e\quad a_e) (neoeae),也就是说 T e 3 = I 4 \boldsymbol{T}_e^3=\boldsymbol{I}_4 Te3=I4

拟人臂

在这里插入图片描述

考虑如上图所示的拟人化机械臂,可以注意到这个机械臂相当于一个二连杆平面机械臂附加了一个绕平面轴的旋转。从上文分析可以知道,平行四边形机械臂可以用来替代平面二连杆机械臂,这种方式在一些拟人化的工业机械臂结构中可以看到。

上图已经画出了机械臂的连杆坐标系,与前面的结构类似,该机械臂坐标系{0}的原点在轴 z 0 z_0 z0和轴 z 1 z_1 z1的交叉点处($d_1=0 ) ; 另 外 , 轴 );另外,轴 z_1 和 轴 和轴 z_2 平 行 , 轴 平行,轴 x_1 和 轴 和轴 x_2$的方向是根据平面二连杆机械臂进行选择的(也可以参考本文第的三连杆平面机械臂)。D-H参数表如下。

Link a i a_{i} ai α i \alpha_{i} αi d i d_{i} di θ i \theta_{i} θi
10 π / 2 \pi/2 π/20 θ 1 \theta_1 θ1
2 a 2 a_2 a200 θ 2 \theta_2 θ2
3 a 3 a_3 a300 θ 3 \theta_3 θ3

可计算得到正运动学公式如下
T 3 0 ( q ) = A 1 0 A 2 1 A 3 2 = [ c 1 c 23 − c 1 s 23 s 1 c 1 ( a 2 c 2 + a 3 c 23 ) s 1 c 23 − s 1 s 23 − c 1 s 1 ( a 2 c 2 + a 3 c 23 ) s 23 c 23 0 a 2 c 2 + a 3 s 23 0 0 0 1 ] … … ( 17 ) \boldsymbol{T}_3^0(q)=\boldsymbol{A}_1^0\boldsymbol{A}_2^1\boldsymbol{A}_3^2= \left[\begin{array}{cccc} {c_1c_{23}} & {-c_1s_{23}} & {s_1} & {c_1(a_2c_2 + a_3c_{23})} \\ {s_1c_{23}} & {-s_1s_{23}} & {-c_1} & {s_1(a_2c_2 + a_3c_{23})} \\ {s_{23}} & {c_{23}} & 0 & {a_2c_2 + a_3s_{23}} \\ {0} & {0} & {0} & {1} \end{array}\right]……(17) T30(q)=A10A21A32=c1c23s1c23s230c1s23s1s23c230s1c100c1(a2c2+a3c23)s1(a2c2+a3c23)a2c2+a3s23117
其中关节变量 q = [ θ 1 θ 2 θ 3 ] T \boldsymbol{q}=[\theta_1 \quad \theta_2 \quad \theta_3]^T q=[θ1θ2θ3]T。因为 z 2 z_2 z2 z 3 z_3 z3是对齐的,故坐标系{3}与可能的末端执行器坐标系不一致,需要左乘一个固定的姿态变换矩阵。

球腕

在这里插入图片描述

如上图所示,考虑一种典型结构,该结构仅由腕部组成。由于该腕部结构通常被认为安装在六自由度机械手的三自由度机械臂上,故其关节变量从4开始命名。值得注意的是,由于所有旋转轴均交于一点,故该腕部是球形的。一旦 z 3 z_3 z3, z 4 z_4 z4, z 5 z_5 z5以及 x 3 x_3 x3方向确定后, x 4 x_4 x4 x 5 x_5 x5的方向则会存在不确定性。参考上图建立的连杆坐标系,可以得到D-H参数表如下。

Link a i a_{i} ai α i \alpha_{i} αi d i d_{i} di θ i \theta_{i} θi
40 − π / 2 -\pi/2 π/20 θ 4 \theta_4 θ4
50 π / 2 \pi/2 π/20 θ 5 \theta_5 θ5
600 d 6 d_6 d6 θ 6 \theta_6 θ6

可计算得到正运动学公式如下
T 6 3 ( q ) = A 4 3 A 5 4 A 6 5 = [ c 4 c 5 c 6 − s 4 s 6 − c 4 c 5 s 6 − s 4 c 6 c 4 s 5 c 4 s 5 d 6 s 4 c 5 c 6 + c 4 s 6 − s 4 c 5 s 6 + c 4 c 6 s 4 s 5 s 4 s 5 d 6 − s 5 c 6 s 5 s 6 c 5 c 5 d 6 0 0 0 1 ] … … ( 18 ) \boldsymbol{T}_6^3(q)=\boldsymbol{A}_4^3\boldsymbol{A}_5^4\boldsymbol{A}_6^5= \left[\begin{array}{cccc} {c_4c_5c_6 - s_4s_6} & {-c_4c_5s_6 - s_4c_6} & {c_4s_5} & {c_4s_5d_6} \\ {s_4c_5c_6 + c_4s_6} & {-s_4c_5s_6 + c_4c_6} & {s_4s_5} & {s_4s_5d_6} \\ {-s_5c_6} & {s_5s_6} & {c_5} & {c_5d_6} \\ {0} & {0} & {0} & {1} \end{array}\right]……(18) T63(q)=A43A54A65=c4c5c6s4s6s4c5c6+c4s6s5c60c4c5s6s4c6s4c5s6+c4c6s5s60c4s5s4s5c50c4s5d6s4s5d6c5d6118
其中关节变量 q = [ θ 4 θ 5 θ 6 ] T \boldsymbol{q}=[\theta_4\quad \theta_5\quad \theta_6]^T q=[θ4θ5θ6]T。注意,作为对坐标系选择的结果,从齐次变换矩阵 T 6 3 \boldsymbol{T}_6^3 T63中提取的块矩阵(旋转矩阵) R 6 3 \boldsymbol{R}_6^3 R63与推导得到的欧拉角的旋转矩阵相同,即 θ 4 \theta_4 θ4, θ 5 \theta_5 θ5, θ 5 \theta_5 θ5构成了相对于坐标系 O 3 − x 3 y 3 z 3 O_3-x_3y_3z_3 O3x3y3z3的ZYZ角的角度集合。此外,坐标系{6}的单位向量与可能的末端执行器坐标系的单位向量一致。

斯坦福机械臂

在这里插入图片描述

斯坦福机械臂是由球形臂和球腕组成的,如上图所示。因为球形臂中的坐标系{3}和球腕中的坐标系{3}相同,因此通过简单地对公式(16)和(18)进行组合即可得到该机械臂的正运动学方程,如下
T 6 0 = T 3 0 T 6 3 = [ n 6 0 o 6 0 a 6 0 p 6 0 0 0 0 1 ] … … ( 19 ) \boldsymbol{T}_6^0=\boldsymbol{T}_3^0\boldsymbol{T}_6^3= \left[\begin{array}{cccc} {\boldsymbol{n}_6^0} & {\boldsymbol{o}_6^0} & {\boldsymbol{a}_6^0} & {\boldsymbol{p}_6^0} \\ {0} & {0} & {0} & {1} \end{array}\right]……(19) T60=T30T63=[n600o600a600p601]19
可计算得到
p 6 0 = [ c 1 s 2 d 3 − s 1 d 2 + ( c 1 ( c 2 c 4 s 5 + s 2 c 5 ) − s 1 s 4 s 5 ) d 6 s 1 s 2 d 3 + c 1 d 2 + ( s 1 ( c 2 c 4 s 5 + s 2 c 5 ) + c 1 s 4 s 5 ) d 6 c 2 d 3 + ( − s 2 c 4 s 5 + c 2 c 5 ) d 6 ] … … ( 20 ) \boldsymbol{p}_{6}^{0}=\left[\begin{array}{c}{c_{1} s_{2} d_{3}-s_{1} d_{2}+\left(c_{1}\left(c_{2} c_{4} s_{5}+s_{2} c_{5}\right)-s_{1} s_{4} s_{5}\right) d_{6}} \\ {s_{1} s_{2} d_{3}+c_{1} d_{2}+\left(s_{1}\left(c_{2} c_{4} s_{5}+s_{2} c_{5}\right)+c_{1} s_{4} s_{5}\right) d_{6}} \\ {c_{2} d_{3}+\left(-s_{2} c_{4} s_{5}+c_{2} c_{5}\right) d_{6}}\end{array}\right]……(20) p60=c1s2d3s1d2+(c1(c2c4s5+s2c5)s1s4s5)d6s1s2d3+c1d2+(s1(c2c4s5+s2c5)+c1s4s5)d6c2d3+(s2c4s5+c2c5)d620
这是末端执行器的位置;
n 6 0 = [ c 1 ( c 2 ( c 4 c 5 c 6 − s 4 s 6 ) − s 2 s 5 c 6 ) − s 1 ( s 4 c 5 c 6 + c 4 s 6 ) s 1 ( c 2 ( c 4 c 5 c 6 − s 4 s 6 ) − s 2 s 5 c 6 ) + c 1 ( s 4 c 5 c 6 + c 4 s 6 ) − s 2 ( c 4 c 5 c 6 − s 4 s 6 ) − c 2 s 5 c 6 ] … … ( 21 ) s 6 0 = [ c 1 ( − c 2 ( c 4 c 5 s 6 + s 4 c 6 ) + s 2 s 5 s 6 ) − s 1 ( − s 4 c 5 s 6 + c 4 c 6 ) s 1 ( − c 2 ( c 4 c 5 s 6 + s 4 c 6 ) + s 2 s 5 s 6 ) + c 1 ( − s 4 c 5 s 6 + c 4 c 6 ) s 2 ( c 4 c 5 s 6 + s 4 c 6 ) + c 2 s 5 s 6 ] \boldsymbol{n}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(c_{2}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)-s_{2} s_{5} c_{6}\right)-s_{1}\left(s_{4} c_{5} c_{6}+c_{4} s_{6}\right)} \\ {s_{1}\left(c_{2}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)-s_{2} s_{5} c_{6}\right)+c_{1}\left(s_{4} c_{5} c_{6}+c_{4} s_{6}\right)} \\ {-s_{2}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)-c_{2} s_{5} c_{6}}\end{array}\right]……(21)\\ \boldsymbol{s}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(-c_{2}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)+s_{2} s_{5} s_{6}\right)-s_{1}\left(-s_{4} c_{5} s_{6}+c_{4} c_{6}\right)} \\ {s_{1}\left(-c_{2}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)+s_{2} s_{5} s_{6}\right)+c_{1}\left(-s_{4} c_{5} s_{6}+c_{4} c_{6}\right)} \\ {s_{2}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)+c_{2} s_{5} s_{6}}\end{array}\right]\\ n60=c1(c2(c4c5c6s4s6)s2s5c6)s1(s4c5c6+c4s6)s1(c2(c4c5c6s4s6)s2s5c6)+c1(s4c5c6+c4s6)s2(c4c5c6s4s6)c2s5c621s60=c1(c2(c4c5s6+s4c6)+s2s5s6)s1(s4c5s6+c4c6)s1(c2(c4c5s6+s4c6)+s2s5s6)+c1(s4c5s6+c4c6)s2(c4c5s6+s4c6)+c2s5s6

a 6 0 = [ c 1 ( c 2 c 4 s 5 + s 2 c 5 ) − s 1 s 4 s 5 s 1 ( c 2 c 4 s 5 + s 2 c 5 ) + c 1 s 4 s 5 − s 2 c 4 s 5 + c 2 c 5 ] … … ( 22 ) \boldsymbol{a}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(c_{2} c_{4} s_{5}+s_{2} c_{5}\right)-s_{1} s_{4} s_{5}} \\ {s_{1}\left(c_{2} c_{4} s_{5}+s_{2} c_{5}\right)+c_{1} s_{4} s_{5}} \\ {-s_{2} c_{4} s_{5}+c_{2} c_{5}}\end{array}\right]……(22) a60=c1(c2c4s5+s2c5)s1s4s5s1(c2c4s5+s2c5)+c1s4s5s2c4s5+c2c522

这是末端执行器的方向。

p 6 0 \boldsymbol{p}_6^0 p60与单独球形臂的 p 3 0 \boldsymbol{p}_3^0 p30进行对比可以看出,两者的不同之处在于末端执行器的坐标系原点选定在距离坐标系{3} d 6 d_6 d6且沿着方向 a 6 0 \boldsymbol{a}_6^0 a60的地方。换句话说,如果 d 6 = 0 d_6=0 d6=0 p 6 0 \boldsymbol{p}_6^0 p60 p 3 0 \boldsymbol{p}_3^0 p30将是相同的。这是解决该机械臂逆运动学问题的关键所在。

带球形手腕的拟人化机械臂

在这里插入图片描述

因为拟人臂中的坐标系{3}与球腕中的坐标系{3}不一致,因此带球形手腕的拟人化机械臂的正运动学方程不能简单地用 T 3 0 \boldsymbol{T}_3^0 T30乘以 T 6 3 \boldsymbol{T}_6^3 T63。D-H参数表如下所示。

Link a i a_{i} ai α i \alpha_{i} αi d i d_{i} di θ i \theta_{i} θi
10 π / 2 \pi/2 π/20 θ 1 \theta _1 θ1
2 a 2 a_2 a200 θ 2 \theta _2 θ2
30 π / 2 \pi/2 π/20 θ 3 \theta _3 θ3
40 − π / 2 -\pi /2 π/2 d 4 d_4 d4 θ 4 \theta _4 θ4
50 π / 2 \pi /2 π/20 θ 5 \theta _5 θ5
600 d 6 d_6 d6 θ 6 \theta _6 θ6

可得到
T 6 0 = T 3 0 T 6 3 = [ n 6 0 o 6 0 a 6 0 p 6 0 0 0 0 1 ] … … ( 23 ) \boldsymbol{T}_6^0=\boldsymbol{T}_3^0\boldsymbol{T}_6^3= \left[\begin{array}{cccc} {\boldsymbol{n}_6^0} & {\boldsymbol{o}_6^0} & {\boldsymbol{a}_6^0} & {\boldsymbol{p}_6^0} \\ {0} & {0} & {0} & {1} \end{array}\right]……(23) T60=T30T63=[n600o600a600p601]23
末端执行器的位置为
p 6 0 = [ a 2 c 1 c 2 + d 4 c 1 s 23 + d 6 ( c 1 ( c 23 c 4 s 5 + s 23 c 5 ) + s 1 s 4 s 5 ) a 2 s 1 c 2 + d 4 s 1 s 23 + d 6 ( s 1 ( c 23 c 4 s 5 + s 23 c 5 ) − c 1 s 4 s 5 ) a 2 s 2 − d 4 c 23 + d 6 ( s 23 c 4 s 5 − c 23 c 5 ) ] … … ( 24 ) \boldsymbol{p}_{6}^{0}=\left[\begin{array}{c}{a_{2} c_{1} c_{2}+d_{4} c_{1} s_{23}+d_{6}\left(c_{1}\left(c_{23} c_{4} s_{5}+s_{23} c_{5}\right)+s_{1} s_{4} s_{5}\right)} \\ {a_{2} s_{1} c_{2}+d_{4} s_{1} s_{23}+d_{6}\left(s_{1}\left(c_{23} c_{4} s_{5}+s_{23} c_{5}\right)-c_{1} s_{4} s_{5}\right)} \\ {a_{2} s_{2}-d_{4} c_{23}+d_{6}\left(s_{23} c_{4} s_{5}-c_{23} c_{5}\right)}\end{array}\right]……(24) p60=a2c1c2+d4c1s23+d6(c1(c23c4s5+s23c5)+s1s4s5)a2s1c2+d4s1s23+d6(s1(c23c4s5+s23c5)c1s4s5)a2s2d4c23+d6(s23c4s5c23c5)24
末端执行器的姿态为
n 6 0 = [ c 1 ( c 23 ( c 4 c 5 c 6 − s 4 s 6 ) − s 23 s 5 c 6 ) + s 1 ( s 4 c 5 c 6 + c 4 s 6 ) s 1 ( c 23 ( c 4 c 5 c 6 − s 4 s 6 ) − s 23 s 5 c 6 ) − c 1 ( s 4 c 5 c 6 + c 4 s 6 ) s 23 ( c 4 c 5 c 6 − s 4 s 6 ) + c 23 s 5 c 6 ] … … ( 25 ) \boldsymbol{n}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(c_{23}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)-s_{23} s_{5} c_{6}\right)+s_{1}\left(s_{4} c_{5} c_{6}+c_{4} s_{6}\right)} \\ {s_{1}\left(c_{23}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)-s_{23} s_{5} c_{6}\right)-c_{1}\left(s_{4} c_{5} c_{6}+c_{4} s_{6}\right)} \\ {s_{23}\left(c_{4} c_{5} c_{6}-s_{4} s_{6}\right)+c_{23} s_{5} c_{6}}\end{array}\right]……(25) n60=c1(c23(c4c5c6s4s6)s23s5c6)+s1(s4c5c6+c4s6)s1(c23(c4c5c6s4s6)s23s5c6)c1(s4c5c6+c4s6)s23(c4c5c6s4s6)+c23s5c625

s 6 0 = [ c 1 ( − c 23 ( c 4 c 5 s 6 + s 4 c 6 ) + s 23 s 5 s 6 ) + s 1 ( − s 4 c 5 s 6 + c 4 c 6 ) s 1 ( − c 23 ( c 4 c 5 s 6 + s 4 c 6 ) + s 23 s 5 s 6 ) − c 1 ( − s 4 c 5 s 6 + c 4 c 6 ) − s 23 ( c 4 c 5 s 6 + s 4 c 6 ) − c 23 s 5 s 6 ] … … ( 26 ) \boldsymbol{s}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(-c_{23}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)+s_{23} s_{5} s_{6}\right)+s_{1}\left(-s_{4} c_{5} s_{6}+c_{4} c_{6}\right)} \\ {s_{1}\left(-c_{23}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)+s_{23} s_{5} s_{6}\right)-c_{1}\left(-s_{4} c_{5} s_{6}+c_{4} c_{6}\right)} \\ {-s_{23}\left(c_{4} c_{5} s_{6}+s_{4} c_{6}\right)-c_{23} s_{5} s_{6}}\end{array}\right]……(26) s60=c1(c23(c4c5s6+s4c6)+s23s5s6)+s1(s4c5s6+c4c6)s1(c23(c4c5s6+s4c6)+s23s5s6)c1(s4c5s6+c4c6)s23(c4c5s6+s4c6)c23s5s626

a 6 0 = [ c 1 ( c 23 c 4 s 5 + s 23 c 5 ) + s 1 s 4 s 5 s 1 ( c 23 c 4 s 5 + s 23 c 5 ) − c 1 s 4 s 5 s 23 c 4 s 5 − c 23 c 5 ] … … ( 27 ) \boldsymbol{a}_{6}^{0}=\left[\begin{array}{c}{c_{1}\left(c_{23} c_{4} s_{5}+s_{23} c_{5}\right)+s_{1} s_{4} s_{5}} \\ {s_{1}\left(c_{23} c_{4} s_{5}+s_{23} c_{5}\right)-c_{1} s_{4} s_{5}} \\ {s_{23} c_{4} s_{5}-c_{23} c_{5}}\end{array}\right]……(27) a60=c1(c23c4s5+s23c5)+s1s4s5s1(c23c4s5+s23c5)c1s4s5s23c4s5c23c527

d 6 = 0 d_6=0 d6=0时,可得到腕部轴线的交点位置。在这种情况下,式(24)中的位置向量 p 6 0 \boldsymbol{p}_6^0 p60和式(17)中拟人臂的位置向量 p 3 0 \boldsymbol{p}_3^0 p30相同,这是因为 d 4 d_4 d4即为前臂的长度 a 3 a_3 a3,并且上图(带球形手腕的拟人化机械臂)中的轴 x 3 x_3 x3相对于图(拟人臂)中的轴 x 3 x_3 x3旋转了 π / 2 \pi/2 π/2

DLR机械臂

在这里插入图片描述

考虑上图所示的DLR机械臂,该机械臂有七个自由度,就其本身而言多出来的自由度是多余的。对于腕部结构来说,其有两种可能的构型。参考上文提到的球腕结构,可建立连杆坐标系如上图所示。D-H参数表如下。

Link a i a_{i} ai α i \alpha_{i} αi d i d_{i} di θ i \theta_{i} θi
10 π / 2 \pi/2 π/20 θ 1 \theta _1 θ1
20 π / 2 \pi/2 π/20 θ 2 \theta _2 θ2
30 π / 2 \pi/2 π/2 d 3 d_3 d3 θ 3 \theta _3 θ3
40 π / 2 \pi/2 π/20 θ 4 \theta _4 θ4
50 π / 2 \pi/2 π/2 d 5 d_5 d5 θ 5 \theta _5 θ5
60 π / 2 \pi/2 π/20 θ 6 \theta _6 θ6
700 d 7 d_7 d7 θ 7 \theta _7 θ7

计算得到末端执行器的位置为
p 7 0 = [ d 3 x d 3 + d 5 x d 5 + d 7 x d 7 d 3 y d 3 + d 5 y d 5 + d 7 y d 7 d 3 z d 3 + d 5 z d 5 + d 7 z d 7 ] … … ( 28 ) \boldsymbol{p}_{7}^{0}=\left[\begin{array}{c}{d_{3} x_{d_{3}}+d_{5} x_{d_{5}}+d_{7} x_{d_{7}}} \\ {d_{3} y_{d_{3}}+d_{5} y_{d_{5}}+d_{7} y_{d_{7}}} \\ {d_{3} z_{d_{3}}+d_{5} z_{d_{5}}+d_{7} z_{d_{7}}}\end{array}\right]……(28) p70=d3xd3+d5xd5+d7xd7d3yd3+d5yd5+d7yd7d3zd3+d5zd5+d7zd728
其中,

x d 3 = c 1 s 2 x_{d_{3}}=c_{1} s_{2} xd3=c1s2
x d 5 = c 1 ( c 2 c 3 s 4 − s 2 c 4 ) + s 1 s 3 s 4 x_{d_{5}}=c_{1}\left(c_{2} c_{3} s_{4}-s_{2} c_{4}\right)+s_{1} s_{3} s_{4} xd5=c1(c2c3s4s2c4)+s1s3s4
x d 7 = c 1 ( c 2 k 1 + s 2 k 2 ) + s 1 k 3 x_{d_{7}}=c_{1}\left(c_{2} k_{1}+s_{2} k_{2}\right)+s_{1} k_{3} xd7=c1(c2k1+s2k2)+s1k3
y d 3 = s 1 s 2 y_{d_{3}}=s_{1} s_{2} yd3=s1s2
y d 5 = s 1 ( c 2 c 3 s 4 − s 2 c 4 ) − c 1 s 3 s 4 y_{d_{5}}=s_{1}\left(c_{2} c_{3} s_{4}-s_{2} c_{4}\right)-c_{1} s_{3} s_{4} yd5=s1(c2c3s4s2c4)c1s3s4
y d 7 = s 1 ( c 2 k 1 + s 2 k 2 ) − c 1 k 3 y_{d_{7}}=s_1(c_2k_1 + s_2k_2) - c_1k_3 yd7=s1(c2k1+s2k2)c1k3
z d 3 = − c 2 z_{d_{3}}=-c_{2} zd3=c2
z d 5 = − c 2 c 4 + s 2 c 3 s 4 z_{d_{5}}=-c_{2} c_{4}+s_{2} c_{3} s_{4} zd5=c2c4+s2c3s4
z d 7 = s 2 ( c 3 ( c 4 c 5 s 6 − s 4 c 6 ) + s 3 s 5 s 6 ) − c 2 k 2 z_{d_{7}}=s_{2}\left(c_{3}\left(c_{4} c_{5} s_{6}-s_{4} c_{6}\right)+s_{3} s_{5} s_{6}\right)-c_{2} k_{2} zd7=s2(c3(c4c5s6s4c6)+s3s5s6)c2k2

k 1 = c 3 ( c 4 c 5 s 6 − s 4 c 6 ) + s 3 s 5 s 6 k_{1}=c_{3}\left(c_{4} c_{5} s_{6}-s_{4} c_{6}\right)+s_{3} s_{5} s_{6} k1=c3(c4c5s6s4c6)+s3s5s6
k 2 = s 4 c 5 s 6 + c 4 c 6 k_{2}=s_{4} c_{5} s_{6}+c_{4} c_{6} k2=s4c5s6+c4c6
k 3 = s 3 ( c 4 c 5 s 6 − s 4 c 6 ) − c 3 s 5 s 6 k_{3}=s_{3}\left(c_{4} c_{5} s_{6}-s_{4} c_{6}\right)-c_{3} s_{5} s_{6} k3=s3(c4c5s6s4c6)c3s5s6

计算得到末端执行器的方向为
n 7 0 = [ ( ( x a c 5 + x c s 5 ) c 6 + x b s 6 ) c 7 + ( x a s 5 − x c c 5 ) s 7 ( ( y a c 5 + y c s 5 ) c 6 + y b s 6 ) c 7 + ( y a s 5 − y c c 5 ) s 7 ( z a c 6 + z c s 6 ) c 7 + z b s 7 ] … … ( 29 ) n_{7}^{0}=\left[\begin{array}{c}{\left(\left(x_{a} c_{5}+x_{c} s_{5}\right) c_{6}+x_{b} s_{6}\right) c_{7}+\left(x_{a} s_{5}-x_{c} c_{5}\right) s_{7}} \\ {\left(\left(y_{a} c_{5}+y_{c} s_{5}\right) c_{6}+y_{b} s_{6}\right) c_{7}+\left(y_{a} s_{5}-y_{c} c_{5}\right) s_{7}} \\ {\left(z_{a} c_{6}+z_{c} s_{6}\right) c_{7}+z_{b} s_{7}}\end{array}\right]……(29) n70=((xac5+xcs5)c6+xbs6)c7+(xas5xcc5)s7((yac5+ycs5)c6+ybs6)c7+(yas5ycc5)s7(zac6+zcs6)c7+zbs729

s 7 0 = [ − ( ( x a c 5 + x c s 5 ) c 6 + x b s 6 ) s 7 + ( x a s 5 − x c c 5 ) c 7 − ( ( y a c 5 + y c s 5 ) c 6 + y b s 6 ) s 7 + ( y a s 5 − y c c 5 ) c 7 − ( z a c 6 + z c s 6 ) s 7 + z b c 7 ] … … ( 30 ) s_{7}^{0}=\left[\begin{array}{c}{-\left(\left(x_{a} c_{5}+x_{c} s_{5}\right) c_{6}+x_{b} s_{6}\right) s_{7}+\left(x_{a} s_{5}-x_{c} c_{5}\right) c_{7}} \\ {-\left(\left(y_{a} c_{5}+y_{c} s_{5}\right) c_{6}+y_{b} s_{6}\right) s_{7}+\left(y_{a} s_{5}-y_{c} c_{5}\right) c_{7}} \\ {-\left(z_{a} c_{6}+z_{c} s_{6}\right) s_{7}+z_{b} c_{7}}\end{array}\right]……(30) s70=((xac5+xcs5)c6+xbs6)s7+(xas5xcc5)c7((yac5+ycs5)c6+ybs6)s7+(yas5ycc5)c7(zac6+zcs6)s7+zbc730

a 7 0 = [ ( x a c 5 + x c s 5 ) s 6 − x b c 6 ( y a c 5 + y c s 5 ) s 6 − y b c 6 z a s 6 − z c c 6 ] … … ( 31 ) \boldsymbol{a}_{7}^{0}=\left[\begin{array}{c}{\left(x_{a} c_{5}+x_{c} s_{5}\right) s_{6}-x_{b} c_{6}} \\ {\left(y_{a} c_{5}+y_{c} s_{5}\right) s_{6}-y_{b} c_{6}} \\ {z_{a} s_{6}-z_{c} c_{6}}\end{array}\right]……(31) a70=(xac5+xcs5)s6xbc6(yac5+ycs5)s6ybc6zas6zcc631

其中,

x a = ( c 1 c 2 c 3 + s 1 s 3 ) c 4 + c 1 s 2 s 4 x_{a}=\left(c_{1} c_{2} c_{3}+s_{1} s_{3}\right) c_{4}+c_{1} s_{2} s_{4} xa=(c1c2c3+s1s3)c4+c1s2s4
x b = ( c 1 c 2 c 3 + s 1 s 3 ) s 4 − c 1 s 2 c 4 x_{b}=\left(c_{1} c_{2} c_{3}+s_{1} s_{3}\right) s_{4}-c_{1} s_{2} c_{4} xb=(c1c2c3+s1s3)s4c1s2c4
x c = c 1 c 2 s 3 − s 1 c 3 x_{c}=c_{1} c_{2} s_{3}-s_{1} c_{3} xc=c1c2s3s1c3
y a = ( s 1 c 2 c 3 − c 1 s 3 ) c 4 + s 1 s 2 s 4 y_{a}=\left(s_{1} c_{2} c_{3}-c_{1} s_{3}\right) c_{4}+s_{1} s_{2} s_{4} ya=(s1c2c3c1s3)c4+s1s2s4
y b = ( s 1 c 2 c 3 − c 1 s 3 ) s 4 − s 1 s 2 c 4 \left.y_{b}=(s_{1} c_{2} c_{3}-c_{1} s_{3}\right) s_{4}-s_{1} s_{2} c_{4} yb=(s1c2c3c1s3)s4s1s2c4
y c = s 1 c 2 s 3 + c 1 c 3 y_{c}=s_1c_2s_3 + c_1c_3 yc=s1c2s3+c1c3

z a = ( s 2 c 3 c 4 − c 2 s 4 ) c 5 + s 2 s 3 s 5 z_a = (s_2c_3c_4 - c_2s_4)c_5 + s_2s_3s_5 za=(s2c3c4c2s4)c5+s2s3s5

z b = ( s 2 c 3 c 4 − c 2 s 4 ) s 5 − s 2 s 3 c 5 z_{b}=\left(s_{2} c_{3} c_{4}-c_{2} s_{4}\right) s_{5}-s_{2} s_{3} c_{5} zb=(s2c3c4c2s4)s5s2s3c5
z c = s 2 c 3 s 4 + c 2 c 4 z_{c}=s_{2} c_{3} s_{4}+c_{2} c_{4} zc=s2c3s4+c2c4


参考文献

Robotics - Modelling, Planning and Control

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐