当前位置: 首页 > 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 的诸多突破性成…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

docker 部署发现spring.profiles.active 问题

报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

安卓基础(aar)

重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...

抽象类和接口(全)

一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

Unity中的transform.up

2025年6月8日,周日下午 在Unity中,transform.up是Transform组件的一个属性,表示游戏对象在世界空间中的“上”方向(Y轴正方向),且会随对象旋转动态变化。以下是关键点解析: 基本定义 transfor…...