当前位置: 首页 > news >正文

梯度下降法求六轴机械臂逆向解

梯度下降法求六轴机械臂逆向解

一、几何基础

对于上述六轴机械臂的数学建模来说,可以构建一个六轴机械臂的运动学正逆解的数学模型,在一个直角坐标系中有如下旋转矩阵:

绕x轴旋转
R x ( θ x ) = [ 1 0 0 0 cos ⁡ θ x sin ⁡ θ x 0 − sin ⁡ θ x cos ⁡ θ x ] R_x(\theta_x) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & \sin\theta_x \\ 0 & -\sin\theta_x & \cos\theta_x \end{bmatrix} Rx(θx)= 1000cosθxsinθx0sinθxcosθx
(式3-1)

绕y轴旋转
R y ( θ y ) = [ cos ⁡ θ y 0 − sin ⁡ θ y 0 1 0 sin ⁡ θ y 0 cos ⁡ θ y ] R_y(\theta_y) = \begin{bmatrix} \cos\theta_y & 0 & -\sin\theta_y \\ 0 & 1 & 0 \\ \sin\theta_y & 0 & \cos\theta_y \end{bmatrix} Ry(θy)= cosθy0sinθy010sinθy0cosθy
(式3-2)

绕z轴旋转
R z ( θ z ) = [ cos ⁡ θ z sin ⁡ θ z 0 − sin ⁡ θ z cos ⁡ θ z 0 0 0 1 ] R_z(\theta_z) = \begin{bmatrix} \cos\theta_z & \sin\theta_z & 0 \\ -\sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(θz)= cosθzsinθz0sinθzcosθz0001
(式3-3)

在几何学中,任何一个坐标系 ,可以通过三个以上基础旋转,唯一变换到另一个同原点的坐标系 ,两个关系可以用按照变换的先后顺序左乘表示,如下所示。
[ X w ′ Y w ′ Z w ′ ] = R x ( θ x ) R y ( θ y ) R z ( θ z ) [ X w Y w Z w ] \begin{bmatrix} X_{w'} \\ Y_{w'} \\ Z_{w'} \end{bmatrix} = R_x(\theta_x) R_y(\theta_y) R_z(\theta_z) \begin{bmatrix} X_w \\ Y_w \\ Z_w \end{bmatrix} XwYwZw =Rx(θx)Ry(θy)Rz(θz) XwYwZw
(式3-4)

二、六轴机械臂正解模型

在三维空间里,如果有两个坐标系F0,F6,如果想知道P在F6系中的向量(或者点坐标)在F0系中是多少,可以表示如下:
P 0 = R 06 P 6 + t 0 P_0 = R_{06} P_6 + t_0 P0=R06P6+t0
​ (式3-5)
[ X 0 Y 0 Z 0 ] = [ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ] [ X 6 Y 6 Z 6 ] + [ d X 0 d Y 0 d Z 0 ] \begin{bmatrix} X_0 \\ Y_0 \\ Z_0 \end{bmatrix} = \begin{bmatrix} * & * & * \\ * & * & * \\ * & * & * \end{bmatrix} \begin{bmatrix} X_6 \ Y_6 \ Z_6 \end{bmatrix} + \begin{bmatrix} d_{X_0} \\ d_{Y_0} \\ d_{Z_0} \end{bmatrix} X0Y0Z0 = [X6 Y6 Z6]+ dX0dY0dZ0
(式3-6)

化为齐次形式为:
P 0 = T P 6 P_0 = T P_6 P0=TP6
(式3-7)
[ X 0 Y 0 Z 0 1 ] = [ ∗ ∗ ∗ d X 0 ∗ ∗ ∗ d Y 0 ∗ ∗ ∗ d Z 0 0 0 0 1 ] [ X 6 Y 6 Z 6 1 ] \begin{bmatrix} X_0 \\ Y_0 \\ Z_0 \\ 1 \end{bmatrix} = \begin{bmatrix} * & * & * & d_{X_0} \\ * & * & * & d_{Y_0} \\ * & * & * & d_{Z_0} \\ 0 & 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X_6 \\ Y_6 \\ Z_6 \\ 1 \end{bmatrix} X0Y0Z01 = 000dX0dY0dZ01 X6Y6Z61
(式3-8)

如上,机械臂的末端位姿有两部分组成:
( R 06 , t 0 ) (R_{06}, t_0) (R06,t0)
(式3-9)

可以理解为一个是末端原点的坐标 也就是式3-7中的T中的最后一列前三个,一个是旋转量 (或者可以用欧拉角序列、翻滚角-俯仰角-偏航角序列等表示)在机械臂中,可以控制的只有各个关节的电机角度,六轴就是六个电机的角度 ,通过设定六个电机角度,可以把机械臂的末端送到目标的位置。这个过程,数学上相当于机械臂基座的坐标系,通过一些列的旋转平移变换到了末端,由如下的这种机制:
T 60 = T 65 T 54 T 43 T 32 T 21 T 10 T_{60} = T_{65} T_{54} T_{43} T_{32} T_{21} T_{10} T60=T65T54T43T32T21T10
(式3-10)

两边取逆得到:
T 60 − 1 = T 10 − 1 T 21 − 1 T 32 − 1 T 43 − 1 T 54 − 1 T 65 − 1 T_{60}^{-1} = T_{10}^{-1} T_{21}^{-1} T_{32}^{-1} T_{43}^{-1} T_{54}^{-1} T_{65}^{-1} T601=T101T211T321T431T541T651
(式3-11)

即:
T 06 = T 01 T 12 T 23 T 34 T 45 T 56 T_{06} = T_{01} T_{12} T_{23} T_{34} T_{45} T_{56} T06=T01T12T23T34T45T56
(式3-12)

机械臂的建模就是基于类似这样的机制,学者Denavit和Hartenberg经过研究简化后,提出了机器人的DH(Denavit-Hartenberg)建模理论[44]。于是,DH建模所用到的基础旋转矩阵就变为:

绕x轴旋转
R x ( θ x ) = [ 1 0 0 0 cos ⁡ θ x − sin ⁡ θ x 0 sin ⁡ θ x cos ⁡ θ x ] R_x(\theta_x) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta_x & -\sin\theta_x \\ 0 & \sin\theta_x & \cos\theta_x \end{bmatrix} Rx(θx)= 1000cosθxsinθx0sinθxcosθx
​ (式3-13)

绕y轴旋转
R y ( θ y ) = [ cos ⁡ θ y 0 sin ⁡ θ y 0 1 0 − sin ⁡ θ y 0 cos ⁡ θ y ] R_y(\theta_y) = \begin{bmatrix} \cos\theta_y & 0 & \sin\theta_y \\ 0 & 1 & 0 \\ -\sin\theta_y & 0 & \cos\theta_y \end{bmatrix} Ry(θy)= cosθy0sinθy010sinθy0cosθy
(式3-14)

绕z轴旋转
R z ( θ z ) = [ cos ⁡ θ z − sin ⁡ θ z 0 sin ⁡ θ z cos ⁡ θ z 0 0 0 1 ] R_z(\theta_z) = \begin{bmatrix} \cos\theta_z & -\sin\theta_z & 0 \\ \sin\theta_z & \cos\theta_z & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(θz)= cosθzsinθz0sinθzcosθz0001
​ (式3-15)

三、六轴机械臂DH建模

在机器人学和机械臂设计领域,有两种常用的建模方法:标准Denavit-Hartenberg(SDH)和改进Denavit-Hartenberg(MDH)。为了简化建模过程并提高效率,本文采用MDH规则进行模型构建。MDH方法提供了一种优化的坐标系定义方式,它将坐标系定位在每个连杆的近端,而不是远端,这样做有助于简化计算和减少误差[45],其主要的原理是这样的,以遨博AUBO-i7H协作机器人为例:

  1. 先确定Z轴(各关节的电机转轴)

  2. 逐步从固定支座坐标系F0,确定X轴的方向,原则是X轴要是本坐标系Z轴和下一个坐标系Z轴的公垂线。如下图,X0轴应该垂直于Z0,和Z1,那么可以这么定:X0垂直于轴Z0和Z1,X1轴垂直于Z1和Z2,X2应该垂直于Z2和Z3…

在这里插入图片描述

图3-6 六轴机械臂各坐标系

  1. 根据右乘原理,MDH中规定当前关节i的参数先后的顺序是:

在这里插入图片描述

以上面的坐标系F1为例,四个参数代表是坐标F0系,先以X0轴旋转Alpha,再沿着X0轴方向移动a(负方向移动为负数),再以Z0为轴旋转Theta,最后沿着Z0方向移动d,最后得到F1坐标系。此处,Alpha=0,X0不需要旋转,a=0,沿着X0没有平移,Theta= ,沿着Z0逆时针旋转145度,X0轴转到了X1轴的位置,然后d=122mm,沿着Z0正方向移动了122mm,这样经过连续的旋转加平移后,就完成了关节1的参数建模。以此类推,逐步确定其余5组参数。所有的参数确定,如下图所示:

在这里插入图片描述

图3-7 六轴机械臂的坐标系变换传递

可得到MDH的基本变换矩阵为:
A i M D H = [ cos ⁡ θ i − sin ⁡ θ i 0 a i sin ⁡ θ i cos ⁡ α i cos ⁡ θ i cos ⁡ α i − sin ⁡ α i − d i sin ⁡ α i sin ⁡ θ i sin ⁡ α i cos ⁡ θ i sin ⁡ α i cos ⁡ α i d i cos ⁡ α i 0 0 0 1 ] A_iMDH = \begin{bmatrix} \cos\theta_i & -\sin\theta_i & 0 & a_i \\ \sin\theta_i\cos\alpha_i & \cos\theta_i\cos\alpha_i & -\sin\alpha_i & -d_i\sin\alpha_i \\ \sin\theta_i\sin\alpha_i & \cos\theta_i\sin\alpha_i & \cos\alpha_i & d_i\cos\alpha_i \\ 0 & 0 & 0 & 1 \end{bmatrix} AiMDH= cosθisinθicosαisinθisinαi0sinθicosθicosαicosθisinαi00sinαicosαi0aidisinαidicosαi1
(式3-16)

即可完成正向求解,所谓正向模型就是输入6个电机的旋转角度及各机械臂段的固定段长,可以得出末端的位姿,这里可以用位姿矩阵表示,。我们根据机械臂实际的尺寸,推导出的正向模型:

A M D H = A 1 M D H ⋅ A 2 M D H ⋅ A 3 M D H ⋅ A 4 M D H ⋅ A 5 M D H ⋅ A 6 M D H A_{MDH} = A_1MDH \cdot A_2MDH \cdot A_3MDH \cdot A_4MDH \cdot A_5MDH \cdot A_6MDH AMDH=A1MDHA2MDHA3MDHA4MDHA5MDHA6MDH
(式3-17)

根据参数可求得正向解模型如下,q1、q2、q3、q4、q5、q6为六个电机角度:

Matrix([[6.12323399573677e-17*(-(-1.0*(-(-6.12323399573677e-17*sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) - 1.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))cos(q5 + 1.5707963267949))sin(q6) + ((-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 1.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))sin(q5 + 1.5707963267949))cos(q6) + 1.0(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 7.49879891330929e-33(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 7.49879891330929e-33(-6.12323399573677e-17sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) + 6.12323399573677e-17sin(q1 - 4.71238898038469))sin(q6), 6.12323399573677e-17(-(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) - 1.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))cos(q5 + 1.5707963267949))cos(q6) - ((-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 1.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))sin(q5 + 1.5707963267949))sin(q6) + 1.0(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 7.49879891330929e-33(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 7.49879891330929e-33(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) + 6.12323399573677e-17sin(q1 - 4.71238898038469))cos(q6), -6.12323399573677e-17(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 6.12323399573677e-17((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 4.59169004331693e-49(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 4.59169004331693e-49(-6.12323399573677e-17sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 6.12323399573677e-17(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 1.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) + 7.49879891330929e-33sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) + 3.74939945665464e-33sin(q1 - 4.71238898038469), 102.5(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 102.5((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 7.68626888614202e-31(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 316(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + 316(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 7.68626888614202e-31(-6.12323399573677e-17sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 94.0(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 5.75583995599256e-15(-1.0(-(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - ((-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + (-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 1.22464679914735e-16sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 94.0(-1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*sin(q2 - 1.0471975511966) + cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) + 1.22464679914735e-16(-6.12323399573677e-17sin(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966) - sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) + 1.0sin(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) - 2.25335011043113e-14sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) - 1.25526296912604e-14sin(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) - 140.5sin(q1 - 4.71238898038469) + 368cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966)], [(6.12323399573677e-17(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))*sin(q5 + 1.5707963267949) + (((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949))cos(q6) + 6.12323399573677e-17(6.12323399573677e-17(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))*cos(q5 + 1.5707963267949) - (((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949))sin(q6) + 1.0(-1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 7.49879891330929e-33(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 7.49879891330929e-33(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) - 6.12323399573677e-17cos(q1 - 4.71238898038469))sin(q6), -(6.12323399573677e-17(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))*sin(q5 + 1.5707963267949) + (((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949))sin(q6) + 6.12323399573677e-17(6.12323399573677e-17(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))*cos(q5 + 1.5707963267949) - (((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949))cos(q6) + 1.0(-1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 7.49879891330929e-33(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 7.49879891330929e-33(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) - 6.12323399573677e-17cos(q1 - 4.71238898038469))cos(q6), -6.12323399573677e-17((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 6.12323399573677e-17((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 4.59169004331693e-49(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 4.59169004331693e-49(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 6.12323399573677e-17(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 1.0(((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949) + 1.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) - 7.49879891330929e-33cos(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) - 3.74939945665464e-33cos(q1 - 4.71238898038469), 102.5((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + 102.5((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 316(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))sin(q3 - 1.5707963267949) - 7.68626888614202e-31(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) + 7.68626888614202e-31(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) + 316(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))cos(q3 - 1.5707963267949) - 5.75583995599256e-15(-((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*sin(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.22464679914735e-16cos(q1 - 4.71238898038469)*cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 94.0(((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*sin(q3 - 1.5707963267949) + (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0((-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)*cos(q2 - 1.0471975511966))*cos(q3 - 1.5707963267949) - (sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)*cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) - 1.22464679914735e-16sin(q4 + 1.5707963267949)cos(q1 - 4.71238898038469))sin(q5 + 1.5707963267949) + 94.0(1.22464679914735e-16(-sin(q1 - 4.71238898038469)sin(q2 - 1.0471975511966) + 6.12323399573677e-17cos(q1 - 4.71238898038469)cos(q2 - 1.0471975511966))cos(q3 - 1.5707963267949) - 1.22464679914735e-16(sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 6.12323399573677e-17sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469))sin(q3 - 1.5707963267949) - 1.0cos(q1 - 4.71238898038469))cos(q5 + 1.5707963267949) + 368sin(q1 - 4.71238898038469)cos(q2 - 1.0471975511966) + 2.25335011043113e-14sin(q2 - 1.0471975511966)cos(q1 - 4.71238898038469) + 1.25526296912604e-14cos(q1 - 4.71238898038469)cos(q4 + 1.5707963267949) + 140.5cos(q1 - 4.71238898038469)], [6.12323399573677e-17(-(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)*cos(q3 - 1.5707963267949) - 6.12323399573677e-17)cos(q5 + 1.5707963267949))sin(q6) + ((-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 6.12323399573677e-17)sin(q5 + 1.5707963267949))cos(q6) + 1.0(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0(-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) + 7.49879891330929e-33sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 7.49879891330929e-33cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949) - 3.74939945665464e-33)sin(q6), 6.12323399573677e-17(-(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 6.12323399573677e-17)cos(q5 + 1.5707963267949))cos(q6) - ((-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 6.12323399573677e-17(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 1.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 6.12323399573677e-17)sin(q5 + 1.5707963267949))sin(q6) + 1.0(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 1.0(-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) + 7.49879891330929e-33sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 7.49879891330929e-33cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949) - 3.74939945665464e-33)cos(q6), -6.12323399573677e-17(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - 6.12323399573677e-17(-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) + 1.0(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 6.12323399573677e-17(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 1.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 6.12323399573677e-17)cos(q5 + 1.5707963267949) + 4.59169004331693e-49sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 4.59169004331693e-49cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 4.59169004331693e-49cos(q4 + 1.5707963267949) - 2.29584502165847e-49, 102.5(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) + 102.5(-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) + 94.0(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949))sin(q4 + 1.5707963267949) + (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))cos(q4 + 1.5707963267949) - 7.49879891330929e-33sin(q4 + 1.5707963267949))sin(q5 + 1.5707963267949) - 5.75583995599256e-15(-1.0(1.0sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.0cos(q2 - 1.0471975511966)*cos(q3 - 1.5707963267949))cos(q4 + 1.5707963267949) - (-1.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 1.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966))sin(q4 + 1.5707963267949) - 7.49879891330929e-33cos(q4 + 1.5707963267949))cos(q5 + 1.5707963267949) + 94.0(1.22464679914735e-16sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 1.22464679914735e-16cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 6.12323399573677e-17)cos(q5 + 1.5707963267949) - 7.68626888614202e-31sin(q2 - 1.0471975511966)sin(q3 - 1.5707963267949) - 316.0sin(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) - 368.0sin(q2 - 1.0471975511966) - 316.0sin(q3 - 1.5707963267949)cos(q2 - 1.0471975511966) + 7.68626888614202e-31cos(q2 - 1.0471975511966)cos(q3 - 1.5707963267949) + 7.68626888614202e-31cos(q4 + 1.5707963267949) + 122.0], [0, 0, 0, 1]])

四、机械臂逆向解

​ 六轴机械臂的逆向解是指给定机械臂末端执行器(例如夹爪或工具头)在空间中的位置和姿态(位姿),求解机械臂各关节的角度,使得末端执行器能够达到这个特定的位姿。简而言之,逆向解就是从末端执行器的位姿反推关节角度的过程。在实际应用中,逆向解非常重要,因为通常我们关心的是机械臂末端执行器需要到达的位置和姿态,而不是关节的具体运动。逆向解使得机械臂能够根据任务需求来规划其运动路径。逆向解的求解其实就是正向模型设置6个未知数,然后根据正向方程解未知数,过程通常涉及到线性方程组或非线性方程组的求解。逆向解的求解可以是解析解或数值解。解析解是指通过数学公式直接求解得到的精确解,而数值解则需要通过迭代算法如梯度下降法逐步逼近解。解析解通常更稳定,但并不是所有机械臂模型都能得到解析解,有时需要使用数值方法来求解。这里用python开源库pytorch的梯度下降法来求解,可以很方便地构建张量计算图并运用反向传播的思想,调用电脑GPU加快求解速度。

在这里插入图片描述

图3-8 使用梯度下降法求六轴机械臂的逆解,误差图

在这里插入图片描述

图3-9 六个电机角度逆解

可以求得机械臂六个电机的转动角度:
q 1 = 2.1372 r a d , q 2 = 0.2629 r a d , q 3 = 0.2045 r a d , q 4 = 0.8672 r a d , q 5 = 2.1497 r a d , q 6 = − 0.2768 r a d q_1=2.1372rad,\\ q_2=0.2629rad,\\ q_3=0.2045rad,\\ q_4=0.8672rad,\\ q_5=2.1497rad,\\ q_6=-0.2768rad q1=2.1372radq2=0.2629radq3=0.2045radq4=0.8672radq5=2.1497radq6=0.2768rad
据此求出与目标点的误差为:
d x = 0.042694091796875 m m , d y = 0.00885009765625 m m , d z = 0.01141357421875 m m , dx=0.042694091796875mm,\\ dy=0.00885009765625mm,\\ dz=0.01141357421875mm,\\ dx=0.042694091796875mmdy=0.00885009765625mmdz=0.01141357421875mm
可以看出误差很小,基本可以满足大部分工业场景;在实际应用中,逆向解的求解可能面临多个解的问题,因为机械臂可能有多个不同的关节角度配置可以使得末端执行器达到相同的位姿。此外,逆向解的求解还可能遇到奇异点问题,即某些关节角度配置使得机械臂的某些部分相互交叉或无法达到目标位姿。逆向解在机器人学、自动化、制造业等领域有着广泛的应用,是机械臂控制和路径规划的基础。

相关文章:

梯度下降法求六轴机械臂逆向解

梯度下降法求六轴机械臂逆向解 一、几何基础 对于上述六轴机械臂的数学建模来说,可以构建一个六轴机械臂的运动学正逆解的数学模型,在一个直角坐标系中有如下旋转矩阵: 绕x轴旋转 R x ( θ x ) [ 1 0 0 0 cos ⁡ θ x sin ⁡ θ x 0 − …...

【生成模型之九】Paint by Example: Exemplar-based Image Editing with Diffusion Models

论文:Paint by Example: Exemplar-based Image Editing with Diffusion Models 代码:https://github. com/Fantasy-Studio/Paint-by-Example 为了实现高质量的基于样本的图像编辑,我们引入了四项关键技术,即利用图像先验、强数据-mask增强、内容瓶颈CLIP class token和无…...

集成RabbitMQ+MQ常用操作

文章目录 1.环境搭建1.Docker安装RabbitMQ1.拉取镜像2.安装命令3.开启5672和15672端口4.登录控制台 2.整合Spring AMQP1.sun-common模块下创建新模块2.引入amqp依赖和fastjson 3.新建一个mq-demo的模块1.在sun-frame下创建mq-demo2.然后在mq-demo下创建生产者和消费者子模块3.查…...

PVE虚拟化平台之开启虚拟机IP显示方法

PVE虚拟化平台之开启虚拟机IP显示方法 一、PVE平台介绍1.1 PVE简介1.2 PVE特点1.3 PVE主要使用场景二、检查PVE环境2.1 环境介绍2.2 检查PVE和虚拟机状态三、虚拟机开启Qemu代理四、Linux虚拟机安装Guest-Agent4.1 进入虚拟机VNC控制台4.2 查看虚拟机IP五、Windows虚拟机安装Gu…...

子Shell及Shell嵌套模式

子Shell 概念 Shell子进程,Shell脚本是从上至下,从左至右依次执行每一行的命令及语句的,即执行完一个命令之后再执行下一个。如果在shell脚本中遇到子脚本(即脚本嵌套),就会先执行子脚本的内容,完成后再返回父脚本继…...

Onedrive精神分裂怎么办(有变更却不同步)

Onedrive有时候会分裂,你在本地删除文件,并没有同步到云端,但是本地却显示同步成功。 比如删掉了一个目录,在本地看已经删掉,onedrive显示已同步,但是别的电脑并不会同步到这个删除操作,在网页版…...

【gym】给定的强化学习环境简介(二)

文章目录 环境介绍一 box2dbipedal_walkercar_dynamicscar_racinglunar_lander 二、 classic_controlacrobotCartPolecontinuous_mountain_carmountain_carpendulum 三、toy_textblackjackcliffwalkingfrozentaxi 四、mujocoAnt:HalfCheetah:Hopper&…...

ctfhub disable_functions关卡

1.CTFHub Bypass disable_function —— LD_PRELOAD 2.CTFHub Bypass disable_function —— ShellShock 3.CTFHub Bypass disable_function —— Apache Mod CGI 4.CTFHub Bypass disable_function —— 攻击PHP-FPM 5.CTFHub Bypass disable_function —— GC UAF 6.CTFHub B…...

SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持

可以看到springai对多模态的支持. 同样去创建一个项目 也是跟之前的项目一样,修改版本1.0.0 这里 然后修改仓库地址,为springai的地址 然后开始写代码...

2025年我国网络安全发展形势展望

展望2025年,我国网络安全产业有望迎来新的快速增长阶段,零信任安全架构将在各行各业加快应用落地,数据安全技术攻关和应用进程加快,关键基础设施安全能力不断提升。同时,也应关注国家级网络对抗风险加剧、网络安全产业…...

【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 一、漏洞概述 1.1漏洞简介 漏洞名称:BIG-IP Next Central Manager OData 注入漏洞漏洞编号:CVE-2024-21793漏洞威胁等级:超危影响范围:BIG-IP Next Central Manage…...

GitLab部署到阿里云服务器上

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。 一、安装 1.创建一…...

VTK知识学习(27)- 图像基本操作(二)

1、图像类型转换 1)vtkImageCast 图像数据类型转换在数字图像处理中会频繁用到。一些常用的图像算子(例如梯度算子)在计算时出于精度的考虑,会将结果存储为float或double类型,但在图像显示时,一般要求图像为 unsigned char 类型,…...

MyBatis如何处理延迟加载?

大家好,我是锋哥。今天分享关于【MyBatis如何处理延迟加载?】面试题。希望对大家有帮助; MyBatis如何处理延迟加载? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 支持 延迟加载(Lazy Loading&am…...

前端网络之【浏览器跨域问题分析与解决方案】

文章目录 同源策略同源与异源跨域的限制场景解决方案 CORS 请求分类 简单请求预检请求 注意点一 【关于Cookie】注意点二 【关于跨域获取响应头】 JSONP 基本流程 代理服务器 如何选择对应方案 同源策略 **同源策略是一套浏览器的安全策略机制,当一个源的文档和脚…...

LeetCode:3218. 切蛋糕的最小总开销 I(贪心 Java)

目录 3218. 切蛋糕的最小总开销 I 题目描述: 实现代码与解析: 贪心 原理思路: 3218. 切蛋糕的最小总开销 I 题目描述: 有一个 m x n 大小的矩形蛋糕,需要切成 1 x 1 的小块。 给你整数 m ,n 和两个数…...

前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案

目录 场景还原 相关代码开发者工具 - 网络请求记录 问题排查 定位改bug 总结 场景还原 我在前端使用axios接收后端xlsx表格文件流并下载,xlsx文件能够下载成功,但是打开却显示文件无法打开 相关代码 请求API封装:Content–Type以及responseType经核…...

PageRank Web页面分级算法 HNUST【数据分析技术】(2025)

1.理论知识 算法原理PageRank 通过网络浩瀚的超链接关系来确定一个页面的等级。 Google 把从 A 页面到 B 页面的链接解释为A页面给B页面投票, Google 根据投票来源(甚至来源的来源, 即链接到A页面的页面)和投票目标的等级来决定新…...

数字IC前端学习笔记:脉动阵列的设计方法学(四)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 引言 脉动结构(也称为脉动阵列)表示一种有节奏地计算并通过系统传输数据的处理单元(PEs)网络。这些处理单元有规律地泵入泵出数据以保持规则…...

对话 Project Astra 研究主管:打造通用 AI 助理,主动视频交互和全双工对话是未来重点

Project Astra 愿景之一:「系统不仅能在你说话时做出回应,还能在持续的过程中帮助你。」 近期,Google DeepMind 的 YouTube 频道采访了 Google DeepMind 研究主管格雷格韦恩 (Greg Wayne)。 格雷格韦恩的研究工作为 DeepMind 的诸多突破性成…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...