第八章机器人编程机器人的主要特点之一是其通用性,使机器人具有可编程能力是实现这一特点的重要手段。机器人编程必然涉及到机器人语言。机器人语言是使用符号来描述机器人动作的方法。它通过对机器人动作的描述,使机器人按照编程者的意图进行各种操作。机器人语言的产生和发展是与机器人技术的发展以及计算机编程语言的发展紧密相关的。编程系统的核心问题是操作运动控制问题。§8.1机器人编程要求与语言类型8.1.1对机器人编程的要求1能够建立世界模型(worldmodel)在进行机器人编程时,需要一种描述物体在三维空间内运动的方法。存在具体的几何型式是机器人编程语言最普通的组成部分。物体的所有运动都以相对于基坐标系的工具坐标来描述。机器人语言应当具有对世界(环境)的建模功能。2能够描述机器人的作业现有的机器人语言需要给出作业顺序,由语法和词法定义输入语言,并由它描述整个作业。3能够描述机器人的运动机器人编程语言的基本功能之一就是描述机器人需要进行的运动。用户能够运用语言中的运动语句,与路径规划器和发生器连接,允许用户规定路径上的点及目标点,决定是否采用点插补运动或笛卡儿直线运动。用户还可以控制运动速度或运动持续时间。4允许用户规定执行流程机器人编程系统允许用户规定执行流程,包括试验和转移、循环、调用子程序以至中断等。5要有良好的编程环境一个好的编程环境有助于提高程序员的工作效率。机械手的程序编制是困难的,其编程趋向于试探对话式。从而导致工作效率低下。现在大多数机器人编程语言含有中断功能,以便能在程序开发和调试过程中每次只执行一条单独语句。典型的编程支撑(如文本编辑调试程序)和文件系统也是需要的。6需要人机接口和综合传感信号在编程和作业过程中,应便于人与机器人之间进行信息交换,以便在运动出现故障时能及时处理,确保安全。随着作业环境和作业内容复杂程度的增加,需要有功能强大的人机接口。8.1.2机器人编程语言的类型1动作级编程语言动作级语言是以机器人的运动作为描述中心,通常由指挥夹手从一个位置到另一个位置的一系列命令组成。动作级语言的每一个命令(指令)对应于一个动作,如VAL语言。动作级编程又可分为关节级编程和终端执行器编程两种。·关节级编程关节级编程程序给出机器人各关节位移的时间序列。·终端执行器级编程终端执行器级编程是一种在作业空间内直角坐标系里工作的编程方法。2对象级编程语言对象级语言解决了动作级语言的不足,它是描述操作物体间关系使机器人动作的语言,即是以描述操作物体之间的关系为中心的语言,这类语言有AML,AUTOPASS等。AUTOPASS是一种用于计算机控制下进行机械零件装配的自动编程系统,这一编程系统面对作业对象及装配操作而不直接面对装配机器人的运动。3任务级编程语言任务级语言是比较高级的机器人语言,这类语言允许使用者对工作任务所要求达到的目标直接下命令,不需要规定机器人所做的每一个动作的细节。只要按某种原则给出最初的环境模型和最终工作状态,机器人可自动进行推理、计算,最后自动生成机器人的动作。决定编程语言具有不同设计特点的因素•语言模式、型式•几何学数据形式•旋转矩阵的规定与表示•控制多个机械手的能力•控制结构、模式•运动形式•信号线•传感器接口•支援模块•调试性能§8.2机器人语言系统结构和基本功能8.2.1机器人语言系统的结构•机器人语言系统的结构·包含语言本身和处理系统·支持机器人编程、控制·支持与外围设备、传感器和机器人接口·支持和计算机系统的通信·包括三个基本的操作状态•监控状态•编辑状态•执行状态图8-1机器人语言系统8.2.2机器人编程语言的基本功能1运算在作业过程中执行的规定运算能力是机器人控制系统最重要的能力之一。2决策机器人系统能够根据传感器输入信息做出决策,而不必执行任何运算。3通讯人和机器能够通过许多不同方式进行通讯。4机械手运动可用许多不同方法来规定机械手的运动。5工具指令一个工具控制指令通常是由闭合某个开关或继电器而开始触发的,而继电器又可能把电源接通或断开,以直接控制工具运动,或者送出一个小功率信号给电子控制器,让后者去控制工具。6传感数据处理用于机械手控制的通用计算机只有与传感器连接起来,才能发挥其全部效用。.2表8国外主要的机器人语言§8.3常用的机器人编程语言表8-1国外主要的机器人编程语言表8-1国外主要的机器人编程语言(续)1VAL语言★由美国Unimation公司推出★是在BASIC语言的基础上扩展的机器人语言★适用于机器人两级控制系统★主要用于PUMA机器人、UNIMATE2000和NIMATE4000系列机器人★VAL语言的主要特点•编程方法和全部指令适用性广•指令简明•指令及功能均可扩展•可调用子程序组成复杂操作控制•可连续实时计算和产生机器人控制指令,实现人机交联2SIGLA语言★由意大利OLIVETTI公司研制的非文本型类语言★可在RAM大于8k的微型计算机上执行也可事先固化在PROM中★多个指令字为用户提供了定义机器人任务的能力•在SIGMA型机器人上,装配任务常由若干子任务组成•设计了32个指令定义字完成对子任务的描述及将子任务进行相应的组合★指令定义字的要求·描述各种子任务·将各子任务组合起来成为可执行的任务★指令定义字的分类·输入输出指令·逻辑指令·几何指令·调子程序指令·逻辑联锁指令·编辑指令3IML语言★由日本九州大学开发,是一种着眼于末端执行器动作进行编程的动作级语言★数据类型有标量、矢量和逻辑型数据★用直角坐标系来描述机器人和目标物体的位姿•固定在机器人上的机座坐标系•固定在操作空间的工作坐标系★命令以指令形式给出,由解释程序来解释•使用者定义的用户指令•系统提供的基本指令★用户利用该语言给出机器人的工作点、操作路线,或给出目标物体的位置、姿态,直接操纵机器人★IML语言还具有的特征•描述往返运作可以不用循环语句•可以直接在工作坐标系内使用•能把要示教的轨迹(末端执行器位姿向量的变化)定义成指令,加入到语言中。所示教的数据还可以用力控制方式再现出来。4AL语言★由美国斯坦福大学人工智能实验室开发★原设计用于有传感反馈的多个机器手并行或协同控制的编程★AL系统硬件应包括后台计算机、控制计算机和多台在线微型计算机★基本功能语句•标量(SCALAR)•向量(VECTOR)•旋转(ROT)•坐标系(FRAME)•变换(TRANS)•块结构形式•运动语句(MOVE)•手的开合运动(OPEN,CLOSE)•两物体结合的操作(AFFIX,UNFIX)•力觉的处理功能•力的稳定性控制•同时控制多台机械手的运动语句(COBEGIN,COEND)•可使用子程序及数组(PROCEDURE,ARRAY)•可与VAL语言进行信息交流§8.4机器人的离线编程1机器人离线编程的特点和主要内容随着机器人应用范围的扩大和所完成任务复杂程度的提高,示教方式编程已很难满足要求机器人离线编程系统利用计算机图形学建立机器人及其工作环境的模型,再利用规划算法通过对图形的控制和操作,在离线的情况下进行轨迹规划表8-2示教编程和离线编程两种方式的比较★离线编程的优点•可减少机器人非工作时间,当对下一个任务进行编程时,机器人仍可在生产线上工作•使编程者远离危险的工作环境•使用范围广,可以对各种机器人进行编程•便于和CAD/CAM系统结合做到CAD/CAM/机器人一体化•可使用高级计算机编程语言对复杂任务进行编程•便于修改机器人程序★离线编程系统的主要内容•机器人工作过程的知识•机器人和工作环境三维实体模型•机器人几何学、运动学和动力学知识•基于图形显示和可进行机器人运动图形仿真的关于上述内容的软件系统•轨迹规划和检查算法•传感器的接口和仿真,以用传感器信息进行决策和规划•通讯功能,进行从离线编程系统所生成的运动代码到各种机器人控制柜的通讯•用户接口,提供有效的人机界面,便于人工干预和进行系统的操作2机器人离线编程系统的结构图8-2机器人离线编程系统框图机器人离线编程系统主要由用户接口、机器人系统构型、运动学计算、轨迹规划、动力学仿真、平行操作、传感器仿真、通讯接口和误差校正9部分组成。①用户接口工业机器人一般提供两个用户接口·用于示教编程,可以用示教盒直接编制机器人程序。·用于语言编程,即用机器人语言编制程序,使机器人完成给定的任务②机器人系统的三维构型构型的三种主要方式·结构立体几何表示·扫描变换表示·边界表示边界表示最便于形体在计算机内表示、运算、修改和显示结构立体几何表示所覆盖的形体种类较多扫描变换表示则便于生成轴对称的形体机器人系统的几何构型大多采用这三种形式的组合③运动学计算•分为运动学正解和运动学反解两部分·正解是给出机器人运动参数和关节变量来计算末端位姿·反解则是由给定的末端位姿计算相应的关节变量值•就运动学反解而言,离线编程系统与机器人控制柜的联系有两种选择·用离线编程系统代替机器人控制柜的逆运动学,将机器人关节坐标值通讯给控制柜·将笛卡儿坐标值输送给控制柜,由控制柜提供的逆运动学方程求解机器人的形态④轨迹规划•规划的两种类型·自由移动(仅由初始状态和目标状态定义)·依赖于轨迹的约束运动•约束运动受到路径、运动学和动力学约束•自由移动没有约束条件•轨迹规划器接受路径设定和约束条件的输入,并输出起点和终点之间按时间排列的中间形态序列,它们可用关节坐标或笛卡儿坐标表示•轨迹规划器采用轨迹规划算法⑤动力学仿真•当机器人跟踪期望的运动轨迹时,如果所产生的误差在允许范围内,则离线编程系统可以只从运动学的角度进行轨迹规划,而不考虑机器人的动力学特性。但是,如果机器人工作在高速和重负载的情况下,则必须考虑动力学特性,以防止产生比较大的误差。•快速有效地建立动力学模型是机器人实时控制及仿真的主要任务之一•从计算机软件设计的观点看,动力学模型的建立分为三类·数字法·符号法·解析(数字—符号)法⑥并行操作•定义并行操作是在同一时刻对多个装置工作进行仿真的技术•目的提供对不同装置工作过程进行仿真的环境•工作原理·在执行过程中,首先对每一装置分配并联和串联存储器·如果可以分配几个不同处理器共一个并联存储器,则可使用并行处理,否则应该在各存储器中交换执行情况,并控制各工作装置的运动程序的执行时间⑦传感器的仿真•在离线编程系统中,对传感器进行构型以及能对装有传感器的机器人的误差校正进行仿真是很重要的。•传感器主要分局部的和全局的两类·局部传感器有力觉、触觉和接近觉等传感器·全局传感器有视觉等传感器•传感器功能可以通过几何图形仿真获取信息·如触觉,为了获取有关接触的信息,可以将触觉阵列的几何模型分解成一些小的几何块阵列,然后通过对每一几何块和物体间干涉的检查,并将所有和物体发生干涉的几何块用颜色编码,通过图形显示可以得到接触的信息。·力觉传感器除了要检验力传感器的几何模型和物体间的相交外,还需计算出二者相交的体积,根据相交体积的大小可以定量地表征出实际力传感器所测力和数值。⑧通讯接口•作用·起着连接软件系统和机器人控制柜的桥梁作用·可以把仿真系统所生成的机器人运动程序转换成机器人控制柜可以接受的代码•离线编程系统实用化的一个主要问题·缺乏标准的通讯接口·标准通讯接口的功能是可以将机器人仿真程序转化成各种机器人控制柜可接受的格式•解决办法选择一种较为通用的机器人语言,然后通过对该语言加工使其转换成机器人控制柜可接受的语言⑨误差的校正•目前误差校正的方法主要有两种·基准点方法即在工作空间内选择一些基准点(一般不少于三点),这些基准点具有比较高的位置精度,由离线编程系统规划使机器人运动到这些基准点,通过两者之间的差异形成误差补偿函数·传感器方法利用传感器(力觉或视觉等)形成反馈,在离线编程系统所提供机器人位置的基础上,局部精确定位靠传感器来完成•基准点方法主要用于精度要求不太高的场合(如喷涂)•传感器方法用于较高精度的场合(如装配)VAL程序举例下面是一个程序名为DEMO的VAL程序,功能是将物体从位置1(PICK位置)搬运至位置2(PLACE位置)·EDITDEMO启动编辑状态·PROGRAMDEMOVAL响应⒈?OPEN