一种协作机器人图形化编程系统的制作方法

文档序号:21970681发布日期:2020-08-25 19:00阅读:253来源:国知局
一种协作机器人图形化编程系统的制作方法

本发明涉及一种图形化编程系统,特别涉及一种协作机器人图形化编程系统。



背景技术:

目前,目前,随着科学技术的发展与人力成本的提高,越来越多的公司选择用协作机器人代替工人工作。机器人与人交互的核心就是编程系统,现阶段,机器人语言是一种在人与机器之间相互交换信息或者记录信息的程序语言,它与传统的高级语言相似。但是协作机器人更多的是面向非计算机专业的用户,而且需要灵活的编程,传统的机器人语言比较晦涩难懂,而且不利于理解掌握,所以不能广泛的满足用户的编程需求。

基于这样的背景下,研究一种直观、简单的编程系统是非常有必要的。为此,开发一种机器人图形化编程可以大大缩短操作者的学习时间,降低协作机器人操作的准入门槛。

如申请公布号为cn107972035a,公布日为2018.05.01的中国专利公开了一种工业机器人指令集及其图形化处理方法。包括接收操作指令,对操作指令进行处理,生成图形按钮,图形按钮与动作对应。但是图形化处理得比较简单,各图形化按钮之间的逻辑关系表现得不够清楚,运动中点位信息表达的不清晰,图形化编程的界面不够直观,没有将对应指令集进行编译处理,且没有程序检错的功能。

如申请公布号为cn105843630a,公布日为2016.08.10的中国专利公开了一种基于机器人图形化编程开发的方法。包括基于visualstudio2012开发的图形化编程模块,可视化交互式仿真环境模块搭建可视化交互式仿真环境,但是基于windows系统下开发的图形化界面不是开源的,目前大部分的示教器基于开源的linux系统下开发,所以通用性比较差,使用windows系统的成本比较高。



技术实现要素:

本发明为解决公知技术中存在的技术问题而提供一种开源的且可检错的协作机器人图形化编程系统。

本发明为解决公知技术中存在的技术问题所采取的技术方案是:一种协作机器人图形化编程系统,包括人机界面、解释器以及机器人指令集;所述人机界面基于linux操作系统的qt开发,其设有如下模块:菜单栏模块、工具栏模块、图形化编程模块、图形化接口模块、逻辑模块以及参数编辑模块;所述图形化编程模块用于对机器人指令集进行图形化处理,其包括指令分类库以及对应指令分类库的部件库;所述图形化接口模块用于实现图元操作、触发事件以及事件处理;所述逻辑模块用于规定各图元与函数接口之间以及各图元之间的连接关系;所述参数编辑模块用于实现对图元的信息进行编辑及修改。

进一步地,所述指令分类库包括运动指令库、逻辑指令库、事件指令库、函数指令库、变量指令库、输入输出指令库;所述运动指令库包括直线运动图元、关节运动图元、圆弧运动图元和速度设置图元;所述逻辑指令库包括判断开始图元、判断结束图元、循环开始图元、循环结束图元;所述事件指令库包括等待图元、停止图元、指令跳转图元;所述函数指令库包括新建函数图元、函数结束图元、函数跳转图元;所述变量指令库包括新建变量图元;所述输入输出指令库包括输入输出指令图元。

进一步地,所述逻辑模块规定函数接口及对应图元的属性,其中属性包括父节点、第一级子节点和第二级子节点;每个图元依次按照父节点、第一级子节点、第二级子节点的顺序与一个函数接口相对应,当出现图元属性与函数接口不对应时,所述逻辑模块输出错误信息并禁止图元的拖动或编辑。

进一步地,所述图形化接口模块包括图元操作子模块、触发事件子模块以及事件处理子模块;其中:

所述图元操作子模块用于实现对部件库中的图元进行拖动并进行连线的操作;

所述触发事件子模块用于实现鼠标点击事件及鼠标拖动事件;

所述事件处理子模块用于用户通过外部输入来编辑移动点位信息或逻辑条件信息。

进一步地,所述图形化接口模块通过qt中的qmouseevent鼠标事件和qdrag拖动事件实现,并在qmousemoveevent的鼠标事件启动拖动。

进一步地,所述解释器包括词法分析器、语法分析器和语义分析器。

进一步地,所述词法分析器,根据机器人语言规则,对每条指令按关键字、标识符、常量进行划分,生成单词符号对照表,使每一个单词都有对应的标号值及属性值;所述词法分析器创建一个类的对象来保存对应单词的编号值与属性值,用于语法分析器的调用。

进一步地,所述语法分析器采用上下文无关文法的语法规则,将词法分析器处理后的单词编号值进行处理,将编号值存入到编号表中,利用bnf式文法形成一系列表达式,利用这些表达式形成语法树,最后对语法树进行遍历,形成目标代码。

进一步地,所述图形化编程模块将所有的图元尺寸统一为相同尺寸,将程序编辑区域划分为图元大小的网格,当在程序编辑区域有图元时,使图元自动寻找最近的网格区域放置。

进一步地,还包括通信模块,所述通信模块基于tcp通讯协议,实现所述人机界面和下位机之间的数据传输。

本发明具有的优点和积极效果是:本发明的一种基于图形化的机器人编程系统,其具有编程简单、使用门槛低、编程效率高等特点。使用图像化编程界面可以有效提高编程的效率,有效地降低了编程人员的编程量,也有效的提高了编程的可读性,便于编程人员对已有程序进行修改。

本发明的人机界面基于linux下qt进行开发的,由于linux系统的开源的特点,大大的节省了机器人厂家的成本,使用flex和bison基于linux下c语言开发的解释器,可移植性高,可以将本系统用于不同的机器人厂家,只需要修改机器人指令集与目标代码。

附图说明

图1是本发明的一种应用流程图;

图2是本发明的一种人机界面的显示界面图;

图3是本发明的一种开发流程图;

图4是本发明的一种解释器的开发流程图。

图中:1、菜单栏;2、工具栏;3、指令库;4、编程区。

具体实施方式

为能进一步了解本发明的发明内容、特点及功效,兹列举以下实施例,并配合附图详细说明如下:

请参见图1至图4,一种协作机器人图形化编程系统,包括人机界面、解释器以及机器人指令集;所述人机界面基于linux操作系统的qt开发,其设有如下模块:菜单栏模块、工具栏模块、图形化编程模块、图形化接口模块、逻辑模块以及参数编辑模块;所述图形化编程模块用于对机器人指令集进行图形化处理,其包括指令分类库以及对应指令分类库的部件库;用图元表示指令分类库中的指令,以及用图元表示部件库中的部件。

所述图形化接口模块用于实现图元操作、触发事件以及事件处理;所述逻辑模块用于规定各图元与函数接口之间以及各图元之间的连接关系;所述参数编辑模块用于实现对图元的信息进行编辑及修改。本发明的人机界面利用linux开源操作系统和qt图形开发工具作为开发环境进行搭建;基于linux系统开发的图形界面可以经过交叉编译适用于其他嵌入式示教器上使用,兼容性较强。

在菜单栏1可以进行新建文件、保存文件、运行程序、查看版本内容等操作,也可以在工具栏2点击对应图标进行这些操作,图形化编程模块可以点击对应的模块图元,调用不同的编程图元。将指令库3的图元拖入编程区4可以进行机器人程序的编程。

采用本系统可新建一个图形编程的工程,选择指令分类库,可以选择调用对应的不同属性的部件库,拖动不同部件库中的图元,会调用不同的函数接口,拖动或者点击时会触发不同的事件,拖动图元会触发拖动事件,可以对图元进行拖动,双击图元会触发鼠标事件,对特定的图元会生成编辑界面。

逻辑模块规定了各图元拼接的规则,比如逻辑判断图元在结束的时候要有逻辑判断结束图元,确保逻辑判断语句的范围;逻辑循环图元在结束的时候要有逻辑循环结束图元,确保逻辑循环语句的范围;新建函数图元在结束时要有新建函数结束图元,确保新建函数的范围;新建变量图元不能在上述逻辑判断结束图元、逻辑循环图元以及新建函数图元的图元内部调用;函数跳转图元要在新建函数图元之后调用;停止图元不能在程序开始调用;死循环中不允许调用其他循环、判断语句;循环中不能新建函数等。

在图形化编程界面中为了避免出现拖动图元出现重叠的现象,可将所有的图元尺寸统一为相同尺寸,将程序编辑区域划分为图元大小的网格,当在程序编辑区域有图元时,图元会自动寻找最近的网格区域放置。

进一步地,所述指令分类库可包括运动指令库、逻辑指令库、事件指令库、函数指令库、变量指令库、输入输出指令库;所述运动指令库可包括直线运动图元、关节运动图元、圆弧运动图元和速度设置图元;所述逻辑指令库可包括判断开始图元、判断结束图元、循环开始图元、循环结束图元;所述事件指令库可包括等待图元、停止图元、指令跳转图元;函数指令库可包括新建函数图元、函数结束图元、函数跳转图元;变量指令库可包括新建变量图元;输入输出指令库可包括输入输出指令图元。

进一步地,所述逻辑模块可规定函数接口及对应图元的属性,其中属性可包括父节点、第一级子节点和第二级子节点;每个图元可依次按照父节点、第一级子节点、第二级子节点的顺序与一个函数接口相对应,当出现图元属性与函数接口不对应时,所述逻辑模块可输出错误信息并禁止图元的拖动或编辑。输出错误信息在编程界面上进行显示,提示操作者改正。这样,图形界面中每一个图元对应各自的函数接口,这样拖动一个图元会调用相对应的函数接口而不需要遍历、查找,大大提高了图元解析的速度;图形化编程界面加入了检错与错误处理功能,用户可以根据提示进行错误排查,提高了图形化编程的准确性和编程速度。

图形化接口模块可实现图元操作、触发事件、事件状态分析、错误处理、事件处理等功能。图元的操作指的是对部件库中的图元进行拖动并进行连线的操作;触发的事件主要为鼠标点击事件、鼠标拖动事件,分为单击与双击事件以及拖动事件;事件状态分析指的是确定鼠标事件是否已经触发;错误处理指的是图元的操作与事件的触发是否符合接口逻辑;事件处理指的是用户通过外部输入可以编辑点位信息、条件信息。点位信息为坐标信息,条件信息包括逻辑关系、输入输出、跳转位置。

优选地,所述图形化接口模块可包括图元操作子模块、触发事件子模块、事件状态分析子模块、事件处理子模块以及错误处理子模块等;其中:

所述图元操作子模块用于实现对部件库中的图元进行拖动并进行连线的操作;

所述触发事件子模块用于实现鼠标点击事件及鼠标拖动事件;

所述事件状态分析子模块可用于判断图元当前状态是否满足处理的条件。

所述事件处理子模块用于用户通过外部输入来编辑移动点位信息或逻辑条件信息。

所述错误处理子模块可用于检知图元的操作与事件的触发是否符合接口逻辑。

优选地,所述图形化接口模块可通过qt中的qmouseevent鼠标事件和qdrag拖动事件实现,并在qmousemoveevent的鼠标事件启动拖动。采用在qmousemoveevent的鼠标事件启动拖动的,而不是在qmousepressevent的鼠标事件中启用,这样做的好处是只有在鼠标点击不放并移动过程才会拖动图元,避免操作过程中误点而产生的拖动。qmouseevent、qmousemoveevent、qdrag、qmousepressevent均为qt的指令。

编写完成的源程序进入解释器进行处理,由解释器完成词法分析、语法分析及语义分析,将源代码翻译成可以运行的脚本代码。解释器可具有检错和错误处理功能,对图形化编程中在编辑界面中输入的信息进行检错,如果出现错误,对应的编辑界面的图元会出现错误提示。

进一步地,所述解释器可包括词法分析器、语法分析器和语义分析器。

所述词法分析器,可根据机器人语言规则,对每条指令按关键字、标识符、常量进行划分,生成单词符号对照表,可使每一个单词都有对应的标号值及属性值;所述词法分析器可创建一个类的对象来保存对应单词的编号值与属性值,用于语法分析器的调用。词法分析器对传入的单词进行词法检错,如果没有定义的单词会传给错误处理模块,经过错误处理后返回给人机界面显示出来。

所述语法分析器可采用上下文无关文法的语法规则,将词法分析器处理后的单词编号值进行处理,可将编号值存入到编号表中,可利用bnf式文法形成一系列表达式,利用这些表达式形成语法树,最后对语法树进行遍历,形成目标代码。语法分析器会进行语法错误检查,如果语法出现错误,会调用错误处理模块,错误信息将会在人机界面上显示出来。bnf中文释义为巴科斯范式(bnf:backus-naurform的缩写),其是由johnbackus和peternaur首先引入的用来描述计算机语言语法的符号集。

语义分析器可依照语法制导的编译原理,对所有的机器人语句,都编辑成与机器人语句对应的语义子程序,语法分析的指令跟语义子程序匹配后,可将语法分析器生成的中间代码编译成机器人能够识别的脚本代码。

解释器的流程图可如图4所示,因为图形化程序不能直接通过解释器进行编译,所以编辑生成的图形化程序会自动生成一个由语句构成的源程序,源程序会通过解释器进行编译,生成机器人工作的脚本语言。

首先解释器对源程序进行词法分析,词法分析会进行错误检查,如果出现错误会进行错误处理,并返回给人机界面,用户可以清楚地了解程序错误位置,如果没有错误会生成中间代码a。

中间代码会继续进入语法分析器,语法分析会进行错误检查,如果出现错误进行错误处理,并将错误返回给人机界面,如果没有错误会形成中间代码b。

进一步的中间代码b会进行语义分析,并将中间代码b编译成可以供机器人运动的脚本代码。

进一步地,所述机器人指令集可包括运动语句、逻辑语句、事件语句、函数语句、变量语句及输入输出语句;所述运动语句可包括直线运动语句、关节运动语句及圆弧运动语句;所述逻辑语句可包括if语句、while语句及结束语句;所述事件语句可包括延迟语句、跳转语句及停止语句;所述函数语句可包括新建函数语句、调用函数语句以及函数结束语句;所述变量语句可包括int语句、double语句以及string语句;所述输入输出语句可包括基础io语句及扩展io语句等。

进一步地,本系统还可包括通信模块,所述通信模块可基于tcp通讯协议,实现所述人机界面和下位机之间的数据传输。

经过解释器编译完成的脚本代码,会通过通信模块传到下位机,下位机接收到脚本代码后可以运行程序。

下面以本发明的一个优选实施例来进一步说明本发明的工作方法及工作原理:

本发明的一种图形化编程系统,包括机器人指令集、人机界面、解释器和通信模块。

其中,机器人指令集包括直线运动(movel)、关节运动(movej)、圆弧运动(movec)、速度设定语句(set_v)、if语句、while语句、等待指令(wait)、停止指令(stop)、跳转指令(jump)、新建函数指令(fun)、函数跳转指令(funjump)新建变量指令(var)、以及输入输出指令(in/out)等各种指令。人机界面包括主菜单、工具栏2、编程模块、程序显示区,其中部件库与运动指令集相对应。

在linux系统下通过交叉编译会生成可以在示教器运行的可执行文件,本发明是基于htq的交叉编译环境下测试的,在示教器上执行一个脚本文件,开机会直接调用生成的可执行文件,图形化编程界面会在示教器上显示。

在菜单栏1点击新建文件或者点击工具栏2里的新建按钮可以新建一个机器人程序,点击运动指令库调用机器人的指令部件库,拖动其中的图元到编程界面,如点击编程界面中的直线运动图元,可以在直线运动编辑界面进行点位信息的编辑,手动移动协作机器人到第一个点,点击示教按钮,此时点位信息中的起始点为示教点坐标信息,手动输入终止点的坐标信息,点击确定,程序会自动生成对应的父节点,一级子节点,二级子节点,源程序文件里就会产生直线运动对应的指令。同样的方式可以对机器人指令进行编辑,源程序文件也会形成相对应的指令。

在编程界面可以对图元及图形化界面比如按钮等进行拖动,并可以进行连线操作,各图形化按钮之间存在逻辑关系,如果拖动的图形化按钮不符合逻辑关系,拖动的图形按钮会返回原位置或者连线报错。

点击编译按钮,源文件中会进行编译,将对应的机器人指令集编译成机器人可以识别的脚本指令,此模块是存在于界面后台的,编程人员只需要进行图形化编程,脚本语言是自动生成的。为了提高该系统的适用性,只需要修改机器人指令集与脚本代码,该图形化编程系统可以适用于大部分的机器人。

解释器首先对图形化界面形成的源代码进行词法分析,词法分析的过程是首先源程序按换行符进行分割,每个换行符之间为一条语句,将每条语句存到输入缓存区,词法分析器会读取字符,如果和词法分析器定义的关键字匹配,则会输出单词,比如movej为我们定义的一个关键字,如果程序语句中有匹配,则该关键字会输出,并有属性值,标号值,在词法分析器里将运动指令的关键字的属性值我们设为0,movej的标号值为1,movel标号值为2,movec编号值为3,逻辑语句的属性值为2,标号值从0开始类推,同理可以设定其他语句的属性值和标号值。每完成一条语句的分析后,输入缓存区会关闭,当有下一条语句输入时,会开辟一个新的输入缓存区,直到所有的语句全部完成词法分析。对无法识别的单词进行错误处理。实际上错误处理的功能在图形化界面上是用不到的,因为我们已经将图形化界面与关键词都对应好了,但是错误处理功能是很有用的,这可以将该解释器用于非图形化界面。

经过词法分析的单词流会进行语法分析,语法分析的过程是提取单词流中的单词序列号和单词标号,进行序列号和单词标号的匹配,然后通过定义的语法规则,例如通过bison定义关键字运动(movej/movel/movec)的后面只能跟点位信息,如果匹配失败则进行错误处理。经过语法分析的中间代码会经过语义分析。bison是一种通用解析器生成器。

上述生成的脚本代码经过通信模块,通过基于tcp协议的通信模块,在程序中将图形界面的ip地址和端口号和下位机一致,则可以将脚本代码传给下位机,机器人就可以根据编写的程序对应的执行运动。

以上所述的实施例仅用于说明本发明的技术思想及特点,其目的在于使本领域内的技术人员能够理解本发明的内容并据以实施,不能仅以本实施例来限定本发明的专利范围,即凡本发明所揭示的精神所作的同等变化或修饰,仍落在本发明的专利范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1