运动学逆解是指已知机器人末端位姿,求解各运动关节的位置,它是机器人运动规划和轨迹控制的基础。
以机械臂为例,其运动学逆解的求法主要有两类:数值解和解析解。
数值解法只能求出方程的特解,不能求出所有的解。它的优点是计算简单,不需要进行矩阵操作;缺点是由于使用了迭代法(如牛顿迭代),实时性较差。
这里主要介绍解析解法。
研究发现,如果串联机械臂在结构上满足下面两个充分条件中的一个,就会有解析解。这两个充分条件也被称为Pieper准则,即:
现代绝大多数工业机械臂都满足Pieper准则的第一个充分条件,即机械臂末端的三个关节的轴线相交于一点,该点通常称为腕点。
满足第二个充分条件的机器人较少,最典型的例子是SCARA机器人。之前我所在的公司应用SCARA构型的机器人进行工件的上下料。
假设机械臂满足Pieper准则的第一个充分条件,则机械臂的运动学方程可以写为 6 0 T = 3 0 T 6 3 T {^0_6}T={^0_3}T{^3_6}T 60T=30T63T其中, 3 0 T \ {^0_3}T 30T规定了腕点的位置, 6 3 T \ {^3_6}T 63T规定了腕部的方位。因此,运动学逆解也分为两步,先求解 θ 1 \theta_1 θ1、 θ 2 \theta_2 θ2、 θ 3 \theta_3 θ3(腕点位置),再求解 θ 4 \theta_4 θ4、 θ 5 \theta_5 θ5、 θ 6 \theta_6 θ6(腕部方位)。
将固连在机械臂腕部的三个坐标系{4}、{5}、{6}的原点设在腕点,则腕点相对于基坐标系{0}的位置为: 0 P 6 o = 0 P 4 o = 1 0 T 2 1 T 3 2 T 3 P 4 o {^0}P_6o= {^0}P_4o={^0_1}T{^1_2}T{^2_3}T {^3}P_4o 0P6o=0P4o=10T21T32T3P4o其中, 3 P 4 o \ {^3}P_4o 3P4o即为变换矩阵 4 3 T \ {^3_4}T 43T的第4列,即 0 P 4 o = 1 0 T 2 1 T 3 2 T [ a 3 − d 4 s i n θ 3 d 4 c o s θ 3 1 ] (n) {^0}P_4o={^0_1}T{^1_2}T{^2_3}T \left[ \begin{matrix} a_3\\ -d_4 sin\theta_3\\ d_4 cos\theta_3\\ 1 \end{matrix} \right] \tag{n} 0P4o=10T21T32T⎣⎢⎢⎡a3−d4sinθ3d4cosθ31⎦⎥⎥⎤(n)令 [ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] = 3 2 T [ a 3 − d 4 s i n θ 3 d 4 c o s θ 3 1 ] (n) \left[ \begin{matrix} f_1(\theta_3) \\ f_2(\theta_3) \\ f_3(\theta_3) \\ 1 \end{matrix} \right] \tag{n}={^2_3}T \left[ \begin{matrix} a_3\\ -d_4 sin\theta_3\\ d_4 cos\theta_3\\ 1 \end{matrix} \right] ⎣⎢⎢⎡f1(θ3)f2(θ3)f3(θ3)1⎦⎥⎥⎤=32T⎣⎢⎢⎡a3−d4sinθ3d4cosθ31⎦⎥⎥⎤(n)其中, f 1 ( θ 3 ) = a 3 c o s θ 3 + d 4 s i n θ 3 s i n α 3 + a 2 f_1(\theta_3)=a_3 cos\theta_3 +d_4 sin\theta_3sin\alpha_3 +a_2 f1(θ3)=a3cosθ3+d4sinθ3sinα3+a2 f 2 ( θ 3 ) = a 3 s i n θ 3 c o s α 2 − d 4 c o s θ 3 c o s α 2 s i n α 3 − d 4 s i n α 2 c o s α 3 − d 3 s i n α 2 f_2(\theta_3)=a_3 sin\theta_3 cos\alpha_2-d_4 cos\theta_3 cos\alpha_2 sin\alpha_3 -d_4 sin\alpha_2 cos\alpha_3 -d_3 sin\alpha_2 f2(θ3)=a3sinθ3cosα2−d4cosθ3cosα2sinα3−d4sinα2cosα3−d3sinα2 f 3 ( θ 3 ) = a 3 s i n θ 3 s i n α 2 − d 4 c o s θ 3 s i n α 2 s i n α 3 + d 4 c o s α 2 c o s α 3 + d 3 c o s α 2 f_3(\theta_3)=a_3 sin\theta_3 sin\alpha_2-d_4 cos\theta_3 sin\alpha_2 sin\alpha_3 +d_4 cos\alpha_2 cos\alpha_3 +d_3 cos\alpha_2 f3(θ3)=a3sinθ3sinα2−d4cosθ3sinα2sinα3+d4cosα2cosα3+d3cosα2 再令 [ g 1 ( θ 2 , θ 3 ) g 2 ( θ 2 , θ 3 ) g 3 ( θ 2 , θ 3 ) 1 ] = 2 1 T [ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] (n) \left[ \begin{matrix} g_1(\theta_2,\theta_3) \\ g_2(\theta_2,\theta_3) \\ g_3(\theta_2,\theta_3) \\ 1 \end{matrix} \right] \tag{n}={^1_2}T \left[ \begin{matrix} f_1(\theta_3) \\ f_2(\theta_3) \\ f_3(\theta_3) \\ 1 \end{matrix} \right] ⎣⎢⎢⎡g1(θ2,θ3)g2(θ2,θ3)g3(θ2,θ3)1⎦⎥⎥⎤=21T⎣⎢⎢⎡f1(θ3)f2(θ3)f3(θ3)1⎦⎥⎥⎤(n) 其中, g 1 ( θ 2 , θ 3 ) = c o s θ 2 f 1 − s i n θ 2 f 2 + a 1 g_1(\theta_2,\theta_3)=cos\theta_2 f_1-sin\theta_2 f_2 +a_1 g1(θ2,θ3)=cosθ2f1−sinθ2f2+a1 g 2 ( θ 2 , θ 3 ) = s i n θ 2 c o s α 1 f 1 + c o s θ 2 c o s α 1 f 2 − s i n α 1 f 3 − d 2 s i n α 1 g_2(\theta_2,\theta_3)=sin\theta_2 cos\alpha_1f_1 + cos\theta_2 cos\alpha_1f_2 -sin\alpha_1 f_3 - d_2sin\alpha_1 g2(θ2,θ3)=sinθ2cosα1f1+cosθ2cosα1f2−sinα1f3−d2sinα1 g 3 ( θ 2 , θ 3 ) = s i n θ 2 s i n α 1 f 1 + c o s θ 2 s i n α 1 f 2 + c o s α 1 f 3 + d 2 c o s α 1 g_3(\theta_2,\theta_3)=sin\theta_2 sin\alpha_1f_1 + cos\theta_2 sin\alpha_1f_2 +cos\alpha_1 f_3 + d_2cos\alpha_1 g3(θ2,θ3)=sinθ2sinα1f1+cosθ2sinα1f2+cosα1f3+d2cosα1 因此 0 P 4 o = 1 0 T [ g 1 g 2 g 3 1 ] (n) {^0}P_4o={^0_1}T\left[ \begin{matrix} g_1\\ g_2\\ g_3\\ 1 \end{matrix} \right] \tag{n} 0P4o=10T⎣⎢⎢⎡g1g2g31⎦⎥⎥⎤(n)由于坐标系{1}与基坐标系{0}原点重合、Z轴重合,仅存在绕Z轴的转动,因此, 1 0 T = [ cos θ 1 − sin θ 1 0 0 sin θ 1 cos θ 1 0 0 0 0 1 0 0 0 0 1 ] (n) {^0_1}T= \left[ \begin{matrix} \cos\theta_1 & -\sin\theta_1 & 0& 0 \\ \sin\theta_1 & \cos\theta_1 & 0& 0 \\ 0 & 0 & 1 & 0\\ 0& 0& 0& 1 \end{matrix} \right] \tag{n} 10T=⎣⎢⎢⎡cosθ1sinθ100−sinθ1cosθ10000100001⎦⎥⎥⎤(n)进一步可得, 0 P 4 o = [ x y z 1 ] = [ cos θ 1 − sin θ 1 0 0 sin θ 1 cos θ 1 0 0 0 0 1 0 0 0 0 1 ] [ g 1 g 2 g 3 1 ] = [ g 1 c o s θ 1 − g 1 s i n θ 1 g 1 s i n θ 1 + g 1 c o s θ 1 g 3 1 ] (n) {^0}P_4o=\left[ \begin{matrix} x\\ y\\ z\\ 1 \end{matrix} \right]=\left[ \begin{matrix} \cos\theta_1 & -\sin\theta_1 & 0& 0 \\ \sin\theta_1 & \cos\theta_1 & 0& 0 \\ 0 & 0 & 1 & 0\\ 0& 0& 0& 1 \end{matrix} \right]\left[ \begin{matrix} g_1\\ g_2\\ g_3\\ 1 \end{matrix} \right] =\left[ \begin{matrix} g_1cos\theta_1- g_1sin\theta_1\\ g_1sin\theta_1+g_1cos\theta_1\\ g_3\\ 1 \end{matrix} \right]\tag{n} 0P4o=⎣⎢⎢⎡xyz1⎦⎥⎥⎤=⎣⎢⎢⎡cosθ1sinθ100−sinθ1cosθ10000100001⎦⎥⎥⎤⎣⎢⎢⎡g1g2g31⎦⎥⎥⎤=⎣⎢⎢⎡g1cosθ1−g1sinθ1g1sinθ1+g1cosθ1g31⎦⎥⎥⎤(n)令 r = x 2 + y 2 + z 2 = g 1 2 + g 2 2 + g 3 2 r=x^2+y^2+z^2=g{^2_1}+g{^2_2}+g{^2_3} r=x2+y2+z2=g12+g22+g32 并且 z = g 3 z = g_3 z=g3代入 g 1 g_1 g1、 g 2 g_2 g2、 g 3 g_3 g3的表达式,可得: r = ( k 1 c o s θ 2 + k 2 s i n θ 2 ) 2 a 1 + k 3 r=(k_1 cos\theta_2 +k_2 sin\theta_2)2a_1 +k_3 r=(k1cosθ2+k2sinθ2)2a1+k3 z = ( k 1 s i n θ 2 − k 2 c o s θ 2 ) s i n α 1 + k 4 z =(k_1 sin\theta_2 - k_2 cos\theta_2)sin\alpha_1 +k_4 z=(k1sinθ2−k2cosθ2)sinα1+k4 其中,
k 1 ( θ 3 ) = f 1 k_1(\theta_3)=f_1 k1(θ3)=f1 k 2 ( θ 3 ) = − f 2 k_2(\theta_3)=-f_2 k2(θ3)=−f2 k 3 ( θ 3 ) = f 1 2 + f 2 2 + f 3 2 + a 1 2 + d 2 2 + 2 d 2 f 3 k_3(\theta_3)=f{^2_1}+f{^2_2}+f{^2_3} + a{^2_1} + d{^2_2} +2d_2 f_3 k3(θ3)=f12+f22+f32+a12+d22+2d2f3 k 4 ( θ 3 ) = f 3 c o s α 1 + d 2 c o s α 1 k_4(\theta_3)=f_3 cos\alpha_1 +d_2 cos\alpha_1 k4(θ3)=f3cosα1+d2cosα1 这里分三种情况进行讨论:
假设某坐标系分别依次绕动坐标系的Z轴、Y轴、Z轴转动 α \alpha α、 β \beta β、 γ \gamma γ角度,则旋转矩阵为 R = [ cos α − sin α 0 sin α cos α 0 0 0 1 ] [ cos β 0 sin β 0 1 0 − sin β 0 cos β ] [ cos γ − sin γ 0 sin γ cos γ 0 0 0 1 ] R=\left[ \begin{matrix} \cos\alpha& -\sin\alpha& 0 \\ \sin\alpha& \cos\alpha& 0 \\ 0 & 0 & 1 \end{matrix} \right] \left[ \begin{matrix} \cos\beta& 0 & \sin\beta\\ 0 & 1 & 0 \\ -\sin\beta& 0 & \cos\beta \end{matrix} \right]\left[ \begin{matrix} \cos\gamma& -\sin\gamma& 0 \\ \sin\gamma& \cos\gamma& 0 \\ 0 & 0 & 1 \end{matrix} \right] R=⎣⎡cosαsinα0−sinαcosα0001⎦⎤⎣⎡cosβ0−sinβ010sinβ0cosβ⎦⎤⎣⎡cosγsinγ0−sinγcosγ0001⎦⎤ 具体计算得: R = [ cos α c o s β c o s γ − s i n α s i n γ − c o s α c o s β s i n γ − s i n α c o s γ c o s α s i n β s i n α c o s β c o s γ + c o s α s i n γ − s i n α c o s β s i n γ + c o s α c o s γ s i n α s i n β − s i n β c o s γ s i n β s i n γ c o s β ] (n) R=\left[ \begin{matrix} \cos\alpha cos\beta cos\gamma - sin\alpha sin\gamma & -cos\alpha cos\beta sin\gamma-sin\alpha cos\gamma & cos\alpha sin\beta \\ sin\alpha cos\beta cos\gamma + cos\alpha sin\gamma & -sin\alpha cos\beta sin\gamma + cos\alpha cos\gamma & sin\alpha sin\beta \\ -sin\beta cos\gamma & sin\beta sin\gamma & cos\beta \end{matrix} \right] \tag{n} R=⎣⎡cosαcosβcosγ−sinαsinγsinαcosβcosγ+cosαsinγ−sinβcosγ−cosαcosβsinγ−sinαcosγ−sinαcosβsinγ+cosαcosγsinβsinγcosαsinβsinαsinβcosβ⎦⎤(n)令 R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] (n) R=\left[ \begin{matrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{matrix} \right] \tag{n} R=⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤(n)则 α \alpha α、 β \beta β、 γ \gamma γ可由以下公式计算得到。 β = a t a n 2 ( r 31 2 + r 32 2 , r 33 ) \beta=atan2(\sqrt{ r{^2_{31}} + r{^2_{32}}},r_{33}) β=atan2(r312+r322,r33) α = a t a n 2 ( r 23 , r 13 ) \alpha=atan2(r_{23},r_{13}) α=atan2(r23,r13) γ = a t a n 2 ( r 32 , − r 31 ) \gamma =atan2(r_{32},-r_{31}) γ=atan2(r32,−r31)
由 6 0 T = 3 0 T 6 3 T {^0_6}T={^0_3}T{^3_6}T 60T=30T63T得到 6 3 T = 3 0 T − 1 6 0 T {^3_6}T={^0_3}T^{-1}{^0_6}T 63T=30T−160T 再由齐次变换矩阵和旋转矩阵的关系得到 6 3 R {^3_6}R 63R。.
许多工业机器人腕部三关节配置成一个球面副,这种球面副可用z-y-z欧拉角的解出这三个关节角。因此利用上面介绍的方法可以求解出 θ 4 \theta_4 θ4( α \alpha α)、 θ 5 \theta_5 θ5( θ \theta θ)、 θ 6 \theta_6 θ6( γ \gamma γ)。
设六自由度机械臂的DH参数表如下。
i | a | α \alpha α | d | θ \theta θ |
---|---|---|---|---|
1 | 0 | 0 | 0 | θ 1 \theta_1 θ1 |
2 | -30 | -90 | 0 | θ 2 \theta_2 θ2 |
3 | 340 | 0 | 0 | θ 3 \theta_3 θ3 |
4 | -40 | -90 | 388 | θ 4 \theta_4 θ4 |
5 | 0 | 90 | 0 | θ 5 \theta_5 θ5 |
6 | 0 | -90 | 0 | θ 4 \theta_4 θ4 |
腕点在基坐标系{0}中的位置向量为 0 P 4 o = [ 381.3 151.8 19.5 ] (n) {^0}P_4o= \left[ \begin{matrix} 381.3 \\ 151.8\\ 19.5 \end{matrix} \right] \tag{n} 0P4o=⎣⎡381.3151.819.5⎦⎤(n) 在坐标系{3}的位置为 3 P 4 o = [ − 40 338 0 ] (n) {^3}P_4o= \left[ \begin{matrix} -40\\ 338\\ 0 \end{matrix} \right] \tag{n} 3P4o=⎣⎡−403380⎦⎤(n)坐标系{6}相对于基坐标系{0}的齐次变换矩阵为: [ 0 0.5736 0.8192 381.3 0 − 0.8192 0.5736 151.8 1 0 0 19.5 0 0 0 1 ] (n) \left[ \begin{matrix} 0& 0.5736& 0.8192& 381.3\\ 0& -0.8192& 0.5736& 151.8\\ 1& 0& 0& 19.5\\ 0& 0&0&1\\ \end{matrix} \right] \tag{n} ⎣⎢⎢⎡00100.5736−0.8192000.81920.573600381.3151.819.51⎦⎥⎥⎤(n)
先封装两个函数calT和getKG。
function Matrix_T = calT(DH_parameter, start_row, end_row)
% 输入参数为DH参数表,参数表有四列,参数表的行数是运动轴的个数。比如六自由度机械臂的参数表为6行4列
% 第一列是Z轴偏置;
% 第二列是Z轴偏转角;
% 第三列是X轴偏置;
% 第四列是X轴偏转角;
Matrix_T = eye(4);
for row_index = start_row + 1 : end_row
% 先绕X轴转theta_X, 再沿X轴平移trans_X,将两个坐标系的Z轴重合
theta_X = DH_parameter(row_index, 2);
trans_X = DH_parameter(row_index, 1);
T_X = rotX(theta_X) * transX(trans_X);
% 先绕Z轴转theta_Z, 再沿Z轴平移trans_Z,将两个坐标系的X轴重合
theta_Z = DH_parameter(row_index, 4);
trans_Z = DH_parameter(row_index, 3);
T_Z = rotZ(theta_Z) * transZ(trans_Z);
Matrix_T = Matrix_T * T_X * T_Z;
end
function [k1, k2, k3, k4, g1, g2, g3] = getKG(DH_parameter, P_3)
% 计算k和g
% DH_parameter: DH参数表
% P_3:腕点坐标系3中的位置
T_12 = calT(DH_parameter, 1, 2);
T_23 = calT(DH_parameter, 2, 3);
F_Matrix = T_23 * P_3;
G_Matrix = T_12 * F_Matrix;
f1 = F_Matrix(1, 1);
f2 = F_Matrix(2, 1);
f3 = F_Matrix(3, 1);
g1 = G_Matrix(1, 1);
g2 = G_Matrix(2, 1);
g3 = G_Matrix(3, 1);
a1 = DH_parameter(2, 1);
alpha1 = DH_parameter(2, 2);
d2 = DH_parameter(2, 3);
k1 = f1;
k2 = -f2;
k3 = f1^2 + f2^2 + f3^2 + a1^2 + d2^2 + 2*d2*f3;
k4 = f3*cos(alpha1) + d2*cos(alpha1);
下面是主程序。
syms theta1 theta2 theta3 theta4 theta5 theta6
DH_parameter = [
0, 0, 0, theta1;
-30, -90/180*pi, 0, theta2;
340, 0, 0, theta3;
-40, -90/180*pi, 338, theta4;
0, 90/180*pi,0, theta5;
0, -90/180*pi, 0, theta6;
];
P_3 = [-40; 338; 0; 1];
P_O = [381.3; 151.8; 19.5];
x = P_O(1, 1);
z = P_O(3, 1);
r = P_O'* P_O;
a1 = DH_parameter(2, 1);
alpha1 = DH_parameter(2, 2);
d2 = DH_parameter(2, 3);
[k1, k2, k3, k4, g1, g2, g3] = getKG(DH_parameter, P_3);
% 计算theta3
s = '(r-k3)^2/4/a1^2+(z-k4)^2/sin(alpha1)^2=k1^2+k2^2'
s = subs(s, 'r', r);
s = subs(s, 'z', z);
s = subs(s, 'a1', a1);
s = subs(s, 'alpha1', alpha1);
s = subs(s, 'k1', k1);
s = subs(s, 'k2', k2);
s = subs(s, 'k3', k3);
s = subs(s, 'k4', k4);
% 变量替换
s = subs(s, 'cos(theta3)', '(1-u^2)/(1+u^2)');
s = subs(s, 'sin(theta3)', '2*u/(1+u^2)');
% 求解非线性方程
u = solve(s, 'u');
theta3 = double(2 * atan(u));
计算得:
theta3 =
2.8628
2.6414
0.2646
0.0432
取 θ 3 = 0.0432 \theta_3=0.0432 θ3=0.0432(弧度)。
再计算 θ 2 \theta_2 θ2
theta3 = 0.0432;
% 计算theta2
s = 'r = (k1 * cos(theta2) + k2 * sin(theta2)) * 2 * a1 + k3';
s = subs(s, 'a1', a1);
s = subs(s, 'r', r);
s = subs(s, 'k1', k1);
s = subs(s, 'k2', k2);
s = subs(s, 'k3', k3);
s = subs(s, 'theta3', theta3);
% 变量替换
s = subs(s, 'cos(theta2)', '(1-u^2)/(1+u^2)');
s = subs(s, 'sin(theta2)', '2*u/(1+u^2)');
% 求解非线性方程
u = solve(s, 'u');
theta2 = double(2 * atan(u));
计算得:
theta2 =
-0.9058
-0.8272
取 θ 2 = − 0.9058 \theta_2=-0.9058 θ2=−0.9058(弧度)。
再计算 θ 1 \theta_1 θ1
theta3 = 0.0432;
theta2 = -0.9058;
s = 'x = cos(theta1) * g1 - sin(theta1) * g2';
s = subs(s, 'x', x);
s = subs(s, 'g1', g1);
s = subs(s, 'g2', g2);
s = subs(s, 'theta3', theta3);
s = subs(s, 'theta2', theta2);
% 变量替换
s = subs(s, 'cos(theta1)', '(1-u^2)/(1+u^2)');
s = subs(s, 'sin(theta1)', '2*u/(1+u^2)');
% 求解非线性方程
u = solve(s, 'u');
theta1 = double(2 * atan(u));
计算得:
theta1 =
0.3795
-0.3795
取 θ 1 = 0.3795 \theta_1=0.3795 θ1=0.3795(弧度)。
下面计算 θ 4 \theta_4 θ4、 θ 5 \theta_5 θ5、 θ 6 \theta_6 θ6。
先封装计算ZYZ欧拉角的函数
function [alpha, beta, gamma] = calZYZEulerInv(T_Matrix)
% 输入参数为DH参数表,参数表有四列,参数表的行数是运动轴的个数。比如六自由度机械臂的参数表为6行4列
% T_Matrix:齐次变换矩阵;
% alpha:第一次Z轴转角;
% beta:Y轴转角;
% gamma:第二次Z轴转角;
R = T_Matrix(1:3, 1:3);
r31 = R(3, 1);
r32 = R(3, 2);
r33 = R(3, 3);
r13 = R(1, 3);
r23 = R(2, 3);
beta = double(atan2(sqrt(r31^2 + r32^2), r33));
alpha = double(atan2(r23, r13));
gamma = double(atan2(r32, -r31));
下面是主程序。
% 坐标系{6}相对于坐标系{0}
T_06 = [
0, 0.5736, 0.8192, 381.3;
0, -0.8192, 0.5736, 151.8;
1, 0, 0, 19.5;
0, 0, 0,1];
DH_parameter(1, 4) = 0.3795; % theta1
DH_parameter(2, 4) = -0.9058; % theta2
DH_parameter(3, 4) = 0.0432; % theta3
T_03 = calT(DH_parameter, 0, 3); % 坐标系{3}相对于坐标系{0}
T_36 = T_03 \ T_06; % 坐标系{6}相对于坐标系{3}
[alpha, beta, gamma] = calZYZEulerInv(T_36);
计算得到结果。
alpha =
0.8626
beta =
1.3394
gamma =
-1.5708
至此,运动学逆解计算完成,六个关节角度分别为: θ 1 = 21. 7 ∘ \theta_1=21.7^\circ θ1=21.7∘、 θ 2 = − 51. 9 ∘ \theta_2=-51.9^\circ θ2=−51.9∘、 θ 3 = 2. 5 ∘ \theta_3=2.5^\circ θ3=2.5∘、 θ 4 = 49. 4 ∘ \theta_4=49.4^\circ θ4=49.4∘、 θ 5 = 76. 7 ∘ \theta_5=76.7^\circ θ5=76.7∘、 θ 6 = − 9 0 ∘ \theta_6=-90^\circ θ6=−90∘。