Industrial Robot Kinematics and Matlab Forward and Inverse Solution Algorithm Study Notes (Résumé d'une session plénière avec cœur) (3)


CSDN m'a rappelé qu'il y avait trop de mots et que je ne pouvais pas publier un article, j'ai donc dû diviser x2. . .

à propos

  • Modèle standard DH
  • Modèle DH amélioré
  • cinématique robotique

Pour plus de détails, voir le premier article :

→→→ [Industrial Robot Kinematics and Matlab Forward and Inverse Solution Algorithm Study Notes (Résumé d'une séance plénière) (1)]

à propos

  • Solution de cinématique inverse du robot θ 1 \theta_1je1θ 2 \theta_2je2θ 3 \theta_3je3

Voir le deuxième article pour plus de détails

→→→ [Industrial Robot Kinematics and Matlab Forward and Inverse Solution Algorithm Study Notes (Résumé d'une séance plénière) (2)]


❤ 2023.6.27 ❤
insérez la description de l'image ici

Cinématique inverse du robot

△ Solution algébrique de θ 4 \theta_4je4θ 5 \theta_5je5θ 6 \theta_6je6

○ Résolution pour θ 4 \theta_4je4

La description des deux côtés de la matrice à la fin de la formule est 3 2 T − 1 2 1 T − 1 1 0 T − 1 { {_3^2}T}^{-1}\ { { _2^1}T} ^{- 1}\ { {_1^0}T}^{-1}32J1 21J1 10J1得:
  3 2 T − 1 2 1 T − 1 1 0 T − 1 6 0 T = 4 3 T ( θ 4 ) 5 4 T ( θ 5 ) 6 5 T ( θ 6 ) \ { {_3^ 2 }T}^{-1}\ { {_2^1}T}^{-1}\ { {_1^0}T}^{-1}\ _6^0T=_4^3T\left(\theta_4\ droite)\ _5^4T\gauche(\theta_5\droite)\ _6^5T\gauche(\theta_6\droite) 32J1 21J1 10J1 60J=43J( je4) 54J( je5) 65J( je6)

Par exemple :
  3 2 T - 1 2 1 T - 1 1 0 T - 1 = [ c 1 c 23 s 1 c 23 s 23 - une 1 c 23 - ré 1 s 23 - une 2 c 3 - c 1 s 23 - s 1 s 23 c 23 une 1 s 23 - ré 1 c 23 + une 2 s 3 s 1 - c 1 0 0 0 0 1 ] \ { {_3^2}T}^{-1}\ { { _2 ^1}T}^{-1}\ { {_1^0}T}^{-1}=\left[\begin{matrice}c_1c_{23}&s_1c_{23}&s_{23}&-a_1c_{2 }-d_1s_{23}-a_2c_3\\-c_1s_{23}&-s_1s_{23}&c_{23}&a_1s_{23}-d_1c_{23}+a_2s_3\\s_1&-c_1&0&0\\0&0&0&1\\\end{matrice }\droite] 32J1 21J1 10J1= c1c23−c _1s23s10s1c23s1s23−c _10s23c2300un1c23d1s23un2c3un1s23d1c23+un2s301
4 3 T ( θ 4 ) 5 4 T ( θ 5 ) 6 5 T ( θ 6 ) = [ c 4 c 5 c 6 - s 4 s 6 - c 6 s 4 - c 4 c 5 s 6 c 4 s 5 une 3 c 6 s 5 - s 5 s 6 - c 5 - ré 4 c 4 s 6 + c 5 c 6 s 4 c 4 c 6 - c 5 s 4 s 6 s 4 s 5 0 0 0 0 1 ] { _4^3}T\left(\theta_4\right)\ _5^4T\left(\theta_5\right)\ _6^5T\left(\theta_6\right)=\left[\begin{matrice}c_4c_5c_6-s_4s_6&- c_6s_4-c_4c_5s_6&c_4s_5&a_3\\c_6s_5&-s_5s_6&-c_5&-d_4\\c_4s_6+c_5c_6s_4&c_4c_6-c_5s_4s_6&s_4s_5&0\\0&0&0&1\\\end{matrice}\droite]43J( je4) 54J( je5) 65J( je6)= c4c5c6s4s6c6s5c4s6+c5c6s40−c _6s4c4c5s6s5s6c4c6c5s4s60c4s5−c _5s4s50un3d401


  • ※ processus de calcul
syms Q1 Q2 Q3 Q4 Q5 Q6  d1 d4 dt a1 a2 a3  nx ny nz ox oy oz ax ay az px py pz

%ZK-500连杆间齐次变换矩阵
T_01 =[ cos(Q1),   -sin(Q1),    0,      0
        sin(Q1),    cos(Q1),    0,      0
        0,          0,          1,      d1
        0,          0,          0,      1];
T_12 =[ cos(Q2),   -sin(Q2),    0,      a1
        0,          0,         -1,      0
        sin(Q2),    cos(Q2),    0,      0
        0,          0,          0,      1];
T_23 =[ cos(Q3),   -sin(Q3),    0,      a2
        sin(Q3),    cos(Q3),    0,      0
        0,          0,          1,      0
        0,          0,          0,      1];
T_34 =[ cos(Q4),   -sin(Q4),    0,      a3
        0,          0,         -1,     -d4
        sin(Q4),    cos(Q4),    0,      0
        0,          0,          0,      1];
T_45 =[ cos(Q5),   -sin(Q5),    0,      0
        0,          0,          1,      0
       -sin(Q5),   -cos(Q5),    0,      0
        0,          0,          0,      1];
T_56 =[ cos(Q6),   -sin(Q6),    0,      0
        0,          0,         -1,      0
        sin(Q6),    cos(Q6),    0,      0
        0,          0,          0,      1];
T_6t=[  1           0           0       0
        0           1           0       0
        0           0           1       dt
        0           0           0       1];

% 计算T_06和T_16的逆矩阵
T_06=[nx ox ax px;ny oy ay py;nz oz az pz;0 0 0 1];
T_03=T_01*T_12*T_23;
T_36=T_34*T_45*T_56;


% 计算T_01的逆矩阵
T_03_inv = inv(T_03);
T_03_inv=simplify(T_03_inv)
T_36=simplify(T_36)

résultat

T_03_inv =
 
[ cos(Q2 + Q3)*cos(Q1),  cos(Q2 + Q3)*sin(Q1), sin(Q2 + Q3), - a1*cos(Q2 + Q3) - d1*sin(Q2 + Q3) - a2*cos(Q3)]
[-sin(Q2 + Q3)*cos(Q1), -sin(Q2 + Q3)*sin(Q1), cos(Q2 + Q3),   a1*sin(Q2 + Q3) - d1*cos(Q2 + Q3) + a2*sin(Q3)]
[              sin(Q1),              -cos(Q1),            0,                                                0]
[                    0,                     0,            0,                                                1]
 
 
T_36 =
 
[cos(Q4)*cos(Q5)*cos(Q6) - sin(Q4)*sin(Q6), - cos(Q6)*sin(Q4) - cos(Q4)*cos(Q5)*sin(Q6), cos(Q4)*sin(Q5),  a3]
[                          cos(Q6)*sin(Q5),                            -sin(Q5)*sin(Q6),        -cos(Q5), -d4]
[cos(Q4)*sin(Q6) + cos(Q5)*cos(Q6)*sin(Q4),   cos(Q4)*cos(Q6) - cos(Q5)*sin(Q4)*sin(Q6), sin(Q4)*sin(Q5),   0]
[                                        0,                                           0,               0,   1]
 

Matlab est vraiment facile à utiliser. . . .


Soit les signes d'égalité des éléments (1,3) et (3,3) égaux pour obtenir :
axc 1 c 23 + ays 1 c 23 + azs 23 = c 4 s 5 axs 1 − ayc 1 = s 4 s 5 a_xc_1c_ {23} +a_ys_1c_{23}+a_zs_{23}=c_4s_5\\ a_xs_1-a_yc_1=s_4s_5unxc1c23+unys1c23+unzs23=c4s5unxs1unyc1=s4s5

Pour le processus de calcul, voir le recto pour trouver θ 2 \theta_2je2Le contenu de
→→→ passe au processus de calcul
La simplification est une simplification manuelle. . .


h 1 = axc 1 c 23 + ays 1 c 23 + azs 23 h 2 = axs 1 − ayc 1 h_1=a_xc_1c_{23}+a_ys_1c_{23}+a_zs_{23}\\ h_2=a_xs_1-a_yc_1h1=unxc1c23+unys1c23+unzs23h2=unxs1unyc1

Prenez la somme des carrés des deux côtés de l'équation () pour obtenir
s 5 2 = h 1 2 + h 2 2 s_5^2=h_1^2+h_2^2s52=h12+h22

Bien qu'ici par
θ 5 = arcsin ⁡ ( ± ( h 1 2 + h 2 2 ) ) \theta_5=\arcsin{\left(\pm\sqrt{\left(h_1^2+h_2^2\right)}\right )}je5=arcsin( ±( h12+h22) )
peut trouverθ 5 \theta_5je5Mais selon la déclaration précédente, il est préférable d'utiliser la fonction atan2() pour résoudre, donc les résultats ici ne sont utilisés que pour juger θ 5 \theta_5je5Tend-il vers 0

D'après la vérification du programme, lorsque θ 5 \theta_5je5Lorsque la valeur est 0, en raison de l'influence des erreurs d'arrondi informatique, le θ 5 \theta_5 calculéje5La valeur de n'est pas 0, mais une très petite valeur.
Si vous jugez directement θ 5 \theta_5je5S'il est nul, cela invalidera non seulement le jugement, mais affectera également θ 4 \theta_4je4La valeur de , donc ici bien qu'en écrivant le jugement θ 5 \theta_5je5Si c'est 0, mais c'est jugé dans le programme s 5 2 s_5^2s52est inférieur à une certaine valeur.

θ 5 ≠ 0 \theta_5\neq0je5=0
θ 4 = A tan 2 ( h 2 , h 1 ) \theta_4=\mathrm{Atan}2\left(h_2,h_1\right)je4=Atan 2( h2,h1)
θ5 = 0 \theta_5=0je5=0 , le manipulateur est dans une configuration singulière, l'articulation 4 et l'articulation 6 se chevauchent en une ligne droite, et toutes les solutions à ce moment sontθ 4 \theta_4je4Étant donné θ 6 \theta_6je6somme ou différence. Dans ce cas θ 4 \theta_4je4Vous pouvez prendre n'importe quelle valeur, mais choisissez généralement de conserver sa valeur actuelle.


  • Implémentation du code Matlab
%% theta4求解
h1=ax*cos(theta1)*cos(theta2+theta3)+ay*sin(theta1)*cos(theta2+theta3)+az*sin(theta2+theta3);
h2=ax*sin(theta1)-ay*cos(theta1);
s5sq=h1^2+h2^2; % 用sin(theta5)的平方作为判断机械臂是否处于奇异位形

% 需要判断theta5是否为0
% 这里判断theta5是否为0其实有点问题,因为当theta5接近0的时候就会出问题,所以这里选择判断sin(theta5)的平方是否小于某一特定值,若小于则认为theta5为0
% 当theta5=0时,theta4保持不变
% 当theta5≠0时,根据theta4可能取到两组值
if s5sq<0.0000001
    theta4=q_r(4);  %q_r(4)是上一步theta4的值
else
    theta4_1=atan2(h2,h1);
    theta4_2=atan2(-h2,-h1);
end

○ Résolution pour θ 5 \theta_5je5

Écrivez la matrice de description de la pose terminale sous la forme
   4 3 T − 1 3 2 T − 1 2 1 T − 1 1 0 T − 1 6 0 T = 6 5 T ( θ 6 ) 5 4 T ( θ 6 ) \ \ { { _4 ^3}T}^{-1}\ { {_3^2}T}^{-1}\ { {_2^1}T}^{-1}\ { { _1^0}T}^{- 1}\ _6^0T=_6^5T\left(\theta_6\right)\ {_5^4}T\left(\theta_6\right)  43J1 32J1 21J1 10J1 60J=65J( je6) 54J( je6)


  4 3 T - 1 3 2 T - 1 2 1 T - 1 1 0 T - 1 = [ s 1 s 4 + c 1 c 4 c 23 s 1 c 4 c 23 - c 1 s 4 c 4 s 23 - une 1 c 4 c 23 - une 2 c 3 c 4 - une 3 c 4 - ré 1 c 4 s 23 s 1 c 4 - c 1 s 4 c 23 - s 1 s 4 c 23 - c 1 c 4 - s 4 s 23 une 1 s 4 c 23 + une 2 c 3 c 4 + une 3 s 4 + ré 1 s 4 s 23 c 1 s 23 s 1 s 23 - c 23 - une 1 s 23 - une 2 s 3 + ré 1 c 23 - ré 4 0 0 0 1 ] \ { {_4^3}T}^{-1}\ { {_3^2}T}^{-1}\ { { _2^1}T}^ {-1}\ { {_1^0}T}^{-1}=\\\left[\begin{matrice}s_1s_4+c_1c_4c_{23}&s_1c_4c_{23}-c_1s_4&c_4s_{23}&-a_1c_4c_{23} -a_2c_3c_4-a_3c_4-d_1c_4s_{23}\\s_1c_4-c_1s_4c_{23}&-s_1s_4c_{23}-c_1c_4&-s_4s_{23}&a_1s_4c_{23}+a_2c_3c_4+a_3s_4+d_1s_4s_ {23}\\c_1s_{23}&s_1s_ {23}&-c_{23}&-a_1s_{23}-a_2s_3+d_1c_{23}-d_4\\0&0&0&1\\\end{matrice}\right] 43J1 32J1 21J1 10J1= s1s4+c1c4c23s1c4c1s4c23c1s230s1c4c23c1s4s1s4c23c1c4s1s230c4s23s4s23−c _230un1c4c23un2c3c4un3c4d1c4s23un1s4c23+un2c3c4+un3s4+d1s4s23un1s23un2s3+d1c23d41
5 4 T ( θ 5 ) 6 5 T ( θ 6 ) = [ c 5 c 6 - c 5 s 6 s 5 0 s 6 c 6 0 0 - s 5 c 6 s 5 s 6 c 5 0 0 0 0 1 ] {_5^4}T\left(\theta_5\right)\ {_6^5}T\left(\theta_6\right)=\left[\begin{matrix}c_5c_6&-c_5s_6&s_5&0\\s_6&c_6&0&0\\-s_5c_6&s_5s_6&c_5&0\ \0&0&0&1\\\end{matrice}\right]54J( je5) 65J( je6)= c5c6s6s5c60−c _5s6c6s5s60s50c500001


  • Le processus de calcul se réfère à θ 4 \theta_4je4le processus de

Le résultat est le suivant

T_04_inv =
 
[
sin(Q1)*sin(Q4) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4) - cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3), 
cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1) - cos(Q1)*sin(Q4) - cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3),  
sin(Q2 + Q3)*cos(Q4), 
-cos(Q4)*(a3 + a1*cos(Q2 + Q3) + d1*sin(Q2 + Q3) + a2*cos(Q3))
]

[
cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4), 
sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4) - cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - cos(Q1)*cos(Q4), 
-sin(Q2 + Q3)*sin(Q4),  
sin(Q4)*(a3 + a1*cos(Q2 + Q3) + d1*sin(Q2 + Q3) + a2*cos(Q3))
]

[
sin(Q2 + Q3)*cos(Q1),                                                                
sin(Q2 + Q3)*sin(Q1),         
-cos(Q2 + Q3),            
d1*cos(Q2 + Q3) - d4 - a1*sin(Q2 + Q3) - a2*sin(Q3)]

[0,0,0,1]
 

T_left =
 
[
nx*(sin(Q1)*sin(Q4) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4) - cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3)) - ny*(cos(Q1)*sin(Q4) - cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1) + cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3)) + nz*sin(Q2 + Q3)*cos(Q4), 
ox*(sin(Q1)*sin(Q4) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4) - cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3)) - oy*(cos(Q1)*sin(Q4) - cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1) + cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3)) + oz*sin(Q2 + Q3)*cos(Q4), 
ax*(sin(Q1)*sin(Q4) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4) - cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3)) - ay*(cos(Q1)*sin(Q4) - cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1) + cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3)) + az*sin(Q2 + Q3)*cos(Q4), 
px*(sin(Q1)*sin(Q4) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4) - cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3)) - cos(Q4)*(a3 + a1*cos(Q2 + Q3) + d1*sin(Q2 + Q3) + a2*cos(Q3)) - py*(cos(Q1)*sin(Q4) - cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1) + cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3)) + pz*sin(Q2 + Q3)*cos(Q4)
]

[
nx*(cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - ny*(cos(Q1)*cos(Q4) + cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - nz*sin(Q2 + Q3)*sin(Q4), 
ox*(cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - oy*(cos(Q1)*cos(Q4) + cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - oz*sin(Q2 + Q3)*sin(Q4), 
ax*(cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - ay*(cos(Q1)*cos(Q4) + cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - az*sin(Q2 + Q3)*sin(Q4), 
px*(cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) + sin(Q4)*(a3 + a1*cos(Q2 + Q3) + d1*sin(Q2 + Q3) + a2*cos(Q3)) - py*(cos(Q1)*cos(Q4) + cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4)) - pz*sin(Q2 + Q3)*sin(Q4)
]

[                                                                                                                                          
ny*sin(Q2 + Q3)*sin(Q1) - nz*cos(Q2 + Q3) + nx*sin(Q2 + Q3)*cos(Q1),
oy*sin(Q2 + Q3)*sin(Q1) - oz*cos(Q2 + Q3) + ox*sin(Q2 + Q3)*cos(Q1),
ax*sin(Q2 + Q3)*cos(Q1) - az*cos(Q2 + Q3) + ay*sin(Q2 + Q3)*sin(Q1),
d1*cos(Q2 + Q3) - d4 - pz*cos(Q2 + Q3) - a1*sin(Q2 + Q3) - a2*sin(Q3) + py*sin(Q2 + Q3)*sin(Q1) + px*sin(Q2 + Q3)*cos(Q1)
]

[0,0,0,1]
 


T_46 =
 
[ cos(Q5)*cos(Q6), -cos(Q5)*sin(Q6), sin(Q5), 0]
[         sin(Q6),          cos(Q6),       0, 0]
[-cos(Q6)*sin(Q5),  sin(Q5)*sin(Q6), cos(Q5), 0]
[               0,                0,       0, 1]

令元素(1,3)和(3,3)等号左右相等得到:
hache ( s 1 s 4 + c 1 c 4 c 23 ) + ay ( s 1 c 4 c 23 − c 1 s 4 ) + az ( c 4 s 23 ) = s 5 ax ( c 1 s 23 ) + ay ( s 1 s 23 ) + az ( - c 23 ) = c 5 a_x\left(s_1s_4+c_1c_4c_{23}\right)+a_y\ gauche(s_1c_4c_{23}-c_1s_4\right)+a_z\left(c_4s_{23}\right)=s_5\\ a_x\left(c_1s_{23}\right)+a_y\left(s_1s_{23}\right) +a_z\left(-c_{23}\right)=c_5unx( s1s4+c1c4c23)+uny( s1c4c23c1s4)+unz( c4s23)=s5unx( c1s23)+uny( s1s23)+unz( -c _23)=c5

p 1 = ax ( s 1 s 4 + c 1 c 4 c 23 ) + ay ( s 1 c 4 c 23 - c 1 s 4 ) + az ( c 4 s 23 ) p 2 = ax ( c 1 s 23 ) + ay ( s 1 s 23 ) + az ( − c 23 ) p_1=a_x\left(s_1s_4+c_1c_4c_{23}\right)+a_y\left(s_1c_4c_{23}-c_1s_4\right)+a_z\left( c_4s_{23}\right)\\ p_2=a_x\left(c_1s_{23}\right)+a_y\left(s_1s_{23}\right)+a_z\left(-c_{23}\right)p1=unx( s1s4+c1c4c23)+uny( s1c4c23c1s4)+unz( c4s23)p2=unx( c1s23)+uny( s1s23)+unz( -c _23)


θ 5 = Pour 2 ( p 1 , p 2 ) \theta_5=\mathrm{For}2\left(p_1,p_2\right)je5=Atan 2( p1,p2)


  • Implémentation du code Matlab
p1=ax*(sin(theta1)*sin(theta4)+cos(theta1)*cos(theta4)*cos(theta2+theta3))+...
    ay*(sin(theta1)*cos(theta4)*cos(theta2+theta3)-cos(theta1)*sin(theta4))+...
    az*cos(theta4)*sin(theta2+theta3);
p2=ax*cos(theta1)*sin(theta2+theta3)+ay*sin(theta1)*sin(theta2+theta3)-az*cos(theta2+theta3);
theta5_1=atan2(p1,p2);
theta5_2=atan2(-p1,-p2);

○ Résolution pour θ 6 \theta_6je6

Écrivez l'équation sous la forme
  5 4 T - 1 4 3 T - 1 3 2 T - 1 2 1 T - 1 1 0 T - 1 6 0 T = 6 5 T ( θ 6 ) \ { {_5^4}T} ^ {-1}\ { {_4^3}T}^{-1}\ { {_3^2}T}^{-1}\ { {_2^1}T}^{-1}\ { { _1 ^0}T}^{-1}\ _6^0T=_6^5T\left(\theta_6\right) 54J1 43J1 32J1 21J1 10J1 60J=65J( je6)

  5 4 T − 1 4 3 T − 1 3 2 T − 1 2 1 T − 1 1 0 T − 1 = [ m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 0 0 0 1 ] \ { {_5^4}T}^{-1}\ { {_4^3}T}^{-1}\ { { _3^2}T}^{-1} \ { {_2^1}T}^{-1}\ { {_1^0}T}^{-1}=\left[\begin{matrice}m_{11}&m_{12}&m_{13}&m_ {14}\\m_{21}&m_{22}&m_{23}&m_{24}\\m_{31}&m_{32}&m_{33}&m_{34}\\0&0&0&1\\\end{matrice}\ droite] 54J1 43J1 32J1 21J1 10J1= m11m21m310m12m22m320m13m23m330m14m24m341

dans

m 11 = s 1 s 4 c 5 - c 1 s 5 s 23 + c 1 c 4 c 5 c 23 m 12 = - c 1 s 4 c 5 - s 1 s 5 s 23 + s 1 c 4 c 5 c 23 m 13 = s 5 c 23 + c 4 c 5 s 23 m 31 = s 1 c 4 - c 1 s 4 c 23 m 32 = - c 1 c 4 - s 1 s 4 c 23 m 33 = - s 4 s 23 \begin{aligned} m_{11}&=s_1s_4c_5-c_1s_5s_{23}+c_1c_4c_5c_{23}\\ m_{12}&=-c_1s_4c_5-s_1s_5s_{23}+s_1c_4c_5c_{23}\\ m_{13} &=s_5c_{23}+c_4c_5s_{23}\\ m_{31}&=s_1c_4-c_1s_4c_{23}\\ m_{32}&=-c_1c_4-s_1s_4c_{23}\\ m_{33}&=-s_4s_ {23}\\ \end{aligné}m11m12m13m31m32m33=s1s4c5c1s5s23+c1c4c5c23=−c _1s4c5s1s5s23+s1c4c5c23=s5c23+c4c5s23=s1c4c1s4c23=−c _1c4s1s4c23=s4s23


  • Le processus de calcul se réfère à θ 4 \theta_4je4le processus de

Le résultat est le suivant

T_05_inv =
 
[
cos(Q5)*sin(Q1)*sin(Q4) - cos(Q1)*cos(Q2)*sin(Q3)*sin(Q5) - cos(Q1)*cos(Q3)*sin(Q2)*sin(Q5) - cos(Q1)*cos(Q4)*cos(Q5)*sin(Q2)*sin(Q3) + cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4)*cos(Q5), 
%=c5s1s4-c1c2s3s5-c1c3s2s5-c1c4c5s2s3+c1c2c3c4c5
%=c5s1s4-c1s5(c2s3+s2c3)+c1c4c5(c2c3-s2s3)
%=c5s1s4-c1s5s23+c1c4c5c23

cos(Q2)*cos(Q3)*cos(Q4)*cos(Q5)*sin(Q1) - cos(Q2)*sin(Q1)*sin(Q3)*sin(Q5) - cos(Q3)*sin(Q1)*sin(Q2)*sin(Q5) - cos(Q4)*cos(Q5)*sin(Q1)*sin(Q2)*sin(Q3) - cos(Q1)*cos(Q5)*sin(Q4), 
%=c2c3c4c5s1-c2s1s3s5-c3s1s2s5-c4c5s1s2s3-c1c5s4
%=s1c4c5(c2c3-s2s3)-s1s5(s2c3+c2s3)-c1c5s4
%=s1c4c5c23-s1s5s23-c1c5s4

cos(Q2)*cos(Q3)*sin(Q5) - sin(Q2)*sin(Q3)*sin(Q5) + cos(Q2)*cos(Q4)*cos(Q5)*sin(Q3) + cos(Q3)*cos(Q4)*cos(Q5)*sin(Q2), 
%=c2c3s5-s2s3s5+c2c4c5s3+c3c4c5s2
%=s5(c2c3-s2s3)+c4c5(c2s3+s2c3)
%=s5c23+c4c5s23

d4*sin(Q5) - a3*cos(Q4)*cos(Q5) + a2*sin(Q3)*sin(Q5) + d1*sin(Q2)*sin(Q3)*sin(Q5) - a2*cos(Q3)*cos(Q4)*cos(Q5) - d1*cos(Q2)*cos(Q3)*sin(Q5) + a1*cos(Q2)*sin(Q3)*sin(Q5) + a1*cos(Q3)*sin(Q2)*sin(Q5) - a1*cos(Q2)*cos(Q3)*cos(Q4)*cos(Q5) - d1*cos(Q2)*cos(Q4)*cos(Q5)*sin(Q3) - d1*cos(Q3)*cos(Q4)*cos(Q5)*sin(Q2) + a1*cos(Q4)*cos(Q5)*sin(Q2)*sin(Q3)
]

[
cos(Q1)*cos(Q4)*sin(Q2)*sin(Q3)*sin(Q5) - cos(Q1)*cos(Q2)*cos(Q5)*sin(Q3) - cos(Q1)*cos(Q3)*cos(Q5)*sin(Q2) - sin(Q1)*sin(Q4)*sin(Q5) - cos(Q1)*cos(Q2)*cos(Q3)*cos(Q4)*sin(Q5), 
cos(Q1)*sin(Q4)*sin(Q5) - cos(Q2)*cos(Q5)*sin(Q1)*sin(Q3) - cos(Q3)*cos(Q5)*sin(Q1)*sin(Q2) - cos(Q2)*cos(Q3)*cos(Q4)*sin(Q1)*sin(Q5) + cos(Q4)*sin(Q1)*sin(Q2)*sin(Q3)*sin(Q5), 
cos(Q2)*cos(Q3)*cos(Q5) - cos(Q5)*sin(Q2)*sin(Q3) - cos(Q2)*cos(Q4)*sin(Q3)*sin(Q5) - cos(Q3)*cos(Q4)*sin(Q2)*sin(Q5), 
d4*cos(Q5) + a2*cos(Q5)*sin(Q3) + a3*cos(Q4)*sin(Q5) + d1*cos(Q5)*sin(Q2)*sin(Q3) - d1*cos(Q2)*cos(Q3)*cos(Q5) + a1*cos(Q2)*cos(Q5)*sin(Q3) + a1*cos(Q3)*cos(Q5)*sin(Q2) + a2*cos(Q3)*cos(Q4)*sin(Q5) + a1*cos(Q2)*cos(Q3)*cos(Q4)*sin(Q5) + d1*cos(Q2)*cos(Q4)*sin(Q3)*sin(Q5) + d1*cos(Q3)*cos(Q4)*sin(Q2)*sin(Q5) - a1*cos(Q4)*sin(Q2)*sin(Q3)*sin(Q5)
]

[
cos(Q4)*sin(Q1) - cos(Q1)*cos(Q2)*cos(Q3)*sin(Q4) + cos(Q1)*sin(Q2)*sin(Q3)*sin(Q4),
%=c4s1-c1c2c3s4+c1s2s3s4
%=s1c4-c1s4(c2c3-s2s3)

sin(Q1)*sin(Q2)*sin(Q3)*sin(Q4) - cos(Q2)*cos(Q3)*sin(Q1)*sin(Q4) - cos(Q1)*cos(Q4),
%=s1s2s3s4-c2c3s1s4-c1c4
%=-c1c4-s1s4c23

-sin(Q2 + Q3)*sin(Q4),
sin(Q4)*(a3 + a1*cos(Q2 + Q3) + d1*sin(Q2 + Q3) + a2*cos(Q3))
]

[0,0,0,1]

Amenez les résultats ci-dessus dans (), en observant la matrice des deux côtés de l'équation, rendez les éléments (1,1) et (3,1) égaux entre eux pour obtenir :

nxm 11 + nym 12 + nzm 13 = c 6 nxm 31 + nym 32 + nzm 33 = s 6 n_xm_{11}+n_ym_{12}+n_zm_{13}=c_6 n_xm_{31}+n_ym_{32}+n_zm_{ 33}=s_6nxm11+nym12+nzm13=c6nxm31+nym32+nzm33=s6

Je ne laisserai pas le processus aller ici

Les solutions doivent

θ 6 = A tan 2 ( nxm 31 + nym 32 + nzm 33 , nxm 11 + nym 12 + nzm 13 ) \theta_6=\mathrm{Atan}2\left(n_xm_{31}+n_ym_{32}+n_zm_{33 },n_xm_{11}+n_ym_{12}+n_zm_{13}\right)je6=Atan 2( nxm31+nym32+nzm33,nxm11+nym12+nzm13)


  • Implémentation du code Matlab
%% theta6求解
m11=sin(theta1)*sin(theta4)*cos(theta5)-cos(theta1)*sin(theta5)*sin(theta2+theta3)+cos(theta1)*cos(theta4)*cos(theta5)*cos(theta2+theta3);
m12=-cos(theta1)*sin(theta4)*cos(theta5)-sin(theta1)*sin(theta5)*sin(theta2+theta3)+sin(theta1)*cos(theta4)*cos(theta5)*cos(theta2+theta3);
m13=sin(theta5)*cos(theta2+theta3)+cos(theta4)*cos(theta5)*sin(theta2+theta3);
m31=sin(theta1)*cos(theta4)-cos(theta1)*sin(theta4)*cos(theta2+theta3);
m32=-cos(theta1)*cos(theta4)-sin(theta1)*sin(theta4)*cos(theta2+theta3);
m33=-sin(theta4)*sin(theta2+theta3);

theta6_1=atan2(nx*m31+ny*m32+nz*m33,nx*m11+ny*m12+nz*m13);
theta6_2=atan2(-(nx*m31+ny*m32+nz*m33),-(nx*m11+ny*m12+nz*m13));

△ Solution de Pieper d'intersection à trois axes

[En attente de suppléments. . .

Reportez-vous au contenu dans "Introduction à la robotique"


△ Jugement multi-solutions de la cinématique inverse du robot

[En attente de suppléments. . .

peut faire référence à

→→→ [Il existe plusieurs solutions dans la solution inverse du robot, comment filtrer et juger chaque solution]


Matrice jacobienne robotique

△ Matrice jacobienne de la vitesse du robot

En ce qui concerne le contenu de la matrice jacobienne, pour être honnête, j'ai été troublé par le manuel et j'ai senti que je pouvais avoir le syndrome de la dyslexie. . . . Ensuite, j'ai trouvé ce tutoriel à la station B, il semble très simple et pratique
→→→ 【4-1 matrice jacobienne de la vitesse du robot】

Voici mes notes d'étude

○ Concepts liés à la matrice jacobienne

  • Concept de matrice jacobienne

La matrice jacobienne (Jacobian) est la relation de cartographie linéaire entre la vitesse spatiale de fonctionnement du robot et la vitesse spatiale articulaire, et elle peut également représenter la relation de transfert entre les deux espaces.

  • Représentation de la pose finale du robot

matrice de transformation homogène

insérez la description de l'image ici

  • Méthode de réglage de l'angle

La méthode de spécification de l'attitude en utilisant le système de coordonnées de référence relatif ou le système de coordonnées de mouvement relatif pour effectuer trois rotations consécutives

insérez la description de l'image ici

Normalement, l'angle de rotation autour du système de coordonnées est l'angle d'Euler, et la séquence doit être prise en compte, mais l'angle de rotation ici est considéré comme l'angle avec l'axe des coordonnées

insérez la description de l'image ici

Par conséquent, lors de l'utilisation de la méthode de réglage d'angle pour exprimer la pose terminale du robot, l'équation cinématique du robot peut être écrite comme

insérez la description de l'image ici


○ Prenons un robot planaire à deux liens comme exemple pour illustrer la matrice jacobienne

Robot à joint planaire à deux maillons comme indiqué sur la figure

insérez la description de l'image ici

La position finale du robot peut être exprimée comme

insérez la description de l'image ici

insérez la description de l'image ici

Différencier la formule modifiée pour obtenir

insérez la description de l'image ici

insérez la description de l'image ici

insérez la description de l'image ici

insérez la description de l'image ici

D'après la formule précédente, on obtient

insérez la description de l'image ici

alors

insérez la description de l'image ici


Je suppose que tu aimes

Origine blog.csdn.net/ooorczgc/article/details/131420424
conseillé
Classement