[发明专利]一种机器人离线编程信息处理系统及方法有效
申请号: | 201910911607.8 | 申请日: | 2019-09-25 |
公开(公告)号: | CN110625615B | 公开(公告)日: | 2021-06-29 |
发明(设计)人: | 周向东;宋宝;唐小琦;叶海洋;方伟洋;谢晨光;尹超;莫楚轩 | 申请(专利权)人: | 华中科技大学 |
主分类号: | B25J9/16 | 分类号: | B25J9/16 |
代理公司: | 北京金智普华知识产权代理有限公司 11401 | 代理人: | 杨采良 |
地址: | 430074 *** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 机器人 离线 编程 信息处理 系统 方法 | ||
1.一种机器人离线编程信息处理方法,其特征在于,包括以下步骤:
第一步,加载机器人与工件模型,对工件模型进行解析,通过建立虚拟仿真环境加载机器人与工件模型,设置工件坐标,选择机器人工具;显示模块和工件模型解析为离线编程软件对模型文件的初始操作,工件模型解析对模型文件的图元信息依次进行读取,再通过数组缓冲区的结构对特征数据依次进行存储;显示模块将模型文件及机器人文件转化为仿真图元,在虚拟仿真环境中进行显示,通过坐标变换关系,实现机器人及工件在仿真环境下的变换;通过对工件模型解析获取图元的几何信息,最终生成离线编程程序;采用DXF作为模型文件类型;通过DXF开源的数据格式,进行数据文件识别,提取数据文件中图元内容信息;选用Qt结合OpenGL接口实现Windows下虚拟仿真的功能;机器人中的各机器臂与工具均采用STL格式文件,编写XML初始化文件约束各关节与工件的初始坐标关系;离线编程程序读取XML初始化文件与STL格式文件,利用OpenGL实现机器人在虚拟仿真平台的显示,机器人的坐标原点设置在虚拟仿真平台的原点;在CAD中绘制工件图形,并保存为DXF格式文件;离线编程程序读取DXF格式文件,将DXF格式文件中图元信息传输到虚拟仿真环境中,工件的坐标与在绘图时坐标相同;虚拟仿真环境下设置工件位置,将工件移至机器人能够到达的位置,选择机器人工具的编号,完成模型解析与显示功能;
所述第一步中的所述模型解析对模型文件的图元信息依次进行读取,再通过数组缓冲区的结构对特征数据依次进行存储;显示模块将模型文件及机器人文件转化为仿真图元,在虚拟仿真环境中进行显示,通过坐标变换关系,实现机器人及工件在仿真环境下的变换,具体包括:
(1)工件模型的文件特征提取及存储
离线编程首先需要加载工件模型的DXF模型文件,再进行解析与轨迹生成;DXF文件包括HEADER段,CLASSES段,TABLES段,BLOCKS段,ENTITIES段,OBJECT段和文件的结束符号EOF段;DXF文件包含不同的图元,不同的图元所包含的特征内容和属性各不相同,根据机器人运行轨迹需要的图元的特征类型,将DXF模型文件的部分图元定义成结构体;DXF模型文件的每种图元由组码来进行标识,每个图元内部又由不同组码对应不同的图元特征;根据DXF模型文件的结构、图元类型定义、组码对应关系内容,对DXF模型文件进行顺序解析,将解析得到的图元内容存储在数组缓冲区中;
所述根据DXF模型文件的结构、图元类型定义、组码对应关系内容,对DXF模型文件进行顺序解析,将解析得到的图元内容存储在数组缓冲区中,具体包括:打开DXF模型文件所在位置,读取数据,判断文件头部是否存在结尾EOF段,若存在则关闭文件,否则,搜索数据中的实体段,根据组码顺序依次识别图元的特征,插入对应的数组缓冲区中;若图元的特征不能够解析,跳过该图元的特征,输出不能解析的原因,继续解析下一图元,直至实体段结束,关闭DXF模型文件;图元由固定排列的组码表示,利用解析流程获取图元的特征,顺序将解析内容存储到数组缓冲区;遍历数组缓冲区结构,顺序得到DXF模型文件的所有图元信息;
(2)文件解析内容存储数组缓冲区结构设计
DXF模型文件解析内容在进行存储时,将记录各个图元的绘制顺序,在进行解析时,采取顺序存储的数据结构;根据固定排列有序的组码,依次遍历提取图元信息,进行数据存储;两次遍历实体段,第一次遍历确定数组的长度,第二次填充数组缓冲区;设计数组缓冲区的结构便于在虚拟仿真环境对工件位置修改时,能够及时修改工件位置,在加载结束后,将数组缓冲区内容写入DXF模型文件中;
顺序读取时,根据类型标志判断图元类型,类型标志定义为整数类型;在进行储存时,根据类型标志提取出图元类型所对应的数据信息及数据长度,在数组中依次进行储存;当实体段解析完成后,结束存储的过程,并将数组的尾端赋值为EOF,作为数组缓冲区的结束标志;在进行读取时,根据图元类型与类型值的对应关系,得出图元内容的长度及各图元特征值;
(3)虚拟仿真功能的实现
调用OpenGL接口创建虚拟仿真环境;再将机器人连杆模型导入到设置的地面坐标系的原点处;通过关节变换矩阵,实现移动、旋转机器人坐标,捕捉机器人工具的末端轨迹;
机器人连杆模型导入虚拟仿真环境是将机器人连杆的STL文件转化为OpenGL中的几何数据,通过设置的XML配置文件约束连杆之间的起始位置关系,再依次读取XML配置文件中指定各关节及工具的STL文件;读取STL文件即依次读取三角形面片的网格信息,并获取网格数量,建立复合对象;对网格数量进行判断,若网格数量大于0,则提取网格顶点和方向,由顶点形成网格,网格形成面,将面加入复合对象;直到网格数量等于0,将复合对象组成几何形状,显示在界面上;
初始状态下,离线编程软件从虚拟控制器中文件中加载出预设工业机器人模型,初始化机器人底座的位置原点与地面坐标系的原点重合;显示机器人工具的末端的运行轨迹功能是在机器人运行时,连续记录机器人工具的位置坐标,同时在OpenGL中加载并渲染,实时在虚拟仿真界面显示;通过运动轨迹与原始工件模型的比较,验证离线编程程序的正确性;
工件模型信息已经读取到数组缓冲区中,显示模块对数组缓冲区进行顺序读取即可;读取时,首先得到的是图元的类型,再根据类型得到图元特征依次读取;将读取的位置通过OpenGL进行加载,在仿真环境中显示工件模型;
第二步,对工件轮廓轨迹进行插补计算,将插补生成的源代码导入到代码解释器模块,具体包括:对虚拟仿真环境中工件位置进行识别解析,获取工件的加工路径与加工顺序,对加工路径中图元进行插补计算,顺序生成机器人指令行,将相应的插补点对应于指令行,输出机器人运动源代码;
机器人运动源代码包括位置数据段、运动指令段,位置数据段为机器人各个插补点的坐标及机器人姿态数据;运动指令段包括机器人运动类型、速度、附加指令;插补点的坐标根据工件的加工路径按照加工顺序依次插补得到;对机器人运动源代码进行遍历检测,若相邻轨迹之间不连续,则添加过渡段;
第三步,对机器人运动源代码语法进行合法性检查,检查通过后给机器人运动源代码添加属性段和轨迹过渡段内容,生成目标代码;通过虚拟控制器反解机器人关节运行信息,对目标代码进行仿真验证;
所述第三步具体包括:
(1)离线编程程序文件的编程指令格式
离线编程程序以设定的固定格式存储机器人的位置信息与运动指令,代码解释器模块负责将机器人运动源代码解释成虚拟控制器所需要的数据结构格式;
离线编程程序由属性段、位置数据段、运动指令段构成,包含了机器人实际运行时需要的所有信息;离线编程程序以prog作为程序启动标志,在prog前任何字节忽略;attr是属性段开始的标志,其后跟属性段各项内容;pos作为位置数据段标志,其后跟离线编程程序所需要的各个点的位置坐标;begin和end中间内容为机器人的运动指令段;
属性段包含文件类型、评论、默认组、程序行数;评论是在离线编程程序生成后,操作人员在离线编程程序中添加离线编程程序需要注意的内容信息;由于离线编程软件同时连接多台虚拟控制器,共设置五组数值,默认连接为第一组;程序行数是运动指令段内容的行数,程序行数由运动指令段内容计算得到;
位置数据段包含机器人的位置和姿态,位置(X,Y,Z)表示世界坐标系下的工具中心的位置数据,(A,B,C)表示世界坐标系下机器人绕X轴、Y轴、Z轴的角位移;
(2) 自动生成离线编程程序
位置数据段与运动指令段共同组成机器人运动轨迹,位置数据段是机器人运动类型需要的轨迹点位置,由DXF模型文件解析得到,按照解析顺序排列,依次存储;在仿真验证时,根据机器人运动路径,手动添加位置和姿态;
运动指令段内容根据图元类型选择直线运动或圆弧运动;若图元类型为样条曲线,根据控制点、拟合点、权值进行插补运算,将符合精度要求的插补点根据图元类型选择运动方式;
在自动生成离线编程程序时,判断上一轨迹图元结束端点是否与下一轨迹图元的起始端点相同;若相同,则代表轨迹连续,不插入过渡段,否则在两轨迹之间插入过渡段;过渡段内容根据机器人的位置,直线向上运动适当位置,再从上一段轨迹的结束点位置运行到下一段轨迹的起始点坐标;
(3) 设计代码解释器模块
代码解释器模块对离线编程程序进行准确性检查,将程序转化为中间数据结构,传送到虚拟控制器中,控制机器人在虚拟仿真模块中运动;第一遍扫描做三次语法准确性检查,若出错则输出错误信息,检查通过,进行第二遍扫描,进行语义分析,提取机器人运动源代码信息,生成目标代码;通过空格来划分机器人运动源代码中运动指令段的单词;
第一遍扫描的三轮检查全部通过后,进行第二遍扫描,提取机器人运动源代码中运动指令段内容,转化成目标代码;设计链表结构存储源程序的运动指令段,链表的节点结构体对应于指令行中指令特征,由上一行的链表节点指向下一行的链表节点;
所述步骤(2)自动生成离线编程程序前还需进行:
模型文件特征提取:模型文件在进行解析后,模型特征数据存储在数组缓冲区的数据结构中以供在作业文件程序自动生成时使用;将模型文件特征与编程指令格式结合生成作业文件程序;数组缓冲区结构的存储块读取首先需要通过图元类型标志flag来判断图元类型,得到图元类型后,即能判断出图元的特征值以及存储块长度,可知下一个存储块的起始位置,若遇到EOF结束标志,停止模型文件特征提取;
步骤(3)设计代码解释器模块进一步包括:
代码解释器模块首先载入源程序,并加载源程序的运动指令段,通过正则表达式将运动指令段通过空格进行分解,提取出其中的运动类型、位置数据、进给速度、定位路径、附加运动指令;
代码解释器模块对源程序进行第一遍扫描共进行三轮检查;第一轮为词法分析,词法分析是通过空格分隔运动指令段内容,对分隔的字符串进行依次判断,判断其是否符合编程指令格式;若出错则输出错误行和错误项,否则进行内部转化记录;第二轮为语法分析,对单条运动指令段进行组合,按照特定的语法规则与匹配语句中的指令行,若出现错误,则输出错误行和错误原因,进行错误处理;第三轮为语义分析,语义分析是对语句的含义进行检查;若语义出错,则输出相应错误行,错误原因,进行错误处理;
链表的节点结构体记录了运动指令行号、指令运动类型、指令段内容,指令段内容也是结构体形式;通过链表记录源程序结构,在虚拟控制器中有专门的接口对链表进行解释,获取链表内容,实现了源程序向虚拟控制器的传输;
其中,词法分析是对源代码中的运动指令段空格分离的单词进行分析,转化为识别的符号表;若遇到机器人运动源代码中存在无法识别的字符串,则词法分析出错,输出错误行,进行错误处理;
语法分析是对机器人运动源代码中单条指令进行组合,按照特定的语法规则去匹配语句中的指令行;若语法出现错误,则输出错误行,进行错误处理;
语义分析是对语句的含义进行检查,判断运动点是否在机器人运动范围内和机器人是否会发生碰撞,若语义出错,则输出相应错误行、错误原因,进行错误处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910911607.8/1.html,转载请声明来源钻瓜专利网。