版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章工业机器人编程5.1机器人编程语言的基本要求和类别5.2编程语言的应用
5.3工业机器人的编程过程第5章工业机器人编程5.1机器人编程语言的基本要求和15.2编程语言的应用5.2.1AL语言
AL语言是一种高级程序设计系统,描述装配类的任务。它有类似ALGOL的源语言,有将程序转换为机器码的编译程序和由控制操作的机械手及其他设备的实时系统。编译程序是由斯坦福大学人工智能实验室用高级语言编写的,在小型计算机上实时运行。近年,该程序已能在微型计算机上运行。
AL语言对其他语言有很大的影响,在一般机器人语言中起主导作用。该语言是斯坦福大学1974年开发的。
5.2编程语言的应用5.2.1AL语言25.2.1AL语言许多子程序和条件监测语句增加了该语言的力传感和柔顺控制能力。当一个进程需要等待另一个进程完成时,可使用适当的信号语句和等待语句。这些语句和其他的一些语句可以使两个或两个以上的机器人臂进行坐标控制。利用手和手臂运动控制命令可控制位移、速度、力和力矩。
5.2.1AL语言31.变量的表达及特征AL变量的基本类型有标量(SCALAR)、矢量(VECTOR)、旋转(ROT)、坐标系(FRAME)和变换(TRANS)。
(1)标量:标量与计算机语言中的实数一样,是浮点数,可以进行加、减、乘、除和指数五种运算,也可以进行三角函数和自然对数的变换。AL中的标量可以表示时间(TIME)、距离(DISTANCE)、角度(ANGLE)、力(FORCE)或者它们的组合,并可以处理这些变量的量纲(即单位),即秒(sec)、英寸(inch)、度(deg)或盎司(ounce)(重量单位)等。AL中有几个事先定义的标量,例如:PI=3.14159(即π),TRUE=1,FALSE=0。1.变量的表达及特征AL变量的基本4
(2)矢量:矢量由一个三元实数(x,y,z)构成,表示对应于某坐标系的平移和位置之类的量。与标量一样,它们可以是有量纲的。利用VECTOR(矢量)函数,可以由三个标量表达式来构造矢量。在AL中有几个事先定义过的矢量:xhat<-VECTOR(1,0,0);yhat<-VECTOR(0,1,0);zhat<-VECTOR(0,0,1);nilvect<-VECTOR(0,0,0)。矢量可以进行加、减、内积、叉积及与标量相乘、相除等运算。
(2)矢量:矢量由一个三元实数(x,y,z)构成5内积和叉积的解释内积:两个矢量之间的一种运算,其结果是实数。叉积:又叫叉乘,也叫向量的外积、向量积。求下来的结果是一个向量。内积和叉积的解释内积:两个矢量之间的一种运算,6
(3)旋转:旋转表示绕一个轴旋转,用以表示姿态。旋转用函数ROT来构造,ROT函数有两个参数:一个代表旋转轴,用矢量表示;另一个是旋转角度。旋转规则按右手法则进行。此外,x函数AXIS(x)表示求取x的旋转轴,而│x│表示求取x的旋转角。AL中有一个称为nilrot的事先说明过的旋转,定义为ROT(zhat,0*deg)。(3)旋转:旋转表示绕一个轴旋转,用以表示姿态。7
(4)坐标系:坐标系可通过调用函数FRAME来构成。该函数有两个参数:一个表示姿态的旋转,另一个表示位置的距离矢量。AL中定义STATION代表工作空间的基准坐标系。图5.1是机器人插螺钉作业的示意图,可以建立起图中的base坐标系、beam坐标系和feeder坐标系,程序如下:
FRAMEbasebeamfeeder;坐标系变量说明base<-FRAME(nilrot,VECTOR(20,0,15)*inches);坐标系base的原点位于全局坐标系原点(20,0,15)英寸处,Z轴平行于全局坐标系的Z轴。(4)坐标系:坐标系可通过调用函数FRAME来构成。8
beam<-FRAME(ROT(Z,90*deg),VECTOR(20,15,0)*inches);坐标系beam的原点位于全局坐标系原点(20,15,0)英寸处,并绕全局坐标系Z轴旋转90度feeder<-FRAME(nilrot,VECTOR(25,20,0)*inches);坐标系feeder的原点位于全局坐标系(25,20,0)英寸处,且Z轴平行于全局坐标系的Z轴
对于在某一坐标系中描述的矢量,可以用矢量WRT坐标系的形式来表示(WRT:WithRespectTo),如xhatWRTbeam,表示在全局坐标系中构造一个与坐标系beam中的xhat具有相同方向的矢量。
beam<-FRAME(ROT(Z,90*deg),VE9图5.1机器人插螺钉作业的路径
图5.1机器人插螺钉作业的路径10
(5)变换:TRANS型变量用来进行坐标系间的变换。与FRAME(坐标系调用函数)一样,TRANS包括两部分:一个旋转和一个向量。执行时,先与相对于作业空间的基坐标系旋转部分相乘,然后再加上向量部分。当算术运算符“<-”作用于两个坐标系时,是指把第一个坐标系的原点移到第二个坐标系的原点,再经过旋转使其轴重合。因此可以看出,描述第一个坐标系相对于基坐标系的过程,可通过对基坐标系右乘一个TRANS来实现。如图5.1所示,可以建立起各坐标系之间的关系:(5)变换:TRANS型变量用来进行坐标系间的变换。11
T6<-base*TRANS(ROT(x,180*deg),VECTOR(15,0,0)*inches);建立坐标系T6,其Z轴绕base坐标系的X轴旋转180°,原点距base坐标系原点(15,0,0)英寸处E<-T6*TRANS(nilrot,VECTOR(0,0,5)*inches);建立坐标系E,其Z轴平行于T6坐标系的Z轴,原点距T6坐标系原点(0,0,5)英寸处
(螺钉头)bolt-tip<-feeder*TRANS(nilrot,VECTOR(0,0,1)*inches);建立螺钉头坐标系,其Z轴平行于料槽feeder坐标系的Z轴,原点距料槽feeder坐标系原点(0,0,1)英寸处beam-bore<-beam*TRANS(nilrot,VECTOR(0,2,3)*inches);
T6<-base*TRANS(ROT(x,180*d12
举例:
bolt-tip<-feeder*TRANS(nilrot,VECTOR(0,0,1)*inches);
建立螺钉头坐标系,其Z轴平行于料槽feeder坐标系的Z轴,原点距料槽feeder坐标系原点(0,0,1)英寸处beam-bore<-beam*TRANS(nilrot,VECTOR(0,2,3)*inches);建立立柱孔坐标系,其Z轴平行于立柱坐标系的Z轴,原点距立柱坐标系原点(0,2,3)英寸处举例:13
2.主要语句及其功能
(1)运动语句:MOVE语句用来表示机器人由初始位姿到目标位姿的运动。在AL中,定义了barm为蓝色机械手,yarm为黄色机械手,为了保证两台机械手在不使用时能处于平衡状态,AL语言定义了相应的停放位置bpark和ypark。假定机械手在任意位置,可把它运动到停放位置,所用的语句是MOVEbarmTObpark;如果要求在4s内把机械手移动到停放位置,所用指令是
MOVE
barm
TO
bpark
WITH
DURATION=4*seconds;
2.主要语句及其功能14
符号“@”可用在语句中,表示当前位置,如MOVEbarmTO@-2*zhat*inches;该指令表示机械手从当前位置向下移动2英寸。由此可以看出,基本的MOVE语句具有如下形式:
MOVE(机械手)TO(目的地)(修饰子句);例如:MOVEbarmTO<destination>VIAf1f2f3表示机械手经过中间点f1、f2、f3移动到目标坐标系<destination>。
MOVE
barm
TO
block
WITHAPPROACH=3*zhat*inches
符号“@”可用在语句中,表示当前位置,如15表示把机械手移动到在Z轴方向上离block3英寸的地方;如果用DEPARTURE代替APPROACH,则表示离开block。关于接近/退避点可以用设定坐标系的一个矢量来表示,如WITHAPPROACH=<表达式>;WITHDEPARTURE=<表达式>;如图5.1所示,要求机器人由初始位置经过A点运动到螺钉处,再经过B、C后到达D点。描述该运动轨迹的程序如下:MOVEbarmTOboltgraspVIAAWITHAPPROACH=-ZWRTfeeder;MOVEbarmTOBVIAAWITHDEPARTURE=ZWRTfeeder;MOVE
barmTODVIACWITHAPPROACH=-ZWRTbeambore;解释:
ZWRTfeeder表示在全局坐标系中构造一个与料槽坐标系feeder中的Z具有相同方向的矢量。表示把机械手移动到在Z轴方向上离block3英寸的地方;16图5.1机器人插螺钉作业的路径
图5.1机器人插螺钉作业的路径17(2)手爪控制语句。
手爪控制语句的一般形式为:OPEN<hand>TO(sval);CLOSE<hand>TO(sval);这两条语句是使手爪张开或闭合后相距(sval)。(sval)是表示开度的距离值。
(2)手爪控制语句。手爪控制语句的一般形式为:18
3.AL程序设计举例
例用AL语言编制如图5.1所示的机器人把螺钉插入其中一个孔里的作业。这个作业需要把机器人移至料斗上方A点,抓取螺栓,经过B点、C点,再把它移至导板孔上方D点(见图5.1),并把螺钉插入其中一个孔里。编制这个程序的步骤是:(1)定义机座、导板、料斗、导板孔、螺钉柄等的位置和姿态。(2)把装配作业划分为一系列动作,如移动机器人、抓取物体和完成插入等。(3)加入传感器以发现异常情况和监视装配作业的过程。(4)重复步骤(1)~(3),调试并改进程序。
3.AL程序设计举例19按照上面的步骤,编制的程序如下:BEGINinsertion(设置变量)(锣钉直径)bolt-diameter<-0.5*inches;(锣钉高度)bolt-height<-1*inches;tries<-0;grasped<false;(定义机座坐标系)(立柱坐标系)beam<—FRAME(ROT(z,90*deg),VECTOR(20,15,0)*inches);(料槽坐标系)feeder<—FRAME(nilrot,VECTOR(20,20,0)*inches);(定义特征坐标系)
按照上面的步骤,编制的程序如下:20(锣钉系)bolt-grasp<-feeder*TRANS(nilrot,nilvect);(锣钉头)bolt-tip<-bolt-grasp,TRANS(nilrot,VECTOR(0,0,0.5)*inches);(立柱孔)beam-bore<-beam*TRANS(nilrot,VECTOR(0,0,1)*inches);(定义经过的点坐标系)A<-feeder*TRANS(nilrot,VECTOR(0,0,5)*inches);B<-feeder*TRANS(nilrot,VECTOR(0,0,8)*inches);C<-beam-bore*TRANS(nilrot,VECTOR(0,0,5)*inches);D<-beam-bore*TRANS(nilrot,boltheight*Z);(张开手爪)OPEN
bhand
TO
boltdiameter+1*inches;(锣钉系)bolt-grasp<-feeder*TRANS(21(使手准确定位于螺钉上方)MOVEbarmTOboltgraspVIAAWITHAPPROACH=-ZWRTfeeder;(试着抓取螺钉)DOCLOSEbhandTO0.9*boltdiameter;IFbhand<boltdiameterTHENBEGINOPENbhandTOboltdiameter+1*inches;(抓取螺钉失败,再试一次)MOVEbarmTO@-1*Z*inches;ENDELSEgrasped<-TRUE;tries<-tries+1;
(使手准确定位于螺钉上方)22UNTILgraspedOP(tries>3);(如果尝试三次未能抓取螺钉,则取消这一动作)IFNOTgraspedTHENABORT;(抓取螺钉失败)MOVEbarmTOBVIAAWITHDEPARTURE=ZWRTfeeder;(将手臂运动到B位置)MOVEbarmTODVIAC(将手臂运动到D位置)WITHAPPROACH=-ZWRTbeambore;(检验是否有孔)MOVEbarmTO@-0.1*Z*inchesONFORCE(Z)>10*ounceDOABORT(无孔)解释:ABORT异常结束(进行柔顺性插入)MOVEbarmTObeamboreDIRECTLYWITHFORCE(Z)=-10*ounce;WITHFORCE(X)=0*ounce;UNTILgraspedOP(tries>3);23WITHFORCE(Y)=0*ounce;WITHDURATION=5*seconds;ENDinsertionWITHFORCE(Y)=0*ounce;245.2.2VAL-Ⅱ语言
VAL-Ⅱ是在1979年推出的,用于Unimation和Puma机器人。它是基于解释方式执行的语言,并且具有程序分支、传感信息输入/输出通信、直线运动以及许多其他特征。例如,用户可以在沿末端操作器a轴的方向指定一个距离height,将它与语句命令APPRO(用于接近操作)或DEPART(用于离开操作)结合,便可实现无碰撞地接近物体或离开物体。MOVE命令用来使机器人从它的当前位置运动到下一个指定位置,而MOVES命令则是沿直线执行上述动作。为了说明VAL-Ⅱ的一些功能,我们通过下面的程序清单来描述其命令语句:
5.2.2VAL-Ⅱ语言251PROGRAMTEST程序名2SPEED30ALWAYS设定机器人的速度3height=50设定沿末端执行器a轴方向抬起或落下的距离4MOVESp1沿直线运动机器人到点p15MOVEp2用关节插补方式运动机器人到第二个点p26REACT1001如果端口1的输入信号为高电平(关),则立即停止机器人7BREAK当上述动作完成后停止执行8DELAY
2延迟2秒执行
9IFSIG(1001)GOTO100检测输入端口1,如果为高电平(关),则转入继续执行第100行命令,否则继续执行下一行命令10OPEN打开手爪
1PROGRAMTEST程序名2611MOVEp5运动到点p512SIGNAL2打开输出端口213APPROp6,height将机器人沿手爪(工具坐标系)的a轴移向p6,直到离开它一段指定距离height的地方,这一点叫抬起点14MOVEp6运动到位于p6点的物体15CLOSE关闭手爪,并等待直至手爪闭合16DEPARTheight沿手爪的5轴(工具坐标系)向上移动height距离17MOVEp1将机器人移到p1点18TYPE″alldone″在显示器上显示alldone19END11MOVEp5运动到点p5275.2.3AML语言
AML语言是IBM公司为3P3R机器人编写的程序。这种机器人带有三个线性关节,三个旋转关节,还有一个手爪。各关节由数字<1,2,3,4,5,6,7>表示,1、2、3表示滑动关节,4、5、6表示旋转关节,7表示手爪。描述沿x、y、z轴运动时,关节也可分别用字母JX、JY、JZ表示,相应地JR、JP、JY分别表示绕翻转(Roll)、俯仰(Pitch)和偏转(Yaw)轴(用来定向)旋转,而JG表示手爪。
5.2.3AML语言28
在AML中允许两种运动形式:MOVE命令是绝对值,也就是说,机器人沿指定的关节运动到给定的值;DMOVE命令是相对值,也就是说,关节从它当前所在的位置起运动给定的值。这样,MOVE(1,10)就意味着机器人将沿x轴从坐标原点起运动10英寸,而DMOVE(1,10)则表示机器人沿x轴从它当前位置起运动10英寸。AML语言中有许多命令,它允许用户可以编制复杂的程序。以下程序用于引导机器人从一个地方抓起一件物体,并将它放到另一个地方,并以此例来说明如何编制一个机器人程序。
在AML中允许两种运动形式:MOVE命令是绝对值,也就2910SUBR(PICKPLACE);子程序名20PT1:NEW<4,-24,2,0,0,-13>;位置说明30PT2:NEW<-2,13,2,135,-90,-33>;40PT3:NEW<-2,13,2,150,-90,-33,1>;50SPEED(0.2);指定机器人的速度(最大速度的20%)60MOVE(ARM,0,0);将机器人(手臂)复位到参考坐标系原点70MOVE(<1,2,3,4,5,6>,PT1);将手臂运动到物体上方的点1MOVE(7,3);将手爪打开到3英寸
90DMOVE(3,-1);将手臂沿z轴下移1英寸100DMOVE(7,-1.5);将手爪闭合1.5英寸
110DMOVE(3,1);沿Z轴将物体抬起1英寸
120MOVE(<JX,JY,JZ,JR,JP,JY>,PT2);将手臂运动到点210SUBR(PICKPLACE);子程序30130DMOVE(JZ,-3);沿z轴将手臂下移3英寸放置物体140MOVE(JG,3);将手爪打开到3英寸150DMOVE(JZ,11);将手臂沿z轴上移11英寸160MOVE(ARM,PT3);将手臂运动到点3170END;130DMOVE(JZ,-3);沿z轴将手臂下移3英寸315.2.4AUTOPASS语言
AUTOPASS语言是一种对象级语言。对象级语言是靠对象物状态的变化给出大概的描述,把机器人的工作程序化的一种语言。AUTOPASS、LUMA、RAFT等都属于这一级语言。AUTOPASS是IBM公司属下的一个研究所提出来的机器人语言,它像给人的组装说明书一样,是针对机器人操作的一种语言。程序把工作的全部规划分解成放置部件、插入部件等宏功能状态变化指令来描述。AUTOPASS的编译是用称作环境模型的数据库,边模拟工作执行时环境的变化边决定详细动作,作出对机器人的工作指令和数据。AUTOPASS的指令分成如下四组:5.2.4AUTOPASS语言32
(1)状态变更语句:
PLACE,INSERT,EXTRACT(抽提),LIFT,LOWER,SLIDE,PUSH,ORIENT(定位),TURN,GRASP,RELEASE,MOVE。
(2)工具语句:
OPERATE,CLUMP(组合),LOAD(装),UNLOAD(卸),FETCH(拿、拣),REPLACE,SWITCH,LOCK,UNLOCK。
(3)紧固语句:
ATTACH(加、上),DRIVEIN(压入),RIVET(铆合),FASTEN,UNFASTEN。
(4)其他语句:
VERIFY(检验、校验),OPENSTATEOF,CLOSEDSTATEOF,NAME,END。
(1)状态变更语句:PLACE,INSERT,33
例如,对于PLACE的描述语法为:
PLACE<object><prepositionphrase><object><graspingphrase><finalconditionphrase><constraintphrase><thenhold>。其中,<object>是对象名;<prepositionphrase>(介词)表示ON或IN那样的对象物间的关系;<graspingphrase>是提供对象物的位置和姿态、抓取方式等;<constraintphrase>(约束词)是末端操作器的位置、方向、力、时间、速度、加速度等约束条件的描述选择;<thenhold>是指令机器人保持现有位置。
例如,对于PLACE的描述语法为:34
下面是AUTOPASS程序示例,从中可以看出,这种程序的描述很容易理解。但是该语言在技术上仍有很多问题没有解决。(1)OPERATEnuffeeder(进给装置)WITHcar-ret-tab-nut(可靠螺帽薄片)ATfixture.nest(槽孔)(2)PLACEbracket(托架、丁字支架)INfixtureSUCHTHATbracket.bottom(架底)(3)PLACEinterlock(安全锁)ONbracketSUCHTHATinterlock.holeISALIGNED(铰同心孔)WITHbracket.top(架顶)下面是AUTOPASS程序示例,从中可以看出,这种程35
(4)DRIVEIN(压入)ear-ret-intlk-stud(带耳可靠联锁双头螺栓)INTOcar-ret-tab-nut(卡片螺帽)Atinterlock.holeSUCHTHATTORQUE(力矩)isEQ(等于)12.0IN-LBSUSINGairdriverATTACHINGbracketANDinterlock(5)NAMEbracket(托架)interlockcar-ret-intlk-stud(卡片双头螺栓)Car-ret-tab-nut(卡片螺帽)ASSEMBLY(装配)suppot-bracket(4)DRIVEIN(压入)ear-ret-i36第5章工业机器人编程5.1机器人编程语言的基本要求和类别5.2编程语言的应用
5.3工业机器人的编程过程第5章工业机器人编程5.1机器人编程语言的基本要求和375.2编程语言的应用5.2.1AL语言
AL语言是一种高级程序设计系统,描述装配类的任务。它有类似ALGOL的源语言,有将程序转换为机器码的编译程序和由控制操作的机械手及其他设备的实时系统。编译程序是由斯坦福大学人工智能实验室用高级语言编写的,在小型计算机上实时运行。近年,该程序已能在微型计算机上运行。
AL语言对其他语言有很大的影响,在一般机器人语言中起主导作用。该语言是斯坦福大学1974年开发的。
5.2编程语言的应用5.2.1AL语言385.2.1AL语言许多子程序和条件监测语句增加了该语言的力传感和柔顺控制能力。当一个进程需要等待另一个进程完成时,可使用适当的信号语句和等待语句。这些语句和其他的一些语句可以使两个或两个以上的机器人臂进行坐标控制。利用手和手臂运动控制命令可控制位移、速度、力和力矩。
5.2.1AL语言391.变量的表达及特征AL变量的基本类型有标量(SCALAR)、矢量(VECTOR)、旋转(ROT)、坐标系(FRAME)和变换(TRANS)。
(1)标量:标量与计算机语言中的实数一样,是浮点数,可以进行加、减、乘、除和指数五种运算,也可以进行三角函数和自然对数的变换。AL中的标量可以表示时间(TIME)、距离(DISTANCE)、角度(ANGLE)、力(FORCE)或者它们的组合,并可以处理这些变量的量纲(即单位),即秒(sec)、英寸(inch)、度(deg)或盎司(ounce)(重量单位)等。AL中有几个事先定义的标量,例如:PI=3.14159(即π),TRUE=1,FALSE=0。1.变量的表达及特征AL变量的基本40
(2)矢量:矢量由一个三元实数(x,y,z)构成,表示对应于某坐标系的平移和位置之类的量。与标量一样,它们可以是有量纲的。利用VECTOR(矢量)函数,可以由三个标量表达式来构造矢量。在AL中有几个事先定义过的矢量:xhat<-VECTOR(1,0,0);yhat<-VECTOR(0,1,0);zhat<-VECTOR(0,0,1);nilvect<-VECTOR(0,0,0)。矢量可以进行加、减、内积、叉积及与标量相乘、相除等运算。
(2)矢量:矢量由一个三元实数(x,y,z)构成41内积和叉积的解释内积:两个矢量之间的一种运算,其结果是实数。叉积:又叫叉乘,也叫向量的外积、向量积。求下来的结果是一个向量。内积和叉积的解释内积:两个矢量之间的一种运算,42
(3)旋转:旋转表示绕一个轴旋转,用以表示姿态。旋转用函数ROT来构造,ROT函数有两个参数:一个代表旋转轴,用矢量表示;另一个是旋转角度。旋转规则按右手法则进行。此外,x函数AXIS(x)表示求取x的旋转轴,而│x│表示求取x的旋转角。AL中有一个称为nilrot的事先说明过的旋转,定义为ROT(zhat,0*deg)。(3)旋转:旋转表示绕一个轴旋转,用以表示姿态。43
(4)坐标系:坐标系可通过调用函数FRAME来构成。该函数有两个参数:一个表示姿态的旋转,另一个表示位置的距离矢量。AL中定义STATION代表工作空间的基准坐标系。图5.1是机器人插螺钉作业的示意图,可以建立起图中的base坐标系、beam坐标系和feeder坐标系,程序如下:
FRAMEbasebeamfeeder;坐标系变量说明base<-FRAME(nilrot,VECTOR(20,0,15)*inches);坐标系base的原点位于全局坐标系原点(20,0,15)英寸处,Z轴平行于全局坐标系的Z轴。(4)坐标系:坐标系可通过调用函数FRAME来构成。44
beam<-FRAME(ROT(Z,90*deg),VECTOR(20,15,0)*inches);坐标系beam的原点位于全局坐标系原点(20,15,0)英寸处,并绕全局坐标系Z轴旋转90度feeder<-FRAME(nilrot,VECTOR(25,20,0)*inches);坐标系feeder的原点位于全局坐标系(25,20,0)英寸处,且Z轴平行于全局坐标系的Z轴
对于在某一坐标系中描述的矢量,可以用矢量WRT坐标系的形式来表示(WRT:WithRespectTo),如xhatWRTbeam,表示在全局坐标系中构造一个与坐标系beam中的xhat具有相同方向的矢量。
beam<-FRAME(ROT(Z,90*deg),VE45图5.1机器人插螺钉作业的路径
图5.1机器人插螺钉作业的路径46
(5)变换:TRANS型变量用来进行坐标系间的变换。与FRAME(坐标系调用函数)一样,TRANS包括两部分:一个旋转和一个向量。执行时,先与相对于作业空间的基坐标系旋转部分相乘,然后再加上向量部分。当算术运算符“<-”作用于两个坐标系时,是指把第一个坐标系的原点移到第二个坐标系的原点,再经过旋转使其轴重合。因此可以看出,描述第一个坐标系相对于基坐标系的过程,可通过对基坐标系右乘一个TRANS来实现。如图5.1所示,可以建立起各坐标系之间的关系:(5)变换:TRANS型变量用来进行坐标系间的变换。47
T6<-base*TRANS(ROT(x,180*deg),VECTOR(15,0,0)*inches);建立坐标系T6,其Z轴绕base坐标系的X轴旋转180°,原点距base坐标系原点(15,0,0)英寸处E<-T6*TRANS(nilrot,VECTOR(0,0,5)*inches);建立坐标系E,其Z轴平行于T6坐标系的Z轴,原点距T6坐标系原点(0,0,5)英寸处
(螺钉头)bolt-tip<-feeder*TRANS(nilrot,VECTOR(0,0,1)*inches);建立螺钉头坐标系,其Z轴平行于料槽feeder坐标系的Z轴,原点距料槽feeder坐标系原点(0,0,1)英寸处beam-bore<-beam*TRANS(nilrot,VECTOR(0,2,3)*inches);
T6<-base*TRANS(ROT(x,180*d48
举例:
bolt-tip<-feeder*TRANS(nilrot,VECTOR(0,0,1)*inches);
建立螺钉头坐标系,其Z轴平行于料槽feeder坐标系的Z轴,原点距料槽feeder坐标系原点(0,0,1)英寸处beam-bore<-beam*TRANS(nilrot,VECTOR(0,2,3)*inches);建立立柱孔坐标系,其Z轴平行于立柱坐标系的Z轴,原点距立柱坐标系原点(0,2,3)英寸处举例:49
2.主要语句及其功能
(1)运动语句:MOVE语句用来表示机器人由初始位姿到目标位姿的运动。在AL中,定义了barm为蓝色机械手,yarm为黄色机械手,为了保证两台机械手在不使用时能处于平衡状态,AL语言定义了相应的停放位置bpark和ypark。假定机械手在任意位置,可把它运动到停放位置,所用的语句是MOVEbarmTObpark;如果要求在4s内把机械手移动到停放位置,所用指令是
MOVE
barm
TO
bpark
WITH
DURATION=4*seconds;
2.主要语句及其功能50
符号“@”可用在语句中,表示当前位置,如MOVEbarmTO@-2*zhat*inches;该指令表示机械手从当前位置向下移动2英寸。由此可以看出,基本的MOVE语句具有如下形式:
MOVE(机械手)TO(目的地)(修饰子句);例如:MOVEbarmTO<destination>VIAf1f2f3表示机械手经过中间点f1、f2、f3移动到目标坐标系<destination>。
MOVE
barm
TO
block
WITHAPPROACH=3*zhat*inches
符号“@”可用在语句中,表示当前位置,如51表示把机械手移动到在Z轴方向上离block3英寸的地方;如果用DEPARTURE代替APPROACH,则表示离开block。关于接近/退避点可以用设定坐标系的一个矢量来表示,如WITHAPPROACH=<表达式>;WITHDEPARTURE=<表达式>;如图5.1所示,要求机器人由初始位置经过A点运动到螺钉处,再经过B、C后到达D点。描述该运动轨迹的程序如下:MOVEbarmTOboltgraspVIAAWITHAPPROACH=-ZWRTfeeder;MOVEbarmTOBVIAAWITHDEPARTURE=ZWRTfeeder;MOVE
barmTODVIACWITHAPPROACH=-ZWRTbeambore;解释:
ZWRTfeeder表示在全局坐标系中构造一个与料槽坐标系feeder中的Z具有相同方向的矢量。表示把机械手移动到在Z轴方向上离block3英寸的地方;52图5.1机器人插螺钉作业的路径
图5.1机器人插螺钉作业的路径53(2)手爪控制语句。
手爪控制语句的一般形式为:OPEN<hand>TO(sval);CLOSE<hand>TO(sval);这两条语句是使手爪张开或闭合后相距(sval)。(sval)是表示开度的距离值。
(2)手爪控制语句。手爪控制语句的一般形式为:54
3.AL程序设计举例
例用AL语言编制如图5.1所示的机器人把螺钉插入其中一个孔里的作业。这个作业需要把机器人移至料斗上方A点,抓取螺栓,经过B点、C点,再把它移至导板孔上方D点(见图5.1),并把螺钉插入其中一个孔里。编制这个程序的步骤是:(1)定义机座、导板、料斗、导板孔、螺钉柄等的位置和姿态。(2)把装配作业划分为一系列动作,如移动机器人、抓取物体和完成插入等。(3)加入传感器以发现异常情况和监视装配作业的过程。(4)重复步骤(1)~(3),调试并改进程序。
3.AL程序设计举例55按照上面的步骤,编制的程序如下:BEGINinsertion(设置变量)(锣钉直径)bolt-diameter<-0.5*inches;(锣钉高度)bolt-height<-1*inches;tries<-0;grasped<false;(定义机座坐标系)(立柱坐标系)beam<—FRAME(ROT(z,90*deg),VECTOR(20,15,0)*inches);(料槽坐标系)feeder<—FRAME(nilrot,VECTOR(20,20,0)*inches);(定义特征坐标系)
按照上面的步骤,编制的程序如下:56(锣钉系)bolt-grasp<-feeder*TRANS(nilrot,nilvect);(锣钉头)bolt-tip<-bolt-grasp,TRANS(nilrot,VECTOR(0,0,0.5)*inches);(立柱孔)beam-bore<-beam*TRANS(nilrot,VECTOR(0,0,1)*inches);(定义经过的点坐标系)A<-feeder*TRANS(nilrot,VECTOR(0,0,5)*inches);B<-feeder*TRANS(nilrot,VECTOR(0,0,8)*inches);C<-beam-bore*TRANS(nilrot,VECTOR(0,0,5)*inches);D<-beam-bore*TRANS(nilrot,boltheight*Z);(张开手爪)OPEN
bhand
TO
boltdiameter+1*inches;(锣钉系)bolt-grasp<-feeder*TRANS(57(使手准确定位于螺钉上方)MOVEbarmTOboltgraspVIAAWITHAPPROACH=-ZWRTfeeder;(试着抓取螺钉)DOCLOSEbhandTO0.9*boltdiameter;IFbhand<boltdiameterTHENBEGINOPENbhandTOboltdiameter+1*inches;(抓取螺钉失败,再试一次)MOVEbarmTO@-1*Z*inches;ENDELSEgrasped<-TRUE;tries<-tries+1;
(使手准确定位于螺钉上方)58UNTILgraspedOP(tries>3);(如果尝试三次未能抓取螺钉,则取消这一动作)IFNOTgraspedTHENABORT;(抓取螺钉失败)MOVEbarmTOBVIAAWITHDEPARTURE=ZWRTfeeder;(将手臂运动到B位置)MOVEbarmTODVIAC(将手臂运动到D位置)WITHAPPROACH=-ZWRTbeambore;(检验是否有孔)MOVEbarmTO@-0.1*Z*inchesONFORCE(Z)>10*ounceDOABORT(无孔)解释:ABORT异常结束(进行柔顺性插入)MOVEbarmTObeamboreDIRECTLYWITHFORCE(Z)=-10*ounce;WITHFORCE(X)=0*ounce;UNTILgraspedOP(tries>3);59WITHFORCE(Y)=0*ounce;WITHDURATION=5*seconds;ENDinsertionWITHFORCE(Y)=0*ounce;605.2.2VAL-Ⅱ语言
VAL-Ⅱ是在1979年推出的,用于Unimation和Puma机器人。它是基于解释方式执行的语言,并且具有程序分支、传感信息输入/输出通信、直线运动以及许多其他特征。例如,用户可以在沿末端操作器a轴的方向指定一个距离height,将它与语句命令APPRO(用于接近操作)或DEPART(用于离开操作)结合,便可实现无碰撞地接近物体或离开物体。MOVE命令用来使机器人从它的当前位置运动到下一个指定位置,而MOVES命令则是沿直线执行上述动作。为了说明VAL-Ⅱ的一些功能,我们通过下面的程序清单来描述其命令语句:
5.2.2VAL-Ⅱ语言611PROGRAMTEST程序名2SPEED30ALWAYS设定机器人的速度3height=50设定沿末端执行器a轴方向抬起或落下的距离4MOVESp1沿直线运动机器人到点p15MOVEp2用关节插补方式运动机器人到第二个点p26REACT1001如果端口1的输入信号为高电平(关),则立即停止机器人7BREAK当上述动作完成后停止执行8DELAY
2延迟2秒执行
9IFSIG(1001)GOTO100检测输入端口1,如果为高电平(关),则转入继续执行第100行命令,否则继续执行下一行命令10OPEN打开手爪
1PROGRAMTEST程序名6211MOVEp5运动到点p512SIGNAL2打开输出端口213APPROp6,height将机器人沿手爪(工具坐标系)的a轴移向p6,直到离开它一段指定距离height的地方,这一点叫抬起点14MOVEp6运动到位于p6点的物体15CLOSE关闭手爪,并等待直至手爪闭合16DEPARTheight沿手爪的5轴(工具坐标系)向上移动height距离17MOVEp1将机器人移到p1点18TYPE″alldone″在显示器上显示alldone19END11MOVEp5运动到点p5635.2.3AML语言
AML语言是IBM公司为3P3R机器人编写的程序。这种机器人带有三个线性关节,三个旋转关节,还有一个手爪。各关节由数字<1,2,3,4,5,6,7>表示,1、2、3表示滑动关节,4、5、6表示旋转关节,7表示手爪。描述沿x、y、z轴运动时,关节也可分别用字母JX、JY、JZ表示,相应地JR、JP、JY分别表示绕翻转(Roll)、俯仰(Pitch)和偏转(Yaw)轴(用来定向)旋转,而JG表示手爪。
5.2.3AML语言64
在AML中允许两种运动形式:MOVE命令是绝对值,也就是说,机器人沿指定的关节运动到给定的值;DMOVE命令是相对值,也就是说,关节从它当前所在的位置起运动给定的值。这样,MOVE(1,10)就意味着机器人将沿x轴从坐标原点起运动10英寸,而DMOVE(1,10)则表示机器人沿x轴从它当前位置起运动10英寸。AML语言中有许多命令,它允许用户可以编制复杂的程序。以下程序用于引导机器人从一个地方抓起一件物体,并将它放到另一个地方,并以此例来说明如何编制一个机器人程序。
在AML中允许两种运动形式:MOVE命令是绝对值,也就6510SUBR(PICKPLACE);子程序名20PT1:NEW<4,-24,2,0,0,-13>;位置说明30PT2:NEW<-2,13,2,135,-90,-33>;40PT3:NEW<-2,13,2,150,-90,-33,1>;50SPEED(0.2);指定机器人的速度(最大速度的20%)60MOVE(ARM,0,0);将机器人(手臂)复位到参考坐标系原点70MOVE(<1,2,3,4,5,6>,PT1);将手臂运动到物体上方的点1MOVE(7,3);将手爪打开到3英寸
90DMOVE(3,-1);将手臂沿z轴下移1英寸100DMOVE(7,-1.5);将手爪
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级下册数学教案第四单元第3课时 解决问题-人教新课标
- 人教版初中九年级下册历史与社会 6.2 改革开放的新阶段教学设计
- 人教版九年级下册(新)第八单元课题1《金属材料》教学设计
- 2025年小学体育教师资格证考试模拟试卷含答案
- 2026年县乡教师选调考试《教育学》题库及答案详解(考点梳理)
- 赣美版二年级下册第17课 过端午教案设计
- 北师大版 (2013)六年级下册第二十四课 合格的小公民教学设计
- 2025年县乡教师选调考试《教育学》通关试题库及参考答案详解(能力提升)
- 2026年县乡教师选调考试《教育学》检测卷及答案详解参考
- 2025年下半年中学教师资格证《综合素质》真题及参考答案
- 2026年医疗三基三严知识考前冲刺测试卷含完整答案详解(必刷)
- 2026年综治网格中心业务知识考核题库
- (2025年)无人机考试复习题库附答案详解
- 2026年全国标准化知识竞赛真强化训练高能及参考答案详解(综合题)
- 2026建安杯信息通信建设行业安全竞赛核心考点试题库(选择题)
- 造价审核时效工作制度
- 2026年智慧矿山整体解决方案商业计划书
- 河北沧州市八县联考2025-2026学年高三下学期3月阶段检测英语试题(含解析)
- 河北邯郸市2026届高三第一次模拟检测 化学试卷
- 2026年全国统一税务执法资格考试模拟试卷(附答案)
- 医药公司反贿赂管理制度
评论
0/150
提交评论