您的当前位置:首页正文

机械臂论文

来源:个人技术集锦


机械臂运动的指令序列模型

摘要

本文研究的是在给定机械臂的运动方式和各参数的情况下,求机械臂运动的指令问题,而机械臂的指令是通过旋转角来确定的,所以本题求解的关键在于如何在机械臂自身和运动路径的约束下,求出机械臂每次运动前后,各关节的最佳旋转角度,以保证指令合理,便捷,有效。本文采用的是图形变换的平移和旋转所得的变换矩阵来求解角度变化量间关系,然后用优化模型求解出最优指令。

在机械臂在两个点间运动的问题中,我们以机械臂各关节转动次数最少作为规划目标,对机械臂的运动路径进行优化。其中,主要考虑的约束是以五个关节F、B、C、G、D的角度增量转化的矩阵通过三维图形变换的平移和旋转关系得到的变化矩阵对目标轨迹的约束,以及各关节本身转动范围的限制和每次尽可能多地转动2。此外文章还引入指令精度的概念,来描述机械臂完成动作的精确性。当目标点确定时,运用变换矩阵模型Ⅰ和优化模型Ⅱ来求解,得出各关节的转动次数、转动角度和指令精度。

在机械臂沿空间曲线运动问题中,由于机械臂各关节转动的角度是离散的,我们把问题转化成指尖沿一系列离散点的运动问题。先用MATLAB预选取出一定数量的坐标点,机械臂的运动可视为指尖在预取的各点间的移动,从一点到下一点的算法可由问题一中的模型求解。在用MATLAB取出这些点,为了保证精度,假设各点的选取密度与该点的曲率,于是在曲率大时取点的密度多些,曲率小取点稀疏,然后采用二分搜索法对预选点进行合理性分析,最后确定出最终选取的曲线上的点。将预选的点平滑连接起来就得到机械臂的近似运动路径,从而求解出指尖沿指定空间曲线移动时指令序列。

在蔽障问题中,将机械臂看成空间折线段,添加折线段方程与障碍物外表面方程不相交的约束条件,运用前两问的方法即可求出最佳指令序列。

最后,分析机械臂指尖能达到目标点的误差和精度,从而给出对机械臂连杆长度和各关节的最大转动角度的参考设计方法的建议。

关键词 变换矩阵;优化模型;指令精度;二分搜索法

1 / 14

一 、问题的重述

某型号关节式机器人共有6个自由度,分别由六个旋转轴(关节)实现,使机器人的末端可以灵活地在三维空间中运动。为了便于分析和计算,我们对机器人结构进行简化,简化后的数据见图2和参数表1。这里用七条直线段表示机器人的七个连杆,连杆之间用所谓的旋转关节连接,已知AB=140mm,BC=255mm,CD=255mm,DE=65mm。根据旋转的方向分成两类关节,旋转轴分平行连杆和垂直连杆两种,前者如笔帽的转动方向,后者如摇柄的转动方向。每一个关节对应一个角度i,这个角度表示前一个连杆方向到后一个连杆方向转角(对于B,C,D),连杆方向为AB、BC、CD、DE,或者相对于初始位置的转角(对于F,G,H),假设机器人的初始位置是在一个平面上的(y-z 平面)。为了使机器人运动得更加灵活允许关节的转角超过360°的。

机器人关于六个自由度的每一个组合(1,2,3,4,5,6),表示机械臂的一个姿态,显然每个姿态确定顶端指尖的空间位置X:f()X。假定机器人控制系统只能够接收改变各个关节的姿态的关于连杆角度的增量指令(机器指令)P(1,2,3,4,5,6),使得指尖移动到空间点X′,其中各个增量i只能取到-2, -1.9, -1.8, ┅,1.8, 1.9, 2这41个离散值(即精度为0.1°,绝对值不超过2°)。通过一系列的指令序列P1,P2,P3,,Pn可以将指尖依次到达位置X0,X1,┅,Xn,则称X0,X1,┅,Xn为从指尖初始位置X0到达目标位置Xn的一条路径(运动轨迹)。根据具体的目标和约束条件计算出合理、便捷、有效的指令序列是机器人控制中的一个重要问题。我们约定直角坐标系的原点设在图2的A点,z轴取为AB方向,x轴垂直纸面而y轴则在基座所固定的水平台面上。

1.根据市场需求,机械臂制造厂打算为他们的产品研发一个软件系统,能够直接将用户的运动命令自动转换成机器指令序列。即为这类机器人设计一个通用的算法,用来计算执行下面指定动作所要求的指令序列,并要求对你们算法的适用范围、计算效率以及你们的近似算法所造成的误差和增量i离散取值所造成的误差大小进行讨论(不考虑其他原因造成的误差):

①.已知初始姿态Φ0和一个可达目标点的空间位置(Ox, Oy, Oz),计算指尖到达目标点的指令序列。

②.要求指尖沿着预先指定的一条空间曲线x = x(s), y = y(s), z = z(s), a ≦ s ≦b 移动,计算满足要求的指令序列。

③.在第①个问题中,假设在初始位置与目标位置之间的区域中有若干个已知大小、形状、方向和位置的障碍物,要求机械臂在运动中始终不能与障碍物相碰,否则会损坏机器。这个问题称机械臂避碰问题,要求机械臂末端在误差范围内到达目标点并且整个机械臂不碰到障碍物(机械臂连杆的粗细自己设定)。 2. 应用你的算法就下面具体的数据给出计算结果,并将计算结果以三组六维的指令序列(每行6个数据)形式存放在Excel文件里,文件名定为answer1.xls,

2 / 14

answer2.xls和answer3.xls。

假设在机械臂的旁边有一个待加工的中空圆台形工件,上部开口。工件高180mm,下底外半径168mm,上底外半径96mm,壁厚8mm。竖立地固定在xy-平面的操作台上,底部的中心在 (210, 0, 0)。 ①.要求机械臂(指尖)从初始位置移动到工具箱所在位置的 (20,-200, 120) 处,以夹取要用的工具。

②.如果圆台形工件外表面与平面 x = 2 z 的交线是一条裂纹需要焊接,请你给出机械臂指尖绕这条曲线一周的指令序列。

③.有一项任务是在工件内壁点焊四个小零件,它们在内表面上的位置到xy平面的投影为(320,-104)、(120,106)、(190,-125)和(255,88)。要求机械臂从圆台的上部开口处伸进去到达这些点进行加工,为简捷起见,不妨不计焊条等的长度,只考虑指尖的轨迹。

3.制造厂家希望通过修改各条连杆的相对长度以及各关节最大旋转角度等设计参数提高机械臂的灵活性和适用范围。请根据你们的计算模型给他们提供合理的建议。

二、问题分析

本文研究的主要内容是机械臂指尖可到达空间点和沿指定路径行走以及蔽障问题的指令序列。根据题意,机器人的控制系统只能够接收改变各个关节的姿态的关于连杆角度的增量指令,则可以以各个关节转动的次数为决策变量,建立优化模型。此外我们发现本文所要求解的问题是层层深入的,机械臂指尖可看成一点,首先是要求解点到点的变化,然后是轨迹线的求解,最后是机械臂指尖轨迹在空间避开障碍物。轨迹线可看成是许多点的集合,由此我们可以看出,解决问题的关键在建立空间中点到点最优路径模型。

而在建立各关节转动的角度与指尖坐标的对应关系时,可以利用图形变换的原理建立指尖初始点与新坐标点的变换矩阵。

问题1:对于一个目标点的情况,以指尖移动的步数最少为目标,以各关节相对于初始位置转次数为决策变量建立优化模型。约束条件包括各关节转角的变化需在上下限之间、指尖最终位置的误差在一定的范围。以此为基础,当指尖沿着预先指定的一条空间曲线移动时,先求出该曲线的方程,然后按照曲率大的地方取点多,曲率小的地方取点少的原则取出一系列的坐标点,用点与点之间的连线来代替原来的曲线。将取出的点代入到前面的模型中求解,可以得出到每个点各关节所要转过的角度,相邻角度之间的差值就是从曲线上一点到下一点的角度增量,由此算出相应的指令序列。当机械臂要绕过障碍物时,首先根据目标点以及障碍物的位置、大小、形状和方向确定指尖的移动路径。然后在路径上取出有限个点,根据第二步的模型求解可得出指令序列。

问题2:可视为问题一的特殊情况,只需将给出的相应的数据代入问题1所建立的模型求解即可。

问题3:当改变连杆的相对长度以及各关节的转角范围时,机械臂的灵活性和适应性会发生改变,为了最大程度地发挥机械臂的作用,在合理的杆长和转角范围内,我们根据工作范围尽量大,指令精度尽量高原则,分析结果并提出合理

3 / 14

的建议。

三 模型假设

1. 假设机器人控制系统只接收改变各个关节的姿态的关于连杆角度增量指令。

2. 假设机器人指令运行效率与指令的数目成正相关。 3. 假设机器人机械臂能正常工作。

四 符号说明

0 表示机械臂的初始状态

mi 表示达到目标位置机械臂需要改变角度的次数 ai(i1,2,3,4,5) 表示第i关节要达到目标点角度

i(i1,2,3,4,5) 表示第i关节机械臂所能达到角度

pi 表示第i关节的能达到目标点的精度 ai 表示第i关节的角度的变化量 ttF.tB.tC.tGtD 表示F,B,C,G,D5个关节的变换矩阵

ki{0,1} 表示第i个关节的转动2后余下的度数需要转动次数

i 表示在曲线上所取的第i个点的曲率。

五、模型的建立与求解

5.1.1

模型Ⅰ:位置变换模型

通过问题的初步分析,我们已经对一些相关因数间的联系有了一些明确的了解,对模型应该具备的特点也有了一个大致轮廓。机器人的控制系统只能够接收

4 / 14

改变各个关节的姿态的关于连杆角度的增量指令,所以各个关节角度增量求解是个关键问题。由于对E点的空间位置由F、B、C、G、D关节的转角唯一确定,与

1]表示移动前E点的位置,用H关节的转角无关。我们用向量e[x,y,z,e[x',y',z',1]表示移动后E点的位置,我们用变换矩阵来描述这种变换,即

[x',y',z',1][x,y,z,1].(T.T.T.T1].T,其中T为一个四行四列的矩阵。 1234)[x,y,z,在本问题中,E点只有平移和旋转两种移动形式:

在三维坐标中,图形进行平移时,设Lx,Ly,Lz是图形在三个坐标方向上的移动量,则有公式:x'xLx,y'yLy,z'zLz 写成矩阵运算表达为:

00010100 [x',y',z',1][x,y,z,1]0010LLL1yzx当图形绕x轴旋转时的旋转公式为

x'x,y'ycoszsin,z'ysinzcos,写成矩阵运算的表达为:

10[x',y',z',1][x,y,z,1].000cossin000sin0 cos001当一个图形绕任意点旋转时,首先将各个坐标点平移到原点上,然后进行在

原点处进行绕x轴旋转变换,最后再平移到对应的坐标点上。

(0,0,140)现在我们以关节B为例计算转换矩阵,关节B的空间坐标为。首先

我们将关节B平移到坐标原点上,得到矩阵tB1:

tB11 0 0 00 1 0 0, 0 0 1 00 0 - 140 1于是原点将关节B进行旋转,旋转角度为a2,得到旋转后的矩阵为tB2:

5 / 14

tB21 0 0 0 0 cos(a2) sin(a2) 0  0 - sin(a2) cos(a2) 0 0 0 0 1 (0,0,140)再将在原点的B'平移到中,得到平移后的矩阵为tB3:

tB30  1 0 0  0 1 0 0   0 0 1 0  0 0 140 1于是关节B的转换矩阵为tB:

0 0 0 1 0 0 0 1 0 0 01 0  0 cos(a2) 0 1 0 0 sin(a2) 01 0 0 .. tBt20 0 1 0 0 - sin(a2) cos(a2) 0 0 0 1 0 0 0 - 140 1 0 0 0 0 0 140 1同理可求解出关节F,C,G,D的变换矩阵,五个关节的转换矩阵为

TtF.tB.tC.tGtD

然后用Mathematica软件对T矩阵进行运算化简,各变换矩阵见附录1。

当已知初始姿态Φ0=[xo,yo,zo,1]和 一 个可 达 目 标 点 的 空间位置Φ1=[x1,y1,z1,1]时,即可求出相对应的参数a1,a2,a3,a4,a5.此即可构成指令P=(a1,a2,a3,a4,a5)。

5.1.2

模型Ⅱ:转动次数优化模型 (一)目标函数的建立

在模型中,我们通过控制机械的各个关节的转角i来使机械手的手指即E点到达目标点x,y,z。机械手各个关节通过转过动一定的次数ni而到达预定目标点,ni就是我们此次模型的优化变量。而机械手的转角增量i只能取到-2, -1.9, -1.8, ┅,1.8, 1.9, 2这41个离散值(即精度为0.1°绝对值不超过2°),

6 / 14

在保证精确度的同时,为了转动次数的优化,我们希望关节的转角增量最多的取2。

那么机械转动2的次数mi就是i对2取整,余数Wi的转动次数Ki,若

Wi0.1,Ki=1,若Wi0.1,Ki=0。转动次数nimiki,即我们此次

的优化目标就是在保证精度的同时减少ni。 目标函数为ni

i15式中,ni表示第i个关节每次转动的次数,mi表示第i个关节的转动2的次数,Ki表示余下的度数需要转动次数,取0或1。 (二)约束条件

(1)各个关节的转角i,必须符合模型中的上下限,即

iLi,(i1,2,3,4,5)。

(2)第i个关节所转过的次数nimiki,其中mi=i,表示向20下取整,ki1,,i%20.1i%20.1,%表示取余

(3)机械手的指尖到达每次移动的目标位置Eix,y,z,1是移动前位置Eix,y,z,1的函数。即Ef(E)

iii四我们的优化模型为 : N=min

(mii15ki)

inis..tkiEiLi,(i1,2,3,4,5)i2,0,1fi(Ei)ai%20.1ai%20.1

E是目标点矩阵,上式中E是初始位置矩阵,存在函数关系,即E=T44E。

7 / 14

当需我们将手臂移到制定目标点x,y,z时,我们只需要将这个点带入我们的程序中,就可以得出每个关节转动的角度矩阵,进而确定每个关节转过的次数。 由于机械臂的转角不是连续的 为了定量描述模型的指令精度,,我们引入了p值,即pi关节点所达到的角度i 100%,通过p值来检验算法的精度。

关节点的目标点的角度ai5.2.1

指尖E到达目标点的指令序列 (Ox,Oy,Oz)总结以上求解过程即为一个通用的计算算法步骤如下:

1. 根据所给初始状态Φ0和一个可达目标点的空间位置(Ox, Oy, Oz),运用模型(一)分别算出F、B、C、G、D关节的变换矩阵tF、tB、tC、tG、tD,进而用MATLAB软件对T矩阵进行运算化简,即可求得F、B、C、G、D关节的转角a1,a2,a3,a4,a5。

2. 将第一问中所求的F、B、C、G、D关节的转角a1,a2,a3,a4,a5和各关节的变换矩阵带入模型(二)中,用lingo求解,根据ni、fi就可写出P1、P2、P3、···Pn。

3. 将2所得结果代入精度计算公式pi求出并评估算法的计算精度。

关节点所达到的角度i100%,

关节点的目标点的角度ai5.2.2

机械臂指尖的初始位置为0,510,75,当工具箱在(20,-200,120)处时,代入5.1.4的通用算法中,结果如下表: 关节点 需要转动度转动2次数 数 F 5.7103316 2 B C G D -105.1138 -119.84586 -0.00080881859 -8.6399904e-015 52 59 0 0 fi 1(转动1.7) 1(转动1.1) 1(转动1.9) 0 0 精度 98.07% 99.99% 99.96%

由以上各关节转角可得到指令为:

8 / 14

p1(2,2,2,0,0),

p2(2,2,2,0,0), p3(1.6,2,2,0,0)

p452(0,2,2,0,0) ,(p452表示第4到底52个指令序列)

P53(0,1.1,2,0,0)

(p5359表示第53到第59个指令序列) p5459(0,0,2,0,0),

p60(0,0,1.9,0,0)

指令如下表所示: 从初始位置取工具箱的指令表 P1-P2 P3 P4-P52 P53 P54-P59 P60 a1 2 1.6 0 0 0 0 a2 -2 -2 -2 -1.1 0 0 a3 -2 -2 -2 -2 -2 -1.9 a4 0 0 0 0 0 0 a5 0 0 0 0 0 0 a6 5.3.1

机器人指尖沿预先指定的空间曲线x = x(s), y = y(s), z = z(s), a ≦ s ≦b移动的指令序列:

根据题意,指令序列只能控制机械臂的指尖E以离散的点为目标运动,而无法精确控制指尖沿某条曲线运动。我们可以在给定的空间曲线上选取适当的离散点,选取离散点的原则是当指尖由一个点运动到另一个点时,各关节只转动一次,且转动的角度尽量为2。。

由5.2可知,当给定空间两点后,指尖从i−1点移动到i点时,各关节转过的角度为:则指令Pi为i的函数,即Pif(i)。 i=i1,i2,i3,,i4,i5,在不超过机械臂自由度范围情况下,我们可由5.2通用算法算出机械臂指尖E在两点间移动的指令,为控制移动轨迹点均匀适当,保证在移动自由度范围内,我们引入单次最大转动次数Nm。如果各关节在两点间的移动角度小于0.1,则尽量除去这样的点;如果超出机械臂移动的自由度范围,即转动次数总和大于Nm,则采用二分搜索法在两点间插值,直到每个点都满足取点要求,然后遍历所有点,即可得到机械臂运动的指令序列。

下面来确定由二分搜索法确定曲线上离散点的算法: (一) 如图2所示,先预先选定N个点,A、B、、C、D、E、F、G、H···,其

9 / 14

相应的x坐标为xi,代入曲线中求出相应的yi,zi。

(二) 分别依次将xi-1,yi-1,zi-1和xi,yi,zi作为初始状态和目标点代入

模型Ⅰ求解出变换矩阵,代入模型Ⅱ求解出各关节最优移动角度和次数n1,n2,n3,n4,n5。

(三) 当N=ni=0时,去掉改点;当N=niNm时,保留该点;当N=ni〉

i=1i=1i=1555,yi1,zi1之间插入一个数yi,zi,Nm时,采用二分搜索法在i-1和xi1,代入模型中进行求解,直到两点间各关节转动次数和N=niNm。

i=15

5.3.2

当给定曲线为圆台形工件外表面与平面 x = 2 z 的交线时,我们取十个

点的横坐标xi值,然后代入曲线轨迹中,用MATLAB求出相应的yi,zi,得到十个离散点,如图表2所示。

运用5.3.1中的二分搜索法,将这十个点遍历一遍,得到符合要求的遍历后的点(多少个),可得到机械臂指尖轨迹如下图:

10 / 14

图二

5.4.1

一 、机械手臂避碰问题指令序列

根据题意,要求机械手臂与障碍物不相碰,则我们在模型Ⅰ和模型Ⅱ的基础上,对模型进行优化改进,以建立机械手避碰问题的模型Ⅲ,具体模型建立如下:

我们将关节和连杆都看成空间曲线,添加当曲线与障碍物外表面不相交条件,即可保证机械臂与障碍物不相碰,设机械臂的简化曲线方程为z1fi(x1,y1),障碍物外表面的曲面方程为z2fj(x2,y2),增加的约束条件为fi(x1,y1)fj(x2,y2)则修改后的模型Ⅲ为:

N=min约束条件:

(mii15ki)

iLi,(i1,2,3,4,5)ini2,ai%20.10s..tki,ai%20.11Eifi(Ei)f(x,y)f(x,y)j22i11

11 / 14

。为保证机械臂在运动过程和最终状态都不与障碍物外壁相碰,我们假设机

械臂指尖先以最优方式移动到O(210,0,180) 点(圆台上表面的中心),然后以最优方式移动到需修补的零件位置。得到相应的指令序列。机械臂指尖移动轨迹和机械臂的状态如下图所示。

圆台与轨迹运动图

5.5

对提高机械臂的灵活性和适用范围提供合理的建议。

(1)从灵活性角度考虑,连杆每作一次移动,产生l的变化,则相对的角度也会出现变动。要提高灵活性即是要提高角度变化向量的变化范围。这里我们考虑能量最省的优化原则。则用角度变化向量的模来判定。

1222324252

(2)适用范围:在所有杆的长度之和为固定值的情况下,指尖点E所能扫过的最大空间体积。

灵活性和适用范围存在的一些相互制约的关系,根据本文的分析结果,我们建议越靠近基座的θ值精度高一些,使得E点所能扫过的空间点数更多。

六、模型评价

在建立模型一时,我们采用先将目标点平移至原点,再通过坐标原点的旋转到目标位置,然后将原点平移至原位置的方法。因此,模型一主要是利用变换矩阵,只需知道目标点的始末位置即可解出各个关节变动的角度。此模型方法较为简单,经过检验,结果与实际相符,适用性较强。针对转动次数的优化模型,我们所考虑的约束条件仍然存在不足的地方,目标从一点到另一点有很多种路径和转法,但在建立模型时,只考虑了转动角度和转动次数的约束,因此所得结果可能不是最优路径,只是选取了一条较为简单的路径,也就是说模型在推广上存在限制。此外在对机器人灵活性以及灵活工作空间的分析不够全面,仅仅只对机

12 / 14

械臂指尖到达目标的误差精度进行了分析。

七、参考文献

[ 1 ] 苏金明, 王永利. M atlab 7. 0 使用指南[ M ]. 电子工业出版社, 2004. [ 2 ] 同济大学应用数学系. 高等数学(上册) [ M ]. 高等教育出版社, 2002.

[ 3 ] 郑剑飞. 六自由度机械臂分布式控制系统的设计与研究[ M ]. 哈尔滨工业大学, 2006, 6.

[4]黄献龙, 梁斌, 吴宏鑫. 机器人避碰规划综述. 航天控制. 2002.1: 34-46 [5]张建民. 工业机器人. 北京理工大学出版社. 1988 [6]姜启源. 数学模型. 高等教育出版社. 1995

附录一:模型Ⅰ简化后的矩阵

T=[ cos(a1)*cos(a4)-sin(a1)*sin(a2+a3)*sin(a4),

cos(a4)*sin(a1)+cos(a1)*sin(a2+a3)*sin(a4) ,-(cos(a2+a3)*sin(a4)) ,0;

cos(a5)*sin(a1)*sin(a2)*sin(a3)+(cos(a3)*cos(a4)*sin(a1)*sin(a2)+cos(a1)*sin(a4))*sin(a5)+cos(a2)*sin(a1)*(-(cos(a3)*cos(a5))+cos(a4)*sin(a3)*sin(a5)) ,

sin(a1)*sin(a4)*sin(a5)-cos(a1)*(sin(a2)*(cos(a5)*sin(a3)+cos(a3)*cos(a4)*sin(a5))+cos(a2)*(-(cos(a3)*cos(a5))+cos(a4)*sin(a3)*sin(a5))), cos(a3)*(cos(a5)*sin(a2)+cos(a2)*cos(a4)*sin(a5))+sin(a3)*(cos(a2)*cos(a5)-cos(a4)*sin(a2)*sin(a5)) , 0;

cos(a2)*cos(a4)*cos(a5)*sin(a1)*sin(a3)+cos(a1)*cos(a5)*sin(a4)-sin(a1)*sin(a2)*sin(a3)*sin(a5)+cos(a3)*sin(a1)*(cos(a4)*cos(a5)*sin(a2)+cos(a2)*sin(a5)) ,

cos(a5)*sin(a1)*sin(a4)-cos(a1)*(cos(a3)*(cos(a4)*cos(a5)*sin(a2)+cos(a2)*sin(a5))+sin(a3)*(cos(a2)*cos(a4)*cos(a5)-sin(a2)*sin(a5))) , -(sin(a2)*(cos(a4)*cos(a5)*sin(a3)+cos(a3)*sin(a5)))+cos(a2)*(cos(a3)*cos(a4)*cos(a5)-sin(a3)*sin(a5)) , 0;

5*(51*sin(a1)*sin(a2)*sin(a3)-102*cos(a5)*sin(a1)*sin(a2)*sin(a3)-28*cos(a1)*cos(a5)*sin(a4)+28*sin(a1)*sin(a2)*sin(a3)*sin(a5)-102*cos(a1)*sin(a4)*sin(a5)-2*cos(a3)*cos(a4)*sin(a1)*sin(a2)*(14*cos(a5)+51*sin(a5))+cos(a2)*sin(a1)*(-51+cos(a3)*(-51+102*cos(a5)-28*sin(a5))-2*cos(a4)*sin(a3)*(14*cos(a5)+51*sin(a5)))) ,

-5*(2*sin(a1)*sin(a4)*(14*cos(a5)+51*sin(a5))+cos(a1)*(sin(a2)*(sin(a3)*(51-102*cos(a5)+28*sin(a5))-2*cos(a3)*cos(a4)*(14*cos(a5)+51*sin(a5)))+cos(a2)*(-51+cos(a3)*(-51+102*cos(a5)-28*sin(a5))-2*cos(a4)*sin(a3)*(14*cos(a5)+51*sin(a5))))) ,

-5*(-28+cos(a2)*(sin(a3)*(-51+102*cos(a5)-28*sin(a5))+2*cos(a3)*cos(a4)*(14*cos(a5)+51*sin(a5)))+sin(a2)*(-51+cos(a3)*(-51+102*cos(a5)-28*sin(a5))-2*cos(a4)*sin(a3)*(14*cos(a5)+51*sin(a5)))) , 1];

13 / 14

附录二:优化模型的lingo程序:

min=m1+k1+m2+k2+m3+k3+m4+k4+m5+k5;

-65*@cos(a2)*@cos(a4)*@cos(a5)*@sin(a1)*@sin(a3)-65*@cos(a1)*@cos(a5)*@sin(a4)+65*@sin(a1)*@sin(a2)*@sin(a3)*@sin(a5)-65*@cos(a3)*@sin(a1)*@cos(a4)*@cos(a5)*@sin(a2)-65*@cos(a3)*@sin(a1)*@cos(a2)*@sin(a5)+255*@sin(a1)*@sin(a2)*@sin(a3)-255*@cos(a2)*@sin(a1)-255*@cos(a2)*@sin(a1)*@cos(a3)=20;

-65*@cos(a5)*@sin(a1)*@sin(a4)+65*@cos(a1)*@cos(a3)*@cos(a4)*@cos(a5)*@sin(a2)+65*@cos(a1)*@cos(a3)*@cos(a2)*@sin(a5)+65*@cos(a1)*@sin(a3)*@cos(a2)*@cos(a4)*@cos(a5)-65*@cos(a1)*@sin(a3)*@sin(a2)*@sin(a5)-255*@cos(a1)*@sin(a2)*@sin(a3)+255*@cos(a1)*@cos(a2)+255*@cos(a1)*@cos(a2)*@cos(a3)=200;

140-65/2*@cos(a3+a5+a2)+65/2*@cos(-a3+a5-a2)+255*@sin(a2)-65/4*@cos(a3+a5+a2-a4)-65/4*@cos(-a3+a5-a2-a4)-65/4*@cos(a3+a5+a2+a4)-65/4*@cos(-a3+a5-a2+a4)+255*@sin(a2+a3)=120;

b1=((a1)/3.1415)*180; b2=((a2)/3.1415)*180; b3=((a3)/3.1415)*180; b4=((a4)/3.1415)*180; b5=((a5)/3.1415)*180;

m1=@floor(@abs(b1)/2); m2=@floor(@abs(b2)/2); m3=@floor(@abs(b3)/2); m4=@floor(@abs(b4)/2); m5=@floor(@abs(b5)/2);

k1=@if((b1-2*m1)#gt#0.1,1,0); k2=@if((b2-2*m2)#gt#0.1,1,0); k3=@if((b3-2*m3)#gt#0.1,1,0); k4=@if((b4-2*m4)#gt#0.1,1,0); k5=@if((b5-2*m5)#gt#0.1,1,0);

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!]

14 / 14

因篇幅问题不能全部显示,请点此查看更多更全内容