基于G代码的工业机器人的自动编程
1 引言(Introduction)
工业机器人编程技术对工业机器人的推广应用及其应用效率的发挥起着越来越重要的作用,从某种意义上说已是工业机器人应用的瓶颈问题。在线编程(包括示教编程、传感器辅助编程等D柔性差、效率低;特别是随着加工制造业数字化、无纸化的发展趋势,常常要求在只提供电子图纸的情况下进行加工,并没有实物或是模型,就无法通过示教来实现。因此,基于CAD/CAM系统的图形交互式离线编程,就成为了工业机器人发展的一个趋势。
德、美、日、法等工业发达国家从20世纪50年代中后期开始,就对工业机器人离线编程技术进行了研究,近年来更是取得了长足的发展,如法国Dasaault公司开发的CATIA应用软件、日本Panasonic公司的DTPS离线编程和仿真软件、美国Delmia公司的Ultraarc软件等,其中一些单元技术已经或正在趋于成熟。但从总体上看,工业机器人离线编程技术尚不成熟,大都处在研究阶段,国内更是鲜见成熟的工业机器人离线编程软件。
现有的离线编程软件大多是对CAD/CAM系统图形格式(如DXF、IGES等D进行编译(而有一些软件是直接编制自己的机器人CAD建模系统D,进以产生机器人代码并加以控制。这样,虽然具有很强的适用性,但是编码过程繁琐,工作量巨大。笔者结合这两点考虑,提出利用G代码作为中转,实现机器人的自动编程的方法。
G代码早在20世纪70年代就已经作为一种ISO标准被广泛应用于各种数控机床中,它将图纸中工件的点、线、面的信息提取为加工工具的运动路径这就大大简化了将其转换为机器人加工指令的难度。并且几乎所有的大型CAD/CAM制图软件如UG、Pro/e、MasterCAM及AutoCAD都可以直接生成G代码文件。因此对于工业机器人自动编程G代码可以作为一座很好的桥梁既避免了独立开发机器人CAD/CAM软件的巨大工作量又提供了一条机器人与数控机床(通过G代码)直接进行交流的途径同时还增加了本软件的通用性。
2 系统结构(Systemstructure)
目前很多大型的CAD/CAM系统像UGS公司的Unigraphics,PTC公司的Pro/Engineer,IBM公司的CATIA等,其CAM子系统与CAD和CAE等子系统在系统底层一级集成式开发,CAD子系统提供强大的复杂产品造型与设计功能生成的产品数字化定义模型为CAM子系统提供完备的数据服务;CAM子系统直接在产品数字化模型上进行NC轨迹计算,利用强大的后置处理模块生成NC指令。该自动编程系统在文件一级(NC代码)操作平台的CAD/CAM产品模型,利用特征识别(eatureRecognition)技术直接在产品模型上获取一定复杂程度的加工区域几何表示及其加工工艺规范,同时也支持用户的交互指令操作。
可以将该自动编程系统看作是一种以现有CAD/CAM系统为依托的专用CAM子系统的延续开发图1为其结构原理图。CAD/CAM平台为自动编程系统提供功能支持,利用CAD软件制作加工工件的电子图纸再利用合适的CAM软件将之转化为G代码。
自动编程系统利用生成的G代码根据机器人的运动特点进行必要的坐标转换生成合适的机器人运动指令并对加工轨迹进行交互模拟仿真;同时,自动编程系统中的仿真与转换模块与机器人控制器进行通信实时传输数据控制机器人完成加工作业。
ISO-G代码标准中使用了笛卡儿坐标系,排除了各种数控机床实际结构上的差别,在进行坐标系的转换时,如果机器人加工坐标系也是笛卡儿坐标系(如直角坐标系、圆柱坐标系)则需进行必要的旋转、平移转换,而对于关节坐标系,还需进行机器人的逆运动学方程的求解。另一方面由于数控机床和机器人在加工特点上的差异,对于机器人加工时所必须的末端执行器的姿态,无法从G代码中直接得到,将不同的指令按照不同的算法求得机器人相应的姿态,并利用轨迹仿真模块进行改正和优化这也是轨迹仿真模块除预测碰撞之外的另一重要用途。
3 G代码的功能转换与扩展(Functional transformandextensionofG-codes)
由于机器人坐标系统跟数控机床有很大的差异,对于空间点的定义以及执行末端在空间点处的姿态就有很大的差异,因此必须分析G代码各指令中参数的具体含义,将其转化为机器人的位姿。对于G代码中缺少执行末端的姿态描述的,必要时要结合三维立体图求出特定点、线或面的法向量,并由此确定机器人的加工姿态,这就要求必须从机器人运动学、动力学的角度,分析机器人的运动特点,利用立体几何的知识在三维空间中求解。因此,要实现G代码在机器人系统上的应用,应该做到:
♦针对机器人的运动特点将G代码中有待扩充的一些指令合理地编译为机器人指令;
♦为了操作简便必须具有友好的人机界面,能够对G代码进行文本显示以及所表示的运动轨迹的仿真显示,对机器人的加工过程进行简单的模拟仿真;
♦为了实现软件的自动化、智能化,该软件应该具有一定的纠错功能对于G代码格式文件的语法错误能够识别并加以处理;对于机器人的工作空间和工件的形状能够进行仿真检验防止加工工具超出其运动空间或加工工具与工件之间发生干涉、碰撞等事故;
3.1 轨迹插补转换
在数控机床系统和机器人系统中关于直线插补的定义比较简单,也具有一定的相似性,都是给定两个端点来确定该线段,而对于圆弧插补却存在很大的差异。
在G代码中,有两种定义圆弧的方式,一种是以圆弧的起始点、终止点以及圆心(S-E-O)来定义的,另一种是以圆弧的起始点、终止点以及半径(S-E-R)来定义的,而在机器人JOB文件中,圆弧是以圆弧上的3个点来定义的。因此,再将G代码中的圆弧插补转换成机器人文件的相应指令时,应当首先求出圆弧上的第三个点。
3.1.1 S-E-O格式的圆弧插补转换
如图2(a)所示,已知圆弧的起点A(x1,y1,z1)终点B(x2,y2,z2)以及圆心0(x0,y0,z0)。对于第三点,可以取弧上的任意一点,我们取圆弧AB的中点。而又由于在由点A、B、O确定的圆上,有2个点(图上所示为C1、C2)满足上述要求,因此还必须根据所求弧是顺弧还是逆弧来确定。结合数控机床或者机器人坐标系中,远离加工工件的方向为坐标正向的规定,设向量积:
3.1.2 S-E-R格式的圆弧插补转换
根据已知条件仅仅依靠圆弧的起点、终点和半径,无法在三维空间中确定特定的圆,因此必须依靠在G代码中选定平面指令(G17,G18,G19)先选定平面,再在平面内对圆弧进行编辑。
在一个平面内,由两点及半径可以确定两个相交的圆,两个圆的公共弦AB将这两个圆分成四个圆弧,由此可以求出四个共线的圆弧中点。对于这四个点,首先可以考察它们离公共弦A距离的大小来判断大弧、小弧,对于顺弧、逆弧的选择则要靠以下的方法来解决。如图2(b)所示(假设所求为小弧。大弧亦同),由向量倾角的公式:
3.2 关于点的姿态的确定
由于在G代码中对于执行末端的姿态涉及很少,也不符合机器人的要求,因此对于机器人的姿态需要加以补充。
由于多数情况下,数控机床是选择3,个基本平面XY、YZ、ZX来进行加工的,我们可以定义加工工具的法线跟加工平面的夹角和加工工具在加工平面的某条坐标轴之间的夹角来唯一的确定加工工具的姿态,如图3所示。
这样以来大部分点的姿态就可以确定了,但是为了避免加工工具在加工过程中的脉动现象,以及在加工平面发生变化时,点的姿态的错误定义,还必须在仿真演示阶段进行修改和优化。
4 自动编程的软件实现(Softwarerealizationofauto-programming)
在Windows平台下开发控制软件可利用Windows丰富的资源方便地生成各种菜单及图形界面软件产品质量高且开发周期短。VisualC++6。0是Microsoft公司推出的功能强大的Windows开发软件,利用该工具可以方便地开发Windows下的32位应用程序。OpenGL是一个开放的三维图形软件包,独立于窗口系统和操作系统,能十分方便地在各平台间移植。本软件就是采用VC++6。0并使用Win32API以及OpenGL开发工具包所开发设计出的Windows下的离线编程软件。
从软件结构考虑(如图4所示),我们可以将自动编程的过程分为以下几个模块:
♦G代码到机器人语言的转换编译模块
♦机器人末端执行器的运动轨迹仿真模块
♦PC上位机跟机器人控制器进行交互的通信模块实时监控模块
主控模块是控制软件的核心,它采用Windows标准的文档和窗口界面,整个界面要做到交互性良好,能提供足够的提示信息,操作简单易懂。主控模块通过菜单或工具条提供给用户操作机器人的途径;此外由于机器人控制系统是一个多任务的实时操作系统,主控模块还负责各个子模块任务的启动和调度。在32位Windows系统中通过进程和线程来实现多任务。也即可以在进行一项操作时,同时进行其它操作。
4.1 G代码编译和轨迹仿真模块
按照机器人的运动特点,将G代码转化为机器人运动指令,对轨迹进行仿真显示并对加工工具的位姿进行动态优化,将修改后的机器人运动指令保存为JOB文件。其流程图如图5所示。
(1)G代码行的词法分析。主要是对各类功能词进行分析,转换并记录数据,设置标志。功能词主要有,注释符、行号(N--)、G功能字(G--)、M功能字(M--)、坐标运动(X,Y,Z)、圆弧参数(I,J,K,R)、加工参数(S,F)、子程序指令(P,L)、赋值语句等。
(2)G代码程序错误的检查。对于G代码中的很多错误,可以在G代码的转换过程中加以提示或更正,例如小数点的检查,在词法分析时就可以进行。若用户通过对话框设置了小数点检查,在得到坐标的字符串后,检查字符串中是否含有小数点,如果没有,则在屏幕上弹出一个消息框,提示某行某坐标不含小数点的出错信息,并将该信息写入错误记录文件。圆弧终点正确性的检查要放在加工工具运动处理阶段进行。先计算出圆弧的几何参数,然后比较圆弧起点和终点处的两个半径值,如果半径差超出设定值,则说明圆弧终点不正确。
(3)G代码行的加工工具运动处理。针对非补偿状态、补偿状态~子程序状态分别进行处理。在非补偿状态下,从G代码程序中读入的直线和圆弧存储在路径行中,读完G代码程序后,转换成加工工具轨迹。在补偿状态下,补偿前和补偿部分的直线和圆弧分别存储在不同的数据结构中,前者转换成加工工具轨迹,后者通过加工函数得到加工工具轨迹,然后链接起来。
(4)机器人执行末端轨迹仿真。包括2部分:点及加工工具姿态的优化和干涉碰撞预测。
第一,对于点及加工工具姿态的优化。由于机器人的坐标系统跟数控机床有很大的差异,在机床的加工过程中,加工工具的姿态很少会改变,它是通过多轴联动实现多维的加工要求,而在机器人系统中,执行末端的姿态却是至关重要的。虽然可以通过对需要加工的工件可以建立数学模型,利用线或面的法向量来求其姿态值,但这样对于无法预料的太过复杂的形体工作量跟难度都很大,也无法完全排除姿态错定的情况。因此可以通过对机器人执行末端的运动轨迹进行仿真显示,来演示并能动态地修改末端的姿态。
第二,对于干涉碰撞预测。由于自动编程不像手工示教那样发现错误即时改正,若是不能对干涉碰撞等情形进行预测,很可能造成工件或机器人的损坏。为了避免这种情况,对干涉碰撞的预测也就显得至关重要了,这也是仿真模块很重要的一个功能。对于图形的三维仿真,通常采用八叉树法。首先构造工件~夹具~加工工具等形体的最小外接立方体,并视它们为八叉树的根结点,然后把这些立方体分割成个小立方体,并且把这个立方体作为根结点的子结点,分别检查这8个结点。对包含形体边界的子结点再进行分割,直至达到误差限度。最后根据2个立方体是否相交来判断是否发生了干涉碰撞。
4.2 通信和监控模块
通信主要包括PC机跟机器人控制器之间进行的机器人运动指令文件~控制指令~性能参数等的传输。
以Motoman机器人为例,由于我们只是利用MotomanXRC控制器的通信协议进行开发,并不对其系统进行改造设计,所以,我们只需知道高层的协议,如通信帧格式,差错校验算法,传输过程,错误处理机制,线路连接方式等,编制相应的程序。
5 结论(COnclusiOn)
我们以典型的工业机器人,MotomanP6机器人为对象进行了研究,编制了相应的软件,实现了本文所提出的基于G代码的工业机器人自动编程技术:将G代码转化为机器人的运动指令,对轨迹点以及加工工具的姿态进行动态优化及仿真演示,对干涉、碰撞等情形进行了预测,实现了简单情况下的机器人离线编程。
目前,本文提出的自动编程技术还处于研究阶段,还只是以Motoman机器人为特例对机器人自动编程技术的一种新方法的尝试,软件本身也还并不完善,对各种复杂情况的处理也有待改进,离实现产品化、实用化还有一定的差距。但是本文提出的基于G代码的自动编程思想能够充分利用现有技术优势(各种优秀的CAD/CAM软件),人才优势(大量熟悉上述软件,熟悉数控编程的技术人员),对于工业机器人提高效率,扩展应用领域,进一步发展有着重要意义。
最新产品
同类文章排行
- 中国制造业现状剖析
- 未来直线电机的优势应用及未来发展
- 工业机器人机遇就在眼前
- 工业自动化趋势已经成型 未来发展潜力巨大
- 经合组织:自动化发展将影响就业市场
- 中国首席信息官 把自动化和人工智能列作优先事项
- 高端装备制造业的变革与创新
- 高精度电机依赖进口 国产机器人自主化进程缓慢
- 中国智能工厂产业链及发展趋势分析
- 东莞市正式发放第二批“机器换人”资助资金