UR3机器人的DH参数表
| Transform | θ | d | a | α | offset |
|---|
| 0~1 | θ1 | d1=0.15190 | 0 | π/2 | 0 |
| 1~2 | θ2 | 0 | a2=−0.24365 | 0 | 0 |
| 2~3 | θ3 | 0 | a3=−0.21325 | 0 | 0 |
| 3~4 | θ4 | d4=0.11235 | 0 | π/2 | 0 |
| 4~5 | θ5 | d5=0.08535 | 0 | −π/2 | 0 |
| 5~6 | θ6 | d6=0.08190 | 0 | 0 | 0 |
正向运动学
标准DH建模法下相邻坐标系之间的转换关系为:
ii−1T=Rot(z,θ)×Trans(z,d)×Trans(x,a)×Rot(x,α)=⎣⎡cosθisinθi00−sinθicosαicosθicosαisinαi0sinθisinαi−cosθisinαicosαi0aicosθiaisinθidi1⎦⎤
60T=⎣⎡nxnynz0oxoyoz0axayaz0pxpypz1⎦⎤=10T21T32T43T54T65T
10T=⎣⎡cosθ1sinθ1000010sinθ1−cosθ10000d11⎦⎤(1)
21T=⎣⎡cosθ2sinθ200−sinθ2cosθ2000010a2cosθ2a2sinθ201⎦⎤(2)
32T=⎣⎡cosθ3sinθ300−sinθ3cosθ3000010a3cosθ3a3sinθ301⎦⎤(3)
43T=⎣⎡cosθ4sinθ4000010sinθ4−cosθ40000d41⎦⎤(4)
54T=⎣⎡cosθ5sinθ50000−10−sinθ5cosθ50000d51⎦⎤(5)
65T=⎣⎡cosθ6sinθ600−sinθ6cosθ600001000d61⎦⎤(6)
60T=⎣⎡r11r21r310r12r22r320r13r23r330pxpypz1⎦⎤
下面的三个公式无法完整显示,感觉掘金的公式渲染这一块存在bug,希望能尽快修复这个问题。
60T=10T21T32T43T54T65T=⎣⎡(sin(θ1)sin(θ5)+cos(θ1)cos(θ5)cos(θ2+θ3+θ4))cos(θ6)−sin(θ6)sin(θ2+θ3+θ4)cos(θ1)(sin(θ1)cos(θ5)cos(θ2+θ3+θ4)−sin(θ5)cos(θ1))cos(θ6)−sin(θ1)sin(θ6)sin(θ2+θ3+θ4)sin(θ6)cos(θ2+θ3+θ4)+sin(θ2+θ3+θ4)cos(θ5)cos(θ6)0−(sin(θ1)sin(θ5)+cos(θ1)cos(θ5)cos(θ2+θ3+θ4))sin(θ6)−sin(θ2+θ3+θ4)cos(θ1)cos(θ6)(−sin(θ1)cos(θ5)cos(θ2+θ3+θ4)+sin(θ5)cos(θ1))sin(θ6)−sin(θ1)sin(θ2+θ3+θ4)cos(θ6)−sin(θ6)sin(θ2+θ3+θ4)cos(θ5)+cos(θ6)cos(θ2+θ3+θ4)0sin(θ1)cos(θ5)−sin(θ5)cos(θ1)cos(θ2+θ3+θ4)−sin(θ1)sin(θ5)cos(θ2+θ3+θ4)−cos(θ1)cos(θ5)−sin(θ5)sin(θ2+θ3+θ4)0a2cos(θ1)cos(θ2)+a3cos(θ1)cos(θ2+θ3)+d4sin(θ1)+d5sin(θ2+θ3+θ4)cos(θ1)+d6sin(θ1)cos(θ5)−d6sin(θ5)cos(θ1)cos(θ2+θ3+θ4)a2sin(θ1)cos(θ2)+a3sin(θ1)cos(θ2+θ3)−d4cos(θ1)+d5sin(θ1)sin(θ2+θ3+θ4)−d6sin(θ1)sin(θ5)cos(θ2+θ3+θ4)−d6cos(θ1)cos(θ5)a2sin(θ2)+a3sin(θ2+θ3)+d1−d5cos(θ2+θ3+θ4)−d6sin(θ5)sin(θ2+θ3+θ4)1⎦⎤
61Tleft=⎣⎡r11cos(θ1)+r21sin(θ1)r31r11sin(θ1)−r21cos(θ1)0r12cos(θ1)+r22sin(θ1)r32r12sin(θ1)−r22cos(θ1)0r13cos(θ1)+r23sin(θ1)r33r13sin(θ1)−r23cos(θ1)0pxcos(θ1)+pysin(θ1)−d1+pzpxsin(θ1)−pycos(θ1)1⎦⎤
61Tright=⎣⎡−sin(θ6)sin(θ2+θ3+θ4)+cos(θ5)cos(θ6)cos(θ2+θ3+θ4)sin(θ6)cos(θ2+θ3+θ4)+sin(θ2+θ3+θ4)cos(θ5)cos(θ6)sin(θ5)cos(θ6)0−sin(θ6)cos(θ5)cos(θ2+θ3+θ4)−sin(θ2+θ3+θ4)cos(θ6)−sin(θ6)sin(θ2+θ3+θ4)cos(θ5)+cos(θ6)cos(θ2+θ3+θ4)−sin(θ5)sin(θ6)0−sin(θ5)cos(θ2+θ3+θ4)−sin(θ5)sin(θ2+θ3+θ4)cos(θ5)0a2cos(θ2)+a3cos(θ2+θ3)+d5sin(θ2+θ3+θ4)−d6sin(θ5)cos(θ2+θ3+θ4)a2sin(θ2)+a3sin(θ2+θ3)−d5cos(θ2+θ3+θ4)−d6sin(θ5)sin(θ2+θ3+θ4)d4+d6cos(θ5)1⎦⎤
求解第1个关节
联立公式61Tleft和61Tright中的(3, 3)和(3, 4)元素分别相等,有
{r13sin(θ1)−r23cos(θ1)−d4−d6cos(θ5)+pxsin(θ1)−pycos(θ1)=cos(θ5)=0
消除θ5,有
(d6r23−py)cos(θ1)+(px−d6r13)sin(θ1)=d4
令 A1=d6r23−py, B1=px−d6r13,C1=d4
即公式(9)为 A1cos(θ1)+B1sin(θ1)=C1
由半角正切公式有
⎩⎨⎧A1B1=A12+B12sin(α)⇒sin(α)=A12+B12A1=A12+B12cos(α)⇒cos(α)=A12+B12B1
即
A12+B12sin(α)cos(θ1)+A12+B12cos(α)sin(θ1)=C1
从而有
A12+B12sin(α+θ1)=C1⇒sin(α+θ1)=A12+B12C1
cos(α+θ1)=±1−sin(α+θ1)2=±A12+B12A12+B12−C12
综上所述,有
θ1=Atan2(sin(α+θ1),cos(α+θ1))−Atan2(sin(α),cos(α))=Atan2(C1,±A12+B12−C12)−Atan2(A1,B1)(8)
求解第5个关节
联立公式61Tleft和61Tright中的(3, 3)元素相等,有
cos(θ5)=r13sin(θ1)−r23cos(θ1)
令A5=r13sin(θ1)−r23cos(θ1),有
cos(θ5)=A5⇒sin(θ5)=±1−A52
由半角正切公式,有
θ5=Atan2(sin(θ5),cos(θ5))=Atan2(±1−A52,A5)(9)
求解第6个关节
联立公式61Tleft和61Tright中的(3, 1)和(3, 2)元素分别相等,有
{r11sin(θ1)−r21cos(θ1)r12sin(θ1)−r22cos(θ1)=sin(θ5)cos(θ6)=−sin(θ5)sin(θ6)
当θ5=0时,有
⎩⎨⎧A6=sin(θ6)B6=cos(θ6)=sin(θ5)−r12sin(θ1)+r22cos(θ1)=sin(θ5)r11sin(θ1)−r21cos(θ1)
由半角正切公式,有
θ6=Atan2(sin(θ6),cos(θ6))=Atan2(A6,B6)(10)
当 sin(θ5)=0 时,机器人处于奇异位形,此时关节6轴与2, 3, 4关节轴平行,机器人存在无数组解。
求解第2个关节
联立公式61Tleft和61Tright中的(1, 3)元素和(2, 3)元素分别相等,有
{r13cos(θ1)+r23sin(θ1)r33=−sin(θ5)cos(θ2+θ3+θ4)=−sin(θ5)sin(θ2+θ3+θ4)
当θ5=0时,有
⎩⎨⎧A234B234=sin(θ2+θ3+θ4)=−sin(θ5)r33=cos(θ2+θ3+θ4)=−sin(θ5)r13cos(θ1)+r23sin(θ1)
由半角正切公式,有
θ2+θ3+θ4=Atan2(A234,B234)(11)
联立公式61Tleft和61Tright中的(1, 4)元素和(2, 4)元素分别相等,有
{pxcos(θ1)+pysin(θ1)−d1+pz=a2cos(θ2)+a3cos(θ2+θ3)+d5sin(θ2+θ3+θ4)−d6sin(θ5)cos(θ2+θ3+θ4)=a2sin(θ2)+a3sin(θ2+θ3)−d5cos(θ2+θ3+θ4)−d6sin(θ5)sin(θ2+θ3+θ4)
接着,分别定义M和 N,即
⎩⎨⎧MN=a2cos(θ2)+a3cos(θ2+θ3)=pxcos(θ1)+pysin(θ1)−d5sin(θ2+θ3+θ4)+d6sin(θ5)cos(θ2+θ3+θ4)=a2sin(θ2)+a3sin(θ2+θ3)=−d1+pz+d5cos(θ2+θ3+θ4)+d6sin(θ5)sin(θ2+θ3+θ4)
结合A234和B234,可以计算出M和N的数值
{M2N2=a22cos(θ2)2+a32cos(θ2+θ3)2+2a2a3cos(θ2)cos(θ2+θ3)=a22sin(θ2)2+a32sin(θ2+θ3)2+2a2a3sin(θ2)sin(θ2+θ3)
{L=Mcos(θ2)+Nsin(θ2)=a2cos(θ2)2+a3cos(θ2)cos(θ2+θ3)+a2sin(θ2)2+a3sin(θ2)sin(θ2+θ3)
由于
M2+N2−a22−a32=2a2(L−a2)=2a2(Mcos(θ2)+Nsin(θ2)−a2)
代入L,化简可得
L=Mcos(θ2)+Nsin(θ2)=2a2M2+N2−a22−a32+a2=2a2M2+N2+a22−a32
令 A2=M,B2=N,C2=L=2a2M2+N2+a22−a32
有 A2cos(θ2)+B2sin(θ2)=C2
A2=A2+B2sin(α)⇒sin(α)=A2+B2A2B2=A2+B2cos(α)⇒cos(α)=A2+B2B2
因此,有
α=Atan2(sin(α),cos(α))=Atan2(A2,B2)
A2+B2sin(α)cos(θ2)+A2+B2cos(α)sin(θ2)=C2
即
A2+B2sin(α+θ2)=C2
sin(α+θ2)=A2+B2C2
cos(α+θ2)=±A2+B2A2+B2−C2
θ2=Atan2(sin(α+θ2),cos(α+θ2))−Atan2(sin(α),cos(α))=Atan2(C2,±A2+B2−C2)−Atan2(A2,B2)
求解第3个关节
由于
{MN=a2cos(θ2)+a3cos(θ2+θ3)=a2sin(θ2)+a3sin(θ2+θ3)
有
⎩⎨⎧A23B23=sin(θ2+θ3)=a3N−a2sin(θ2)=cos(θ2+θ3)=a3M−a2cos(θ2)
由半角正切公式,有
θ2+θ3=Atan2(sin(θ2+θ3),cos(θ2+θ3))=Atan2(A23,B23)
故
θ3=Atan2(A23,B23)−θ2
求解第4个关节
θ4=Atan2(A234,B234)−Atan2(A23,B23)
至此,UR机器人的所有6个关节的求解公式推导完毕。下一篇文章,我将重点介绍如何基于本文推导的公式,使用C++编程实现UR机器人的封闭逆解算法。