第6章机器人控制系统6.1机器人编程要求与语言类型6.2机器人语言系统结构和基本功能6.3常用机器人编程语言6.4机器人的离线编程6.1机器人编程要求与语言类型6.1.1对机器人编程的要求1.能够建立世界模型(worldmodel)2.能够描述机器人的作业3.能够描述机器人的运动4.允许用户规定执行流程5.要有良好的编程环境6.需要人机接口和综合传感信号6.1.2机器人编程语言的类型机器人语言尽管有很多分类方法,但根据作业描述水平的高低,通常可分为三级:(1)动作级;(2)对象级;(3)任务级。1.动作级编程语言动作级语言是以机器人的运动作为描述中心,通常由指挥夹手从一个位置到另一个位置的一系列命令组成。动作级语言的每一个命令(指令)对应于一个动作。动作级语言的代表是VAL语言,它的语句比较简单,易于编程。动作级语言的缺点是不能进行复杂的数学运算,不能接受复杂的传感器信息,仅能接受传感器的开关信号,并且和其他计算机的通信能力很差。VAL语言不提供浮点数或字符串,而且子程序不含自变量。(1)关节级编程关节级编程程序给出机器人各关节位移的时间序列。(2)终端执行器级编程终端执行器级编程是一种在作业空间内直角坐标系里工作的编程方法。2.对象级编程语言对象级语言解决了动作级语言的不足,它是描述操作物体间关系使机器人动作的语言,即是以描述操作物体之间的关系为中心的语言,这类语言有AML,AUTOPASS等。AUTOPASS是一种用于计算机控制下进行机械零件装配的自动编程系统,这一编程系统面对作业对象及装配操作而不直接面对装配机器人的运动。3.任务级编程语言任务级语言是比较高级的机器人语言,这类语言允许使用者对工作任务所要求达到的目标直接下命令,不需要规定机器人所做的每一个动作的细节。只要按某种原则给出最初的环境模型和最终工作状态,机器人可自动进行推理、计算,最后自动生成机器人的动作。任务级语言的概念类似于人工智能中程序自动生成的概念。任务级机器人编程系统能够自动执行许多规划任务。6.2机器人语言系统结构和基本功能6.2.1机器人语言系统的结构机器人语言系统如图所示,它能够支持机器人编程、控制,以及与外围设备、传感器和机器人接口;同时还能支持和计算机系统的通信。机器人语言操作系统包括三个基本的操作状态:(1)监控状态;(2)编辑状态;(3)执行状态。6.2.2机器人编程语言的基本功能基本功能包括运算、决策、通讯、机械手运动、工具指令以及传感器数据处理等。许多正在运行的机器人系统,只提供机械手运动和工具指令以及某些简单的传感数据处理功能。1.运算在作业过程中执行的规定运算能力是机器人控制系统最重要的能力之一。2.决策机器人系统能够根据传感器输入信息做出决策,而不必执行任何运算。3.通讯机器人系统与操作人员之间的通讯能力。4.机械手运动可用许多不同方法来规定机械手的运动。5.工具指令一个工具控制指令通常是由闭合某个开关或继电器而开始触发的。6.传感数据处理用于机械手控制的通用计算机只有与传感器连接起来,才能发挥其全部效用。6.3常用的机器人编程语言6.3.1VAL语言1.VAL语言及特点VAL语言是美国Unimation公司于1979年推出的一种机器人编程语言,主要配置在PUMA和UNIMATION等型机器人上,是一种专用的动作类描述语言。(1)VAL语言系统VAL语言系统包括文本编辑、系统命令和编程语言三个部分。在文本编辑状态下可以通过键盘输入文本程序,也可通过示教盒在示教方式下输入程序。系统命令包括位置定义、程序和数据列表、程序和数据存储、系统状态设置和控制、系统开关控制、系统诊断和修改。编程语言把一条条程序语句转换执行。(2)VAL语言的主要特点1)编程方法和全部指令可用于多种计算机控制的机器人。2)指令简明,指令语句由指令字及数据组成,实时及离线编程均可应用。3)指令及功能均可扩展,可用于装配线及制造过程控制。4)可调用子程序组成复杂操作控制。5)可连续实时计算,迅速实现复杂运动控制;能连续产生机器人控制指令,同时实现人机交联。2.VAL语言的指令VAL语言包括监控指令和程序指令两种。其中监控指令有六类,分别为位置及姿态定义指令、程序编辑指令、列表指令、存储指令、控制程序执行指令和系统状态控制指令。(1)监控指令1)位置及姿态定义指令POINT指令:执行终端位置、姿态的齐次变换或以关节位置表示的精确点位赋值。格式:POINT变量[=变量2…变量n]或POINT精确点[=精确点2]DPOINT指令:删除包括精确点或变量在内的任意数量的位置变量。HERE指令:此指令使变量或精确点的值等于当前机器人的位置。WHERE指令:该指令用来显示机器人在直角坐标空间中的当前位置和关节变量值。BASE指令:用来设置参考坐标系,系统规定参考系原点在关节1和2轴线的交点处,方向沿固定轴的方向。2)程序编辑指令EDIT指令:此指令允许用户建立或修改一个指定名字的程序,可以指定被编辑程序的起始行号。其格式为:EDIT[程序名],[行号]用EDIT指令进入编辑状态后,可以用C、D、E、I、L、P、R、S、T等命令来进一步编辑。如:C命令:改变编辑的程序,用一个新的程序代替。D命令:删除从当前行算起的n行程序,n缺省时为删除当前行。E命令:退出编辑返回监控模式。I命令:将当前指令下移一行,以便插入一条指令。P命令:显示从当前行往下n行的程序文本内容。T命令:初始化关节插值程序示教模式,在该模式下,按一次示教盒上的“RECODE”按钮就将MOVE指令插到程序中。3)列表指令DIRECTORY指令:此指令的功能是显示存储器中的全部用户程序名。LISTL指令:功能是显示任意个位置变量值。LISTP指令:功能是显示任意个用户的全部程序。4)存储指令FORMAT指令:执行磁盘格式化。STOREP指令:功能是在指定的磁盘文件内存储指定的程序。STOREL指令:此指令存储用户程序中注明的全部位置变量名和变量值。LISTF指令:指令的功能是显示软盘中当前输入的文件目录。LOADP指令:功能是将文件中的程序送入内存。LOADL指令:功能是将文件中指定的位置变量送入系统内存。DELETE指令:此指令撤销磁盘中指定的文件。COMPRESS指令:只用来压缩磁盘空间。ERASE指令:擦除磁内容并初始化。5)控制程序执行指令ABORT指令:执行此指令后紧急停止(紧停)。DO指令:执行单步指令。EXECUTE指令:此指令执行用户指定的程序n次,n可以从–32768到32767,当n被省略时,程序执行一次。NEXT指令:此命令控制程序在单步方式下执行。PROCEED指令:此指令实现在某一步暂停、急停或运行错误后,自下一步起继续执行。RETRY指令:指令的功能是在某一步出现运行错误后,仍自那一步重新运行程序。SPEED指令:指令的功能是指定程序控制下机器人的运动速度,其值从0.01到327.67,一般正常速度为100。6)系统状态控制指令CALIB指令:此指令校准关节位置传感器。STATUS指令:用来显示用户程序的状态。FREE指令:用来显示当前未使用的存储容量。ENABL指令:用于开、关系统硬件。ZERO指令:此指令的功能是清除全部用户程序和定义的位置,重新初始化。DONE:此指令停止监控程序,进入硬件调试状态。(2)程序指令1)运动指令指令包括GO、MOVE、MOVEI、MOVES、DRAW、APPRO、APPROS、DEPART、DRIVE、READY、OPEN、OPENI、CLOSE、CLOSEI、RELAX、GRASP及DELAY等。2)机器人位姿控制指令这些指令包括RIGHTY、LEFTY、ABOVE、BELOW、FLIP及NOFLIP等。3)赋值指令赋值指令有SETI、TYPEI、HERE、SET、SHIFT、TOOL、INVERSE及FRAME。4)控制指令控制指令有GOTO、GOSUB、RETURN、IF、IFSIG、REACT、REACTI、IGNORE、SIGNAL、WAIT、PAUSE及STOP。其中GOTO、GOSUB实现程序的无条件转移,而IF指令执行有条件转移。IF指令的格式为:IF整型变量1关系式整型变量2关系式THEN标识符5)开关量赋值指令指令包括SPEED、COARSE、FINE、NONULL、NULL、INTOFF及INTON。6)其他指令其他指令包括REMARK及TYPE。6.3.2IML语言1、定义IML也是一种着眼于末端执行器的动作级语言,由日本九州大学开发而成。IML语言的特点是编程简单,能人机对话,适合于现场操作,许多复杂动作可由简单的指令来实现,易被操作者掌握。2、坐标系ML用直角坐标系描述机器人和目标物的位置和姿态。坐标系分两种,一种是机座坐标系,一种是固连在机器人作业空间上的工作坐标系。3、指令IML语言的主要指令有:运动指令MOVE、速度指令SPEED、停止指令STOP、手指开合指令OPEN及CLOSE、坐标系定义指令COORD、轨迹定义命令TRAJ、位置定义命令HERE、程序控制指令IF…THEN、FOREACH语句、CASE语句及DEFINE等。6.3.3AL语言1、概述AL语言是20世纪70年代中期美国斯坦福大学人工智能研究所开发研制的一种机器人语言,它是在WAVE的基础上开发出来的,也是一种动作级编程语言,但兼有对象级编程语言的某些特征,使用于装配作业。2、编程格式1)程序BEGIN开始,由END结束。2)语句与语句之间用分号隔开。3)变量先定义说明其类型,后使用。变量名以英文字母开头,由字母、数字和下画线组成,字母大、小写不分。4)程序的注释用大括号括起来。5)变量赋值语句中如所赋的内容为表达式,则先计算表达式的值,再把该值赋给等式左边的变量。3.AL语言中数据的类型(1)标量(scalar)可以是时间、距离、角度及力等,可以进行加、减、乘、除和指数运算,也可以进行三角函数、自然对数和指数换算。(2)向量(vector)与数学中的向量类似,可以由若干个量纲相同的标量来构造一个向量。(3)旋转(rot)用来描述一个轴的旋转或绕某个轴的旋转以表示姿态。用ROT变量表示旋转变量时带有两个参数,一个代表旋转轴的简单矢量,另一个表示旋转角度。(4)坐标系(frame)用来建立坐标系,变量的值表示物体固连坐标系与空间作业的参考坐标系之间的相对位置与姿态。(5)变换(trans)用来进行坐标变换,具有旋转和向量两个参数,执行时先旋转再平移。4.AL语言的语句介绍(1)MOVE语句用来描述机器人手爪的运动,如手爪从一个位置运动到另一个位置。MOVE语句的格式为:MOVEHANDTO目的地(2)手爪控制语句OPEN:手爪打开语句;CLOSE:手爪闭合语句。语句的格式为:其中SVAL为开度距离值,在程序中已预先指定。OPENHANDTOSVALCLOSEHANDTOSVAL(3)控制语句IF条件THEN语句ELSE语句WHILE条件DO语句CASE语句DO语句UNTIL条件FOR…STEP…UNTIL…4)AFFIX和UNFIX语句在装配过程中经常出现将一个物体粘到另一个物体上或一个物体从另一个物体上剥离的操作。语句AFFIX为两物体结合的操作,语句AFFIX为两物体分离的操作。5)力觉的处理在MOVE语句中,使用条件监控子语句可实现使用传感器信息来完成一定的动作。监控子语句如:ON条件DO动作例如:MOVEBARMTO⊕-0.1*INCHESONFORCE(Z)10*OUNCESDOSTOP表示在当前位置沿Z轴向下移动0.1英寸,如果感觉Z轴方向的力超过10盎司,则立即命令机械手停止运动。【例】用AL语言编制下图机器人把螺栓插入其中一个孔里的作业。这个作业需要把机器人移至料斗上方A点,抓取螺栓,经过B点、C点再把它移至导板孔上方D点(见图),并把螺栓插入其中一个孔里。编制这个程序的步骤是:定义