当前位置:   article > 正文

【多类型运动副组合机械臂运动学解算与Matlab仿真】抬升机构+连杆机构+球窝关节机构(上)_运动副 rr

运动副 rr

在这里插入图片描述

机械臂简图

构型:PRRR+RRR,即 抬升+三连杆+球关节型,可将其解耦为:抬升三连杆+球关节。
( 该文章主要讲解机械臂运动学解算方法,Matlab仿真完成后将会在后续进行更新… )

若对以下机械臂解算过程存在疑问可以学习我发布的上一篇文章:【一篇文章教你搞懂-机器人运动学基础知识】

1.正运动学

​ 将球关节视为末端执行器,并简化成一个点。

俯视图:

在这里插入图片描述

由上图可知,末端执行器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θ3d为变量, L 1 、 a 1 、 a 2 、 a 3 、 d 2 、 d 3 L_1、a_1、a_2、a_3、d_2、d_3 L1a1a2a3d2d3为常量。

2.逆运动学

​ 由 M ( x , y , z ) M(x,y,z) M(x,y,z)解出关节所需要达到的角度。

2.1 求解 d 1 ∗ d_1^* d1

​ 由于 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=Mzd2d3(2.1)

2.2 求解 θ 3 \theta_3 θ3

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[

θ1θ2θ3
\right] \qquad b=\left[
xy
\right] \tag{2.3} x= θ1θ2θ3 b=[xy](2.3)

$$

$$

方程的解 A A A明显行满秩列不满秩,因此方程有无穷多解。

因此, A A A的解的结构为:
{ ∞ , M 点在工作空间内 1 , M 点在边界 0 , M 点不在工作空间内 (2.4)

{M1M0M
\tag{2.4} 10M点在工作空间内M点在边界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=Mxa3cosβ(2.5)

W y = M y − a 3 s i n β (2.6) W_y=M_y-a_3sin\beta\tag{2.6} Wy=Mya3sinβ(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,无非就是求平面双连杆的逆运动学,这个还是比较简单的。

2.3 求解 θ 1 、 θ 2 \theta_1、\theta_2 θ1θ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=WxL1(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+Py2a12a22=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=±1D2 (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±1D2 (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} ϕ=tan1(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} α=tan1(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=tan1(PxPy)tan1(a1+a2cosθ2a2sinθ2)(2.16)

3.球型手腕

3.1 引言

​ 自定义控制器会添加一个IMU,将其放置在操作手的手心处采集姿态,从而对腕关节电机进行姿态角控制,这个操作和控制云台差不多,因此就不需要解算。

​ 但考虑到后续加入自动兑矿的功能,此处也提供一下解算,完成逆运动学的最后一环。

3.2 解算

球关节被放到了整个机械臂的最后面,因此,姿态会受前面关节的影响。

设机械臂末端姿态为:
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] (3.1) R=\left[

r11r12r13r21r22r23r31r32r33
\right]\tag{3.1} R= r11r21r31r12r22r32r13r23r33 (3.1)
则有如下关系:
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[

c1s10s1c10001
\right]\qquad R_3^2=\left[
c2s20s2c20001
\right]\qquad R_4^3=\left[
c3s30s3c30001
\right]\tag{3.3} R21= c1s10s1c10001 R32= c2s20s2c20001 R43= c3s30s3c30001 (3.3)
其中, 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[

c123s1230s123c1230001
\right]\tag{3.4} R40=R10R21R32R43= c123s1230s123c1230001 (3.4)
为了简洁: 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[

c5c6c7s5s7c5c6s7s5c7c5s6s5c6c7+c5s7s5c6s7+c5c7s5s6s6c7s6s7c6
\right]\tag{3.5} R74= c5c6c7s5s7s5c6c7+c5s7s6c7c5c6s7s5c7s5c6s7+c5c7s6s7c5s6s5s6c6 (3.5)

( 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[

c123r11+s123r21c123r12+s123r22c123r13+s123r23c123r21s123r11c123r22s123r12c123r23s123r13r31r32r33
\right]\tag{3.6} (R40)TR= c123r11+s123r21c123r21s123r11r31c123r12+s123r22c123r22s123r12r32c123r13+s123r23c123r23s123r13r33 (3.6)

由式(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=c123r23s123r13(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=tan1(r33±1r332 )(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[

c5c7s5s7c5s7s5c70s5c7+c5s7s5s7+c5c70001
\right]=\left[
c5+7s5+70s5+7c5+70001
\right]\tag{3.11} R74= c5c7s5s7s5c7+c5s70c5s7s5c7s5s7+c5c70001 = c5+7s5+70s5+7c5+70001 (3.11)

因此,只能解出 θ 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=tan1(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=tan1(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=tan1(c123r13s123r23c123r23s123r13)(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=tan1(r31r32)(3.15)

至此,机械臂的正逆运动学已经求解完毕。

4.雅可比矩阵

在这里插入图片描述

三连杆:
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˙y˙
\right] X˙=[x˙y˙] q ˙ = [ θ 1 ˙ θ 2 ˙ θ 3 ˙ ] \dot{q} = \left[
θ1˙θ2˙θ3˙
\right]
q˙= θ1˙θ2˙θ3˙
,有
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[
a1s1a2s12a3s123a2s12a3s123a3s123   a1c1+a2c12+a3c123a2c12+a3c123a3c123
\right] \tag{4.4}
Ja=[a1s1a2s12a3s123   a1c1+a2c12+a3c123a2s12a3s123a2c12+a3c123a3s123a3c123](4.4)

定义
F t = [ F T ] τ = [ τ 1 τ 2 τ 3 ] (4.5) F_t = \left[
FT
\right] \qquad \tau = \left[
τ1τ2τ3
\right] \tag{4.5}
Ft=[FT]τ= τ1τ2τ3 (4.5)

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)
完成虚拟力与关节力矩的映射

电子版可能会有错漏,可以和手写稿对着一起看
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若对以上机械臂解算过程存在疑问可以学习我发布的上一篇文章:【一篇文章教你搞懂-机器人运动学基础知识】

如果错漏,多请指教…

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/894146
推荐阅读
相关标签
  

闽ICP备14008679号