赞
踩
机械臂简图
构型:PRRR+RRR,即 抬升+三连杆+球关节型,可将其解耦为:抬升三连杆+球关节。
( 该文章主要讲解机械臂运动学解算方法,Matlab仿真完成后将会在后续进行更新… )
若对以下机械臂解算过程存在疑问可以学习我发布的上一篇文章:【一篇文章教你搞懂-机器人运动学基础知识】
将球关节视为末端执行器,并简化成一个点。
俯视图:
由上图可知,末端执行器M点的坐标分别为:
x
=
l
1
+
a
1
c
o
s
θ
1
+
a
2
c
o
s
(
θ
1
+
θ
2
)
+
a
3
c
o
s
(
θ
1
+
θ
2
+
θ
3
)
(1.1)
x=l_1+a_1cos\theta_1+a_2cos(\theta_1+\theta_2)+a_3cos(\theta_1+\theta_2+\theta_3)\tag{1.1}
x=l1+a1cosθ1+a2cos(θ1+θ2)+a3cos(θ1+θ2+θ3)(1.1)
y = a 1 s i n θ 1 + a 2 s i n ( θ 1 + θ 2 ) + a 3 s i n ( θ 1 + θ 2 + θ 3 ) (1.2) y=a_1sin\theta_1+a_2sin(\theta_1+\theta_2)+a_3sin(\theta_1+\theta_2+\theta_3)\tag{1.2} y=a1sinθ1+a2sin(θ1+θ2)+a3sin(θ1+θ2+θ3)(1.2)
z = d 1 ∗ + d 2 + d 3 (1.3) z=d_1^*+d_2+d_3\tag{1.3} z=d1∗+d2+d3(1.3)
其中: θ 1 、 θ 2 、 θ 3 、 d ∗ \theta_1、\theta_2、\theta_3、d^* θ1、θ2、θ3、d∗为变量, L 1 、 a 1 、 a 2 、 a 3 、 d 2 、 d 3 L_1、a_1、a_2、a_3、d_2、d_3 L1、a1、a2、a3、d2、d3为常量。
由 M ( x , y , z ) M(x,y,z) M(x,y,z)解出关节所需要达到的角度。
由于
z
z
z只和
d
1
∗
+
d
2
+
d
3
d_1^*+d_2+d_3
d1∗+d2+d3有关,而
d
2
,
d
3
d_2,d_3
d2,d3为常量,那么容易解得:
d
1
∗
=
M
z
−
d
2
−
d
3
(2.1)
d_1^*=M_z-d_2-d_3\tag{2.1}
d1∗=Mz−d2−d3(2.1)
x , y x,y x,y由三连杆结构给出,
求上图中各关节角度
θ
\theta
θ值,相当于求解:
A
x
=
b
(2.2)
Ax=b\tag{2.2}
Ax=b(2.2)
其中
x
=
[
θ
1
θ
2
θ
3
]
b
=
[
x
y
]
(2.3)
x=\left[
$$
$$
方程的解 A A A明显行满秩列不满秩,因此方程有无穷多解。
因此,
A
A
A的解的结构为:
{
∞
,
M
点在工作空间内
1
,
M
点在边界
0
,
M
点不在工作空间内
(2.4)
但,如果给出了第三根杆的姿态,则方程组便退化为:两个未知数,两条方程式;方程就有解了。幸运的是,第三根杆的姿态可由自定义控制器获取,设获取的姿态角为
β
\beta
β,
由上图可知,第三根杆W点的坐标分别为:
W
x
=
M
x
−
a
3
c
o
s
β
(2.5)
W_x=M_x-a_3cos\beta\tag{2.5}
Wx=Mx−a3cosβ(2.5)
W y = M y − a 3 s i n β (2.6) W_y=M_y-a_3sin\beta\tag{2.6} Wy=My−a3sinβ(2.6)
其中:
θ
3
=
β
−
(
θ
1
+
θ
2
)
(2.7)
\theta_3=\beta-(\theta_1+\theta_2)\tag{2.7}
θ3=β−(θ1+θ2)(2.7)
因此,只需再求出
θ
1
\theta_1
θ1与
θ
2
\theta_2
θ2,便能完成对机械臂除了球关节的逆运动学,而求
θ
1
\theta_1
θ1和
θ
2
\theta_2
θ2,无非就是求平面双连杆的逆运动学,这个还是比较简单的。
求解 θ 1 \theta_1 θ1、 θ 2 \theta_2 θ2,即求解平面双连杆的逆运动学,
声明:坐标系平移了 L 1 L_1 L1单位,将原点与连杆原点进行了对齐
因此,
P
x
=
W
x
−
L
1
(2.8)
P_x=W_x-L_1\tag{2.8}
Px=Wx−L1(2.8)
P y = W y (2.9) P_y=W_y\tag{2.9} Py=Wy(2.9)
余弦定理有:
c
o
s
θ
2
=
P
x
2
+
P
y
2
−
a
1
2
−
a
2
2
2
a
1
a
2
=
D
(2.10)
cos\theta_2=\frac{P_x^2+P_y^2-a_1^2-a_2^2}{2a_1a_2}=D\tag{2.10}
cosθ2=2a1a2Px2+Py2−a12−a22=D(2.10)
则:
s
i
n
θ
2
=
±
1
−
D
2
(2.11)
sin\theta_2=\pm\sqrt{1-D^2}\tag{2.11}
sinθ2=±1−D2
(2.11)
那么可以得出
θ
2
\theta_2
θ2的值:
θ
2
=
a
r
c
t
a
n
±
1
−
D
2
D
(2.12)
\theta_2=arctan\frac{\pm\sqrt{1-D^2}}{D}\tag{2.12}
θ2=arctanD±1−D2
(2.12)
取正负是因为有双解,分别对应上肘位与下肘位,如下图:
从图中可以看出:
θ
1
=
α
−
ϕ
(2.13)
\theta_1=\alpha-\phi\tag{2.13}
θ1=α−ϕ(2.13)
容易得出:
ϕ
=
t
a
n
−
1
(
a
2
s
i
n
θ
2
a
1
+
a
2
c
o
s
θ
2
)
(2.14)
\phi=tan^{-1}(\frac{a_2sin\theta_2}{a_1+a_2cos\theta_2})\tag{2.14}
ϕ=tan−1(a1+a2cosθ2a2sinθ2)(2.14)
α = t a n − 1 ( P y P x ) (2.15) \alpha=tan^{-1}(\frac{P_y}{P_x})\tag{2.15} α=tan−1(PxPy)(2.15)
最终求得
θ
1
\theta_1
θ1的值:
θ
1
=
t
a
n
−
1
(
P
y
P
x
)
−
t
a
n
−
1
(
a
2
s
i
n
θ
2
a
1
+
a
2
c
o
s
θ
2
)
(2.16)
\theta_1=tan^{-1}(\frac{P_y}{P_x})-tan^{-1}(\frac{a_2sin\theta_2}{a_1+a_2cos\theta_2})\tag{2.16}
θ1=tan−1(PxPy)−tan−1(a1+a2cosθ2a2sinθ2)(2.16)
自定义控制器会添加一个IMU,将其放置在操作手的手心处采集姿态,从而对腕关节电机进行姿态角控制,这个操作和控制云台差不多,因此就不需要解算。
但考虑到后续加入自动兑矿的功能,此处也提供一下解算,完成逆运动学的最后一环。
球关节被放到了整个机械臂的最后面,因此,姿态会受前面关节的影响。
设机械臂末端姿态为:
R
=
[
r
11
r
12
r
13
r
21
r
22
r
23
r
31
r
32
r
33
]
(3.1)
R=\left[
则有如下关系:
R
7
4
=
(
R
4
0
)
T
R
(3.2)
R_7^4=(R_4^0)^TR\tag{3.2}
R74=(R40)TR(3.2)
其中:
R
7
4
R_7^4
R74表示球关节末端相对于三连杆末端的姿态,
R
4
0
R_4^0
R40表示三连杆末端相对于世界坐标系*(基坐标系)*的姿态。
因为关节1是一个抬升机构,对姿态没有产生影响,因此,
三连杆姿态:
R
2
1
=
[
c
1
−
s
1
0
s
1
c
1
0
0
0
1
]
R
3
2
=
[
c
2
−
s
2
0
s
2
c
2
0
0
0
1
]
R
4
3
=
[
c
3
−
s
3
0
s
3
c
3
0
0
0
1
]
(3.3)
R_2^1=\left[
其中,
R
2
1
R_2^1
R21为杆一,
R
3
2
R_3^2
R32为杆二,
R
4
3
R_4^3
R43为杆三,
那么:
R
4
0
=
R
1
0
R
2
1
R
3
2
R
4
3
=
[
c
123
−
s
123
0
s
123
c
123
0
0
0
1
]
(3.4)
R_4^0=R_1^0R_2^1R_3^2R_4^3=\left[
为了简洁:
c
1
c_1
c1为
c
o
s
θ
1
cos\theta_1
cosθ1,
s
1
s_1
s1为
s
i
n
θ
1
sin\theta_1
sinθ1,
s
123
s_{123}
s123为
s
i
n
(
θ
1
+
θ
2
+
θ
3
)
sin(\theta_1+\theta_2+\theta_3)
sin(θ1+θ2+θ3),其他同理。
球型手腕的姿态由 R x , R y , R z R_x,R_y,R_z Rx,Ry,Rz相乘得到,即绕 x x x轴、绕 y y y轴、绕 z z z轴旋转综合起来的结果,这也符合我们的直观印象,
因此:
R
7
4
=
[
c
5
c
6
c
7
−
s
5
s
7
−
c
5
c
6
s
7
−
s
5
c
7
c
5
s
6
s
5
c
6
c
7
+
c
5
s
7
−
s
5
c
6
s
7
+
c
5
c
7
s
5
s
6
−
s
6
c
7
s
6
s
7
c
6
]
(3.5)
R_7^4=\left[
(
R
4
0
)
T
R
=
[
c
123
r
11
+
s
123
r
21
c
123
r
12
+
s
123
r
22
c
123
r
13
+
s
123
r
23
c
123
r
21
−
s
123
r
11
c
123
r
22
−
s
123
r
12
c
123
r
23
−
s
123
r
13
r
31
r
32
r
33
]
(3.6)
(R_4^0)^TR=\left[
由式(3.2),有:
c
5
s
6
=
c
123
r
13
+
s
123
r
23
(3.7)
c_5s_6=c_{123}r_{13}+s_{123}r_{23}\tag{3.7}
c5s6=c123r13+s123r23(3.7)
s 5 s 6 = c 123 r 23 − s 123 r 13 (3.8) s_5s_6=c_{123}r_{23}-s_{123}r_{13}\tag{3.8} s5s6=c123r23−s123r13(3.8)
c 6 = r 33 (3.9) c_6=r_{33}\tag{3.9} c6=r33(3.9)
①如果
c
5
s
6
c_5s_6
c5s6与
s
5
s
6
s_5s_6
s5s6不同时为
0
0
0,则可求解
θ
6
\theta_6
θ6:
θ
6
=
t
a
n
−
1
(
±
1
−
r
33
2
r
33
)
(3.10)
\theta_6=tan^{-1}(\frac{\pm\sqrt{1-r_{33}^2}}{r_{33}})\tag{3.10}
θ6=tan−1(r33±1−r332
)(3.10)
因此
θ
6
\theta_6
θ6有双解。
②如果
c
5
s
6
c_5s_6
c5s6与
s
5
s
6
s_5s_6
s5s6同时为
0
0
0,则
R
7
4
R_7^4
R74变化为:
R
7
4
=
[
c
5
c
7
−
s
5
s
7
−
c
5
s
7
−
s
5
c
7
0
s
5
c
7
+
c
5
s
7
−
s
5
s
7
+
c
5
c
7
0
0
0
1
]
=
[
c
5
+
7
−
s
5
+
7
0
s
5
+
7
c
5
+
7
0
0
0
1
]
(3.11)
R_7^4=\left[
因此,只能解出 θ 5 , θ 7 \theta_5,\theta_7 θ5,θ7之和的值,而无法解出 θ 5 \theta_5 θ5与 θ 7 \theta_7 θ7的特定值,而 θ 5 \theta_5 θ5与 θ 7 \theta_7 θ7的组合有无穷多种,如果实际中遇到,则任意赋个值,解出另外一个。
只要求出 θ 6 \theta_6 θ6,另外两个角度就呼之欲出了
①如果我们选择了正的 θ 6 \theta_6 θ6,那么 s 6 > 0 s_6>0 s6>0,
则:
θ
5
=
t
a
n
−
1
(
c
123
r
23
+
s
123
r
13
c
123
r
13
+
s
123
r
23
)
(3.12)
\theta_5=tan^{-1}(\frac{c_{123}r_{23}+s_{123}r_{13}}{c_{123}r_{13}+s_{123}r_{23}})\tag{3.12}
θ5=tan−1(c123r13+s123r23c123r23+s123r13)(3.12)
θ 7 = t a n − 1 ( r 32 − r 31 ) (3.13) \theta_7=tan^{-1}(\frac{r_{32}}{-r_{31}})\tag{3.13} θ7=tan−1(−r31r32)(3.13)
②如果我们选择了负的
θ
6
\theta_6
θ6,那么
s
6
<
0
s_6<0
s6<0,
θ
5
=
t
a
n
−
1
(
c
123
r
23
−
s
123
r
13
−
c
123
r
13
−
s
123
r
23
)
(3.14)
\theta_5=tan^{-1}(\frac{c_{123}r_{23}-s_{123}r_{13}}{-c_{123}r_{13}-s_{123}r_{23}})\tag{3.14}
θ5=tan−1(−c123r13−s123r23c123r23−s123r13)(3.14)
θ 7 = t a n − 1 ( − r 32 r 31 ) (3.15) \theta_7=tan^{-1}(\frac{-r_{32}}{r_{31}})\tag{3.15} θ7=tan−1(r31−r32)(3.15)
至此,机械臂的正逆运动学已经求解完毕。
三连杆:
x
=
a
1
c
o
s
θ
1
+
a
2
c
o
s
(
θ
1
+
θ
2
)
+
a
3
c
o
s
(
θ
1
+
θ
2
+
θ
3
)
(4.1)
x=a_1cos\theta_1+a_2cos(\theta_1+\theta_2)+a_3cos(\theta_1+\theta_2+\theta_3)\tag{4.1}
x=a1cosθ1+a2cos(θ1+θ2)+a3cos(θ1+θ2+θ3)(4.1)
y = a 1 s i n θ 1 + a 2 s i n ( θ 1 + θ 2 ) + a 3 s i n ( θ 1 + θ 2 + θ 3 ) (4.2) y=a_1sin\theta_1+a_2sin(\theta_1+\theta_2)+a_3sin(\theta_1+\theta_2+\theta_3)\tag{4.2} y=a1sinθ1+a2sin(θ1+θ2)+a3sin(θ1+θ2+θ3)(4.2)
对式(4.1)和式(4.2)两边同时求导,并定义
X
˙
=
[
x
˙
y
˙
]
\dot{X} = \left[
X
˙
=
J
a
q
˙
(4.3)
\dot{X} = Ja \space \dot{q} \tag{4.3}
X˙=Ja q˙(4.3)
J
a
J_a
Ja便是机械臂的雅可比矩阵
J
a
=
[
−
a
1
s
1
−
a
2
s
12
−
a
3
s
123
−
a
2
s
12
−
a
3
s
123
−
a
3
s
123
a
1
c
1
+
a
2
c
12
+
a
3
c
123
a
2
c
12
+
a
3
c
123
a
3
c
123
]
(4.4)
J_a = \left[
定义
F
t
=
[
F
T
]
τ
=
[
τ
1
τ
2
τ
3
]
(4.5)
F_t = \left[
F
F
F为沿三连杆末端与起点连线方向(即图中的虚线)上的推力,
T
p
T_p
Tp为此连线切线方向上的力,
τ
1
、
τ
2
、
τ
3
\tau_1、\tau_2、 \tau_3
τ1、τ2、τ3,分别三连杆三个关节电机的扭矩
根据虚功原理
τ
=
J
a
T
F
t
(4.6)
\tau = J_a^TF_t \tag{4.6}
τ=JaTFt(4.6)
完成虚拟力与关节力矩的映射
电子版可能会有错漏,可以和手写稿对着一起看
若对以上机械臂解算过程存在疑问可以学习我发布的上一篇文章:【一篇文章教你搞懂-机器人运动学基础知识】
如果错漏,多请指教…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。