基于Qt的工业机器人语言编辑器设计
2023-10-12彭玲祝润泽戴昆林李汉超邹庆申淑丽
彭玲,祝润泽,戴昆林,李汉超,邹庆,申淑丽
(国机智能科技有限公司智能制造事业部,广东广州 510665)
0 前言
机器人语言是机器人与用户交互的重要接口,它是以软件的形式嵌入到示教器或上位机中,通过软硬结合的方式实现机器人的有效控制[1-2]。在实际应用中,机器人示教器的种类和作业要求是多种多样的,这也就对机器人编辑器的可移植性与可扩展性提出了更高的要求[3]。Qt是一个跨平台C++图形用户界面应用程序开发框架。基于Qt开发的应用程序可以在多种平台与系统下运行,这就大大提高了机器人语言编辑器的可移植性;此外,Qt是完全基于面向对象的C++,可扩展性非常强[4-6]。在实际生产中对机器人进行有效控制和运用完成相关作业需求,机器人语言是机器人控制系统的重要一环,它对机器人运动状态产生最直接的影响,因此设计一套机器人编辑器可以有效改善用户对机器人的控制[7-8]。
机器人语言的起步与发展相比工业机器人晚一些。1973年,Stanford人工智能实验室开发WAVE语言用于机械臂的运动控制,此外该团队在WAVE语言的基础上开发的AL语言对于推动后期机器人语言的发展起到一定的促进作用[9-10]。
机器人语言系统不仅要支持机器人程序编辑,还要支持机器人与外部设备的连接与控制[11]。机器人语言系统的处理过程:(1)用户根据实际作业需求在示教器上编辑机器人作业程序;(2)示教器端将用户的作业程序通过网络通信方式发送到机器人控制系统;(3)解释器对要执行的作业程序进行解析,生成控制器能识别的命令;(4)运动规划器根据解释器结果进行运动规划,机器人系统依靠以太网形式实现对伺服电机的控制从而控制机器人运动。机器人语言系统如图1所示。其中机器人语言编辑器是机器人语言系统的重要组成部分,其功能就是将控制机器人动作的命令以文本指令形式展现[12]。本文作者的主要工作就是以编辑器作为突破口对机器人语言系统展开研究。
1 机器人语言设计
1.1 指令集
不同的机器人系统所使用的机器人语言不尽相同,但它们在功能上都有相通之处,此外它们在表现形式上也与普通的计算机语言有一些类似之处[13]。本文作者所设计的通用机器人语言包括以下4类指令:(1)运动指令:MOVJ,MOVL,MOVC,MOVS等。(2)流程控制指令:CALL,IF,FOR,WHILE等。(3)IO指令:DOUT,DIN,PULSE,WAIT,AOUT等。(4)运算指令:ADD,SUB,MUL,DIV,AND,OR等。机器人生产应用本质上是不同的工艺应用,此系统根据不同的工艺配备不同的工艺指令,而不同的工艺指令本质是运动指令与其他通用指令的结合,运动指令控制机器人以不同的插补方式运动,其他通用指令实现机器人与外部设备之间的连接。常见的工艺指令包括焊接、码垛、喷涂、跟踪等。
此外,如当前机器人指令集未能满足用户的生产需要,用户可以根据实际工艺需求设计指令集以满足生产需求。通用指令集如表1所示。
表1 机器人指令格式
1.2 作业程序文件结构
机器人语言编辑器主要就是用户示教程序生成机器人作业文件。机器作业文件由伪指令模块和用户指令模块组成。伪指令模块包括示教点位信息、机器人组信息以及附加特性信息。点位信息包括坐标系、用户、工具、点位值信息;机器人组包括当前作业程序所使用的机器组以及机器组所包含的机器人属性信息;其他附加信息包括文件名、时间、编辑属性等相关内容。用户指令集包括用户示教的通用指令和工艺指令。
2 编辑器设计
设计编辑器的目的就是实现用户与机器人的交互,用户通过示教器或上位机将实际工艺需求的运动轨迹转化为机器人指令并生成机器人作业程序[14]。
机器人语言编程界面是示教器或上位机设计中的重要一部分,用户通过编辑器完成对工业机器人的示教编程工作。
机器人编辑器设计分为三大模块:其一是程序管理设计,其二是指令工厂设计,其三是点位管理。程序管理不仅要完成各个界面的显示绘制,也要完成人机交互示教编程任务。指令工厂不仅要完成所有用户指令集的操作管理,也要同步实现对应不同指令的UI显示。点位管理不仅要实现对应运动指令的点位显示与修改,也可实时更新当前机器人位置。
2.1 程序管理设计
程序管理主要包含两部分:(1)程序集管理;(2)程序管理。程序集管理在“程序内容”主菜单的一级子菜单形成,呈现在人机交互界面上。程序集管理的结构如图2所示,上位机交互界面如图3所示。
图2 程序集管理结构
图3 程序集管理人机交互界面
“选择程序”功能是选择当前系统已经成功加载的机器人作业程序,其中加载的程序默认按照程序创建的时间进行倒序排列。
“当前程序”。若之前系统有打开程序,那么当前程序选择的就是上次打开的程序,否则选择的就是最新的程序。
“新建程序”是指新建一个机器人程序,在程序创建时需要提供机器人名称以及选择的机器人组信息。
“运行设置”是指在人机交互界面设置机器人运行相关参数,其中包括循环、运行模式等。
“查看DP文件”是指若加载的程序文件包含MOVD指令,那么就显示各个程序调用的DP文件信息。
在用户完成选择程序、当前程序操作之后会进入选择程序的页面。为了提供更好的用户操作体验,编辑器以子菜单形式分别在程序、编辑、显示工具菜单下提供了操作当前程序的相关接口,其中程序模块提供用户删除、复制、重命名等操作,此外用户也可以通过外部设备导入导出机器人作业程序;编辑模块提供用户快速便捷选择程序的功能;显示模块提供用户当前选择程序的附加信息;工具模块支持设置远程启动程序功能,而远程启动是另一简单方便的程序执行方式。
用户完成程序设置之后进入程序编辑页面,在此页面下编辑器主要实现程序编辑的管理,此外,为了兼顾机器人运行安全的问题,还添加了机器人指令的参数范围检查、逻辑检查,如:运动指令MOVJ 语法结构MOVJ P[]VJ=关节速度 [PL=位置等级][ACC=加速度调整比率][DEC=减速度调整比率]中关节速度参数VJ的范围为0.01-100、位置等级参数PL的范围是0-8,控制指令SWITCH语法结构SWITCH I[]CASE 数值 执行语句 ENDSWITCH,在程序编辑完成后中,若指令参数不在设定范围,或SWITCH与ENDSWITCH不同时出现,则在程序预编译过程中会通过参数范围或逻辑检查进行报错处理。程序编辑管理结构如图4所示,编辑器程序编辑管理人机交互界面如图5所示。
程序编辑管理中的功能菜单中的程序菜单主要的作用就是对当前编辑的程序进行处理;编辑菜单就是对当前编辑程序的指令进行相关操作,主要包括增、删指令,搜索指令,跳转到目标行指令,注释指令等内容;显示菜单显示当前编辑程序附加信息;工具菜单提供统一修改参数、查看指令功能。此外用户在编辑相关程序文件时可通过常用指令控件增加目标指令,在选择目标指令之后在人机交互界面下方的编辑行实现指令参数修改,而插入控件实现插入当前指令;针对选择的程序文件指令也可通过相关删除,修改控件实现指令的删除以及指令参数的修改。
图4 程序编辑管理结构
图5 程序编辑管理人机交互界面
2.2 指令工厂设计
指令工厂负责当前设计的所有用户指令集的管理,指令工厂设计完全采用面向对象的设计方案,在当前设计的用户指令集无法满足用户需求的时候,用户能够自定义用户指令,实现生产需要。指令工厂采用分组式设计,按照指令的功能将指令划分到不同的组,指令工厂提供指令的组信息与指令信息,指令主要提供UI显示、文本显示、参数修改、指令解析等相关接口,考虑到多机问题,每一条指令考虑由4个Command组成,指令组结构的人机界面如图6所示,单个Command的人机界面如图7所示。
图6 指令组结构人机界面
图7 Command人机交互界面
当前设计的指令组包括运动、IO、演算、控制、平移、外设等,对于用户自定义的指令,可以根据指令的实现功能将其纳入到目前已定义的指令组,也可将其划分到新的指令组。针对运动指令,根据当前配置的机器组信息,则对应有单机或多机的指令形式,多机指令在表现形式上是以‘+’号将不同机器人的cmd连接起来,实现多机控制,而对应非运动指令一般都是一些通用功能,没有多机指令的表现形式。可通过指令组下设cmd进入到对应指令的详细编辑,也可通过点击指令程序编辑页面下端的指令编辑行的指令ID进入到cmd详细编辑页对指令参数进行修改。
2.3 点位管理设计
在机器人作业程序中点位是不可或缺的一部分,设计点位管理的目的就是让用户对当前程序运动指令的点位有一个较为清晰的把控,同时也便于用户查看、修改相关运动指令位置;同时用户手动移动机器人时点位管理模块也会实时更新当前机器人位置,便于用户掌握当前机器人位置信息。点位管理模块的人机交互界面如图8所示。
图8 点位管理人机界面
点位管理模块包括的主要信息如下:(1)机器信息,如当前机器人组配置的是多机,切换机器人可以控制不同机器人点位;(2)切换坐标系,用户切换坐标系实现当前机器人在目标坐标系的点位信息;(3)工具,显示当前配置的工具号,用户可以修改工具号;(4)对于具体点位信息,用户修改对应编辑框的相应数值实现点位修改,也可通过获取当前机器人位置,显示当前机器人位置。
2.4 软键盘设计
软键盘的设计目的是为了给用户在示教编程的时候提供便利[15]。软件盘包括数字键盘和通用键盘,数字键盘单纯提供数字的输入,而通用键盘提供中英文输入法,可实现字符、特殊字符的输入。数字键盘如图9所示,通用键盘如图10所示。
图9 数字键盘
图10 通用键盘
在设计编辑器时,根据不同编辑框输入字符的类型配备不同的软键盘,如指令参数修改设计只涉及数字输入,文件名、注释等设计复杂字符输入,极大提高编辑器的人性化水平。
3 机器人编辑器测试
编辑器的实验主要在示教器上完成,采用华途示教器。示教器配置X86框架,Windows操作系统。机器人控制系统的配置是四核J19,2 GB RAM,Linux操作系统,采用川崎机器人930臂展,清能德创伺服。
在机器人系统连接完成后,打开机器人控制柜上的电源,待系统启动完成之后,将操作模式切换到手动,即可开始进行示教编程。首先选择“程序内容”模块,新建一个名为“测试”的程序,“确定”进入程序编辑页面;上使能,选择[常用指令]控件,选择需要插入的运动指令或非运动指令。选择运动指令时,手动移动机器人到目标位置插入指令;若选择的是非运动指令,则在底端的指令编辑行修改指令参数后插入到当前程序中。完成当前程序的示教如图11所示。
图11 示教程序
此程序覆盖了圆弧运动、直线运动、关节运动、变量运算、条件判断、定时、注释等多种指令,它控制机器人先圆弧运动到目标位置,对字节型变量加1后再直线运动到目标位置,然后定时1 s,检测字节型变量值,满足条件回到圆弧运动的起始位置。
4 结论
本文作者在Qt基础上对机器人语言编辑器进行设计,实现对用户指令的编辑、修改、显示等。该编辑器完全采用面向对象的结构进行设计,提高了开发效率及代码的可靠性,同时有利于平台的移植;界面采用结构化设计,提升了UI显示美观与操作的便利性。该编译器在华途不同型号的示教器上都进行了验证,结果表明在不同示教器上都能正常操作示教与显示,实际示教的程序均能在机器人控制系统稳定高效地运行,验证了设计的机器人语言编辑器的有效性。