CN113172622A - 基于ros的机械臂抓取装配管理方法、系统及相关设备 - Google Patents
基于ros的机械臂抓取装配管理方法、系统及相关设备 Download PDFInfo
- Publication number
- CN113172622A CN113172622A CN202110440306.9A CN202110440306A CN113172622A CN 113172622 A CN113172622 A CN 113172622A CN 202110440306 A CN202110440306 A CN 202110440306A CN 113172622 A CN113172622 A CN 113172622A
- Authority
- CN
- China
- Prior art keywords
- state
- task
- service subsystem
- end service
- grabbing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims description 174
- 238000000034 method Methods 0.000 claims abstract description 74
- 230000004044 response Effects 0.000 claims abstract description 58
- 238000004891 communication Methods 0.000 claims description 29
- 238000003860 storage Methods 0.000 claims description 26
- 238000009877 rendering Methods 0.000 claims description 25
- 230000008569 process Effects 0.000 claims description 23
- 238000011161 development Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 15
- 238000005538 encapsulation Methods 0.000 claims description 8
- 230000002349 favourable effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 19
- 230000007246 mechanism Effects 0.000 description 19
- 230000006870 function Effects 0.000 description 18
- 239000000725 suspension Substances 0.000 description 14
- 238000004590 computer program Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
- H04L67/125—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Abstract
本申请提供了一种基于ROS的机械臂抓取装配管理方法、系统及相关设备,该方法包括:通过图形操作界面接收用户创建的抓取装配任务;响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。本申请实施例有利于提高抓取装配任务的可管理性,从而提升抓取装配的效率。
Description
技术领域
本申请涉及机械臂开发技术领域,尤其涉及一种基于ROS的机械臂抓取装配管理方法、系统及相关设备。
背景技术
传统制造业装配流水线主要依赖人工进行装配,效率问题严重地限制了生产产能的提升。随着人工智能技术的蓬勃发展,传统制造业逐渐向智能制造业转变,机器人作业已被广泛应用于各个行业中,比如物流行业拆垛码垛、机械臂快速分拣等等。目前,安卓、Linux以及ROS(Robot Operating System,机器人操作系统)是常见的机器人开发和操作系统,且基于ROS进行机械臂建模和运动规划是领域研究热点,但是市场上基于ROS的机械臂存在抓取装配管理不便、难度大等问题,在一定程度上影响了抓取装配的效率。
发明内容
针对上述问题,本申请提供了一种基于ROS的机械臂抓取装配管理方法、系统及相关设备,有利于提高机械臂抓取装配任务的可管理性,从而提升抓取装配的效率。
为实现上述目的,本申请实施例提供了一种基于ROS的机械臂抓取装配管理方法,应用于基于ROS的机械臂抓取装配管理系统的前端管理子系统,该系统包括该前端管理子系统和后端服务子系统,前端管理子系统包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通信框架通信,图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染;该方法包括:
通过图形操作界面接收用户创建的抓取装配任务;
响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;
接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。
在一种可能的实施方式中,响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,包括:
在检测到图形操作界面上的第一启动信号的情况下,向后端服务子系统发送第一预设命令,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;
在检测到图形操作界面上的暂停信号的情况下,向后端服务子系统发送第二预设命令,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;
在检测到图形操作界面上的第二启动信号的情况下,向后端服务子系统发送第三预设命令,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务;
在检测到图形操作界面上的停止信号的情况下,向后端服务子系统发送第四预设命令,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。
在一种可能的实施方式中,接收后端服务子系统返回的抓取装配任务的执行进度,包括:
在向后端服务子系统发送第一预设命令的情况下,接收后端服务子系统响应于第一预设命令返回的第一执行进度;
在向后端服务子系统发送第二预设命令的情况下,接收后端服务子系统响应于第二预设命令返回的暂停信息;
在向后端服务子系统发送第三预设命令的情况下,接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度;
在向后端服务子系统发送第四预设命令的情况下,接收后端服务子系统响应于第四预设命令返回的停止信息。
在一种可能的实施方式中,在通过图形操作界面接收用户创建的抓取装配任务之后,该方法还包括:
响应于用户在图形操作界面输入的指令创建有限状态机,并将有限状态机的状态设置为初始化状态;有限状态机的状态用于表示抓取装配任务的状态;
响应于用户在图形操作界面输入的指令创建数据库,并在数据库中创建任务数据表;任务数据表用于记录抓取装配任务的属性。
在一种可能的实施方式中,抓取装配任务的属性包括抓取装配任务的状态和总执行次数;向后端服务子系统发送第一预设命令,包括:
从任务数据表中获取抓取装配任务的状态和总执行次数;
在抓取装配任务的状态为初始化状态的情况下,向后端服务子系统发送第一预设命令和第五预设命令;第五预设命令用于向后端服务子系统指定总执行次数。
在一种可能的实施方式中,在接收后端服务子系统响应于第一预设命令返回的第一执行进度之后,该方法还包括:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由初始化状态更新为运行状态。
在一种可能的实施方式中,抓取装配任务的属性还包括已完成次数;向后端服务子系统发送第二预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令。
在一种可能的实施方式中,在接收后端服务子系统响应于第二预设命令返回的暂停信息之后,该方法还包括:
将有限状态机的状态设置为暂停状态;
将任务数据表中抓取装配任务的状态由运行状态更新为暂停状态,并记录抓取装配任务在暂停时的已完成次数。
在一种可能的实施方式中,向后端服务子系统发送第三预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为暂停状态的情况下,向后端服务子系统发送第三预设命令和第六预设命令;第六预设命令用于指示后端服务子系统从抓取装配任务被暂停时记录的已完成次数开始抓取装配任务。
在一种可能的实施方式中,在接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度之后,该方法还包括:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由暂停状态更新为运行状态。
在一种可能的实施方式中,向后端服务子系统发送第四预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
在一种可能的实施方式中,在接收后端服务子系统响应于第四预设命令返回的停止信息之后,该方法还包括:
将有限状态机的状态设置为停止状态;
将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
在一种可能的实施方式中,在接收后端服务子系统返回的抓取装配任务的执行进度之后,该方法还包括:
在接收到后端服务子系统返回的抓取装配任务执行完毕的信息的情况下,将有限状态机的状态设置为完成状态;
将任务数据表中抓取装配任务的状态更新为完成状态。
在一种可能的实施方式中,前端管理子系统的代码库编写有预设文件;预设文件中插入有预设指令,预设指令用于触发Qt的元对象编译器生成元对象代码,使得前端管理子系统支持Qt5。
在一种可能的实施方式中,图形操作界面是基于Qt5将菜单栏、工具栏、任务树、任务细节、任务编辑、任务向导和显示窗口作为单独的子界面插入前端管理子系统的主界面得到的。
在一种可能的实施方式中,前端管理子系统还包括Rviz插件,Rviz插件是基于Moveit开发得到的,Rviz插件中包括机械臂的三维模型、机械臂的工作空间、网格和运动规划,工作空间用于限定机械臂工作时的空间范围;机械臂抓取装配过程在图形操作界面的三维实时渲染通过Librviz的函数调用接口将网格和运动规划的显示输出函数插入到显示窗口类中实现。
在一种可能的实施方式中,通信框架通过对Actionlib包中的sendGoal接口和cancelGoal接口进行封装抽象得到,封装抽象后的sendGoal接口用于向后端服务子系统发送第一预设命令和第三预设命令,封装抽象后的cancelGoal接口用于向后端服务子系统发送第二预设命令和第四预设命令。
本申请另一些实施例还提供了一种基于ROS的机械臂抓取装配管理系统,该系统包括前端管理子系统和后端服务子系统,前端管理子系统包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通信框架通信,图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染;
前端管理子系统,用于通过图形操作界面接收用户创建的抓取装配任务,响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;
后端服务子系统,用于接收预设命令,根据预设命令控制机械臂执行抓取装配任务,并向前端管理子系统返回抓取装配任务的执行进度;
前端管理子系统,还用于接收执行进度,通过图形操作界面显示执行进度。
本申请另一些实施例提供了一种基于ROS的机械臂抓取装配管理装置,应用于基于ROS的机械臂抓取装配管理系统的前端管理子系统,该系统包括该前端管理子系统和后端服务子系统,前端管理子系统包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通信框架通信,图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染;该装置包括:
第一接收模块,用于通过图形操作界面接收用户创建的抓取装配任务;
处理模块,用于响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;
第二接收模块,接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。
本申请另一些实施例提供了一种电子设备,该电子设备包括输入设备和输出设备,还包括处理器,适于实现一条或多条指令;以及,计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行上述基于ROS的机械臂抓取装配管理方法中的部分或全部步骤。
本申请另一些实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述基于ROS的机械臂抓取装配管理方法中的部分或全部步骤。
可以看出,本申请实施例由前端管理子系统通过图形操作界面接收用户创建的抓取装配任务;响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。这样基于支持Qt5的前端管理子系统进行抓取装配任务的创建、管理,整个抓取装配过程通过三维实时渲染在图形操作界面进行展示,且可通过预设命令控制抓取装配任务的执行,极大地方便了抓取装配任务的管理,提高了抓取装配任务的可管理性,从而有利于提升抓取装配的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用环境的示意图;
图2为本申请实施例提供的一种基于ROS的机械臂抓取装配管理方法的流程示意图;
图3为本申请实施例提供的一种通信框架的示意图;
图4为本申请实施例提供的一种图形操作界面的示意图;
图5A为本申请实施例提供的一种抓取装配任务创建向导的示意图;
图5B为本申请实施例提供的另一种抓取装配任务创建向导的示意图;
图5C为本申请实施例提供的另一种抓取装配任务创建向导的示意图;
图6为本申请实施例提供的一种图形操作界面各子界面的信号交互示意图;
图7为本申请实施例提供的一种有限状态机的示意图;
图8为本申请实施例提供的一种向后端服务子系统发送开始命令的交互示意图;
图9为本申请实施例提供的一种向后端服务子系统发送暂停命令的交互示意图;
图10为本申请实施例提供的一种后端服务子系统发送重启命令的交互示意图;
图11为本申请实施例提供的一种向后端服务子系统发送停止命令的交互示意图;
图12为本申请实施例提供的一种抓取装配任务执行完毕的交互示意图;
图13为本申请实施例提供的一种编辑抓取装配任务的示意图;
图14为本申请实施例提供的一种基于ROS的机械臂抓取装配管理系统的结构示意图;
图15为本申请实施例提供的一种基于ROS的机械臂抓取装配管理装置的结构示意图;
图16为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本申请说明书、权利要求书和附图中出现的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,术语“第一”、“第二”和“第三”等是用于区别不同的对象,而并非用于描述特定的顺序。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本申请所描述的实施例可以与其它实施例相结合。
本申请实施例提出一种基于ROS的机械臂抓取装配管理方法,该方法可基于图1所示的应用环境实施,如图1所示,该应用环境中包括电子设备和服务器,电子设备和服务器通过有线或无线网络连接。电子设备上运行有基于ROS的机械臂抓取装配管理系统的前端管理子系统,服务器用于为该系统的后端子系统提供运行环境和基础,该前端管理子系统以ROS节点的形式运行,用于机械臂抓取装配任务的管理,比如在用户选中某个抓取装配任务,并针对该抓取装配任务进行相关操作(例如:开始该抓取装配任务、停止该抓取装配任务等等)的情况下,向后端服务子系统发送相关命令。后端服务子系统在接收到相关命令的情况下,控制机械臂执行针对该抓取装配任务执行相关操作。本申请中的基于ROS的机械臂抓取装配管理系统基于ROS开发,其前端管理子系统可基于Qt5(一个应用程序开发框架)实现相应功能,极大地方便了抓取装配任务的管理。应当理解的,运行前端管理子系统的电子设备与开发基于ROS的机械臂抓取装配管理系统的电子设备可以相同,也可以不同,此处不作限定。
以下结合相关附图对本申请实施例提供的基于ROS的机械臂抓取装配管理方法进行详细阐述。
请参见图2,图2为本申请实施例提供的一种基于ROS的机械臂抓取装配管理方法的流程示意图,该方法应用于基于ROS的机械臂抓取装配管理系统的前端管理子系统,该系统包括该前端管理子系统和后端服务子系统,前端管理子系统包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通信框架通信,图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染;如图2所示,包括步骤S21-S23:
S21,通过图形操作界面接收用户创建的抓取装配任务。
本申请实施例中,上述通信框架基于图3所示的Actionlib(ROS的一个功能包集)通信框架进行开发得到,Actionlib通信框架为ROS中的常规通信框架,其工作机制此处不再进行说明。
由于目前基于ROS的Qt应用程序开发多是支持Qt4,使用QtCreator(一款轻量级集成开发环境)进行图形操作界面的开发,效率相对较低,本申请实施例在前端管理子系统开发过程中,通过为其代码库编写预设文件,比如CMakeLists.txt文件,该预设文件中插入有预设指令,比如set(CMAKE_AUTOMOC ON),该预设指令用于触发Qt的元对象编译器Meta-Object Compiler(moc)生成元对象代码meta-object code,以使得前端管理子系统支持Qt5,这样就可使用CMake(一个跨平台的安装(编译)工具)编译代码,且可利用Qt的信号和槽机制做进一步的开发工作,有利于提高开发效率,对ROS和Qt的后续版本也适用。
在支持Qt5的基础上,可基于Qt5进行图形操作界面的模块化开发,请参见图4,图4为本申请实施例提供的一种图形操作界面的示意图,如图4所示,在图形操作界面的开发中,分别将菜单栏MenuBar、工具栏ToolBar、任务树TaskTree、任务细节TaskDetail、任务编辑EditPage、任务向导TaskWizard和显示窗口RenderWidget作为单独的子界面(或类)插入前端管理子系统的主界面,即可实现图形操作界面的各项操作功能,用户可在图形操作界面上通过任务向导TaskWizard创建抓取装配任务。其中,各子界面基于Qt的信号和槽机制设计的交互逻辑进行数据传输,其中,任务向导TaskWizard在创建抓取装配任务时呈现,任务编辑EditPage在编辑抓取装配任务时呈现,图4中未示出。这样的设计使得前端管理子系统具有低耦合高内聚的特性,对于任何子界面的修改只用专注特定的类即可,图形操作界面的整体框架始终保持不变,方便升级和维护。
具体的,用户可通过菜单栏MenuBar或工具栏ToolBar中的新建任务按钮进行抓取装配任务的创建,当用户触发新建任务按钮,进入如图5A所示的任务创建向导界面,用户可在该界面触发一按钮(比如下一步Next)进入如图5B所示的任务创建向导界面。在如图5B所示的任务创建向导界面上,用户可输入抓取装配任务的名称和总执行次数,并可定义任务类型。同样的,用户可在该界面触发一按钮(比如下一步Next)进入如图5C所示的任务创建向导界面,当用户在如图5C所示的任务创建向导界面触发一按钮(比如结束Finish)即完成一个抓取装配任务的创建。然后,如图6所示,任务向导TaskWizard向菜单栏MenuBar和工具栏ToolBar发送信号A(比如gui_taskwizard_created_task_info),菜单栏MenuBar和工具栏ToolBar通过槽机制接收该信号A,然后触发相应操作,比如将菜单栏MenuBar和工具栏ToolBar上的开始按钮、暂停按钮设置为去使能状态。另外,任务向导TaskWizard向任务树TaskTree发送该信号A,任务树TaskTree在接收到该信号A后,在任务树TaskTree中添加一个新创建的抓取装配任务,创建的所有抓取装配任务均在任务树TaskTree子界面呈现。
S22,响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务。
本申请实施例中,用户可通过工具栏ToolBar中的按钮实现抓取装配任务的开始、暂停、重启、停止等操作,进一步还可通过任务编辑EditPage对抓取装配任务的总执行次数进行更改,等等。前端管理子系统基于用户在图形操作界面上的开始、暂停、重启、停止等操作,通过通信框架中经过封装的接口向后端服务子系统发送对应的开始命令(Start)、暂停命令(Pause)、重启命令(Resume)和停止命令(Stop)。
示例性的,由于Actionlib通信框架只提供了有限的接口,即sendGoal接口和cancelGoal接口,这两个接口可以实现开始和停止命令,但是仅有这两个命令使得抓取装配任务的可管理性仍然较低。本申请实施例通过对Actionlib包中的sendGoal接口和cancelGoal接口进行封装抽象得到上述通信框架,封装抽象后的sendGoal接口用于向后端服务子系统发送开始命令和重启命令,封装抽象后的cancelGoal接口用于向后端服务子系统发送暂停命令和停止命令。这样在前端管理子系统实现了暂停命令和重启命令,一定程度上提高了抓取装配任务的可管理性,而后端服务子系统仍然只关注开始命令和停止命令,简而言之,暂停命令和重启命令仍然是以开始命令和停止命令的形式发送给后端服务子系统。
后端服务子系统在接收到上述预设命令的情况下,控制机械臂执行抓取装配任务,并向前端管理子系统返回抓取装配任务的执行进度。比如,对于一个新建的抓取装配任务,后端服务子系统在接收到开始命令的情况下,由抓取装配模块控制机械臂开始该抓取装配任务;在接收到暂停命令的情况下,控制机械臂暂停该抓取装配任务,等等。应当理解的,在抓取装配任务开始执行后,暂停命令、重启命令和停止命令可根据业务需求而确定,例如:用户需要暂停当前正在执行的某个抓取装配任务,则可通过暂停命令实现,在该抓取装配任务被暂停后,用户便可以通过重启命令从暂停的地方重启该抓取装配任务。
示例性的,前端管理子系统还包括Rviz(一个3维可视化工具)插件,该Rviz插件基于Moveit(一个机器人相关的工具集软件)开发得到,该Rviz插件中包括机械臂的三维模型、机械臂的工作空间、网格和运动规划,该工作空间主要用于限定机械臂在工作时的空间范围,包括了从来料框中抓取待抓取装配物体并装配到产线的模拟环境,具体包括来料框、待抓取装配物体(比如洗衣机配重块)、产线、设置相机的架子等,该模拟环境可以在连接真机系统之前验证机械臂抓取装配过程中可能遇到的各种冲突碰撞问题,以进行调优和规避风险,还可以直接连接真机系统实时展示机械臂的抓取装配过程。进一步的,利用Librviz(ROS中的库)的函数调用接口将网格和运动规划的显示输出函数插入到显示窗口RenderWidget类中,便可实现机械臂抓取装配过程在图形操作界面的三维实时渲染功能,这样有利于对机械臂执行抓取装配任务的过程进行实时展示。
S23,接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。
本申请实施例中,后端服务子系统在控制机械臂执行抓取装配任务的过程中,实时向前端管理子系统返回执行进度,该执行进度不局限于运行状态下的执行进度,还包括返回的暂停信息、重启信息和停止信息等等。前端管理子系统在接收到后端服务子系统返回的执行进度的情况下,通过图形操作界面显示执行进度。
示例性的,上述响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,包括:
在检测到图形操作界面上的第一启动信号的情况下,向后端服务子系统发送第一预设命令,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;
在检测到图形操作界面上的暂停信号的情况下,向后端服务子系统发送第二预设命令,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;
在检测到图形操作界面上的第二启动信号的情况下,向后端服务子系统发送第三预设命令,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务;
在检测到图形操作界面上的停止信号的情况下,向后端服务子系统发送第四预设命令,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。
本申请实施例中,第一预设命令是指开始命令,第二预设命令是指暂停命令,第三预设命令是指重启命令,第四预设命令是指停止命令。第一启动信号是指抓取装配任务被创建之后未开始执行的情况下由用户在图形操作界面上触发的开始信号,用于指示向后端服务子系统发送第一预设命令,通过触发工具栏ToolBar中的开始按钮实现,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;第二启动信号是指抓取装配任务被暂停后用户在图形操作界面上再次触发的开始信号,用于指示向后端服务子系统发送第三预设命令,通过再次触发开始按钮实现,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务。应当理解的,暂停信号用于指示向后端服务子系统发送第二预设命令,通过触发工具栏ToolBar中的暂停按钮实现,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;停止信号用于指示向后端服务子系统发送第四预设命令,通过工具栏ToolBar中的暂停按钮实现,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。简而言之,执行抓取装配任务的整个过程可以通过第一预设命令、第二预设命令、第三预设命令和第四预设命令对抓取装配任务进行开始、暂停、重启和停止管理,这样在不同情况下,可根据业务需求向后端服务子系统发送不同的预设命令,使得后端服务子系统控制机械臂执行不同操作,相比仅可实现开始命令和暂停命令,可操作性更强。
示例性的,上述接收后端服务子系统返回的抓取装配任务的执行进度,包括:
在向后端服务子系统发送第一预设命令的情况下,接收后端服务子系统响应于第一预设命令返回的第一执行进度;
在向后端服务子系统发送第二预设命令的情况下,接收后端服务子系统响应于第二预设命令返回的暂停信息;
在向后端服务子系统发送第三预设命令的情况下,接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度;
在向后端服务子系统发送第四预设命令的情况下,接收后端服务子系统响应于第四预设命令返回的停止信息。
本申请实施例中,第一执行进度是指首次开始抓取装配任务后由后端服务子系统返回的执行进度,第二执行进度是指抓取装配任务被重启后返回的执行进度。
示例性的,在通过图形操作界面接收用户创建的抓取装配任务之后,该方法还包括:
响应于用户在图形操作界面输入的指令创建有限状态机,并将有限状态机的状态设置为初始化状态;有限状态机的状态用于表示抓取装配任务的状态;
响应于用户在图形操作界面输入的指令创建数据库,并在数据库中创建任务数据表;任务数据表用于记录抓取装配任务的属性。
本申请实施例中,用户在图形操作界面输入的指令可以是程序代码,用户可通过图形操作界面创建用于描述抓取装配任务的状态的有限状态机,前端管理子系统在成功创建有限状态机之后,将有限状态机的状态设置为初始化状态,有限状态机的状态即表示抓取装配任务的状态,如图7所示,有限状态机的状态包括初始化状态、运行状态、暂停状态、停止状态以及完成状态,初始化状态、运行状态、暂停状态和停止状态之间通过开始命令、暂停命令、重启命令或停止命令进行转换,例如:在有限状态机的状态为初始化状态的情况下,当前端管理子系统向后端服务子系统发送开始命令且根据后端服务子系统返回的信息可确定抓取装配任务已经开始执行,则可将有限状态机的状态由初始化状态设置为运行状态。这样通过有限状态机来描述抓取装配任务的状态,在针对抓取装配任务发送某个命令或做某项操作时可快速确定其当前状态。
另外,上述数据库可以是前端数据库用于存储与抓取装配任务相关的关联数据表,例如:用户数据表、任务数据表、任务详情数据表等等,任务数据表用于记录抓取装配任务的属性,比如抓取装配任务的唯一编码、类型、状态、总执行次数、已完成次数等等。
示例性的,上述向后端服务子系统发送第一预设命令,包括:
从任务数据表中获取抓取装配任务的状态和总执行次数;
在抓取装配任务的状态为初始化状态的情况下,向后端服务子系统发送第一预设命令和第五预设命令;第五预设命令用于向后端服务子系统指定总执行次数。
示例性的,在接收后端服务子系统响应于第一预设命令返回的第一执行进度之后,该方法还包括:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由初始化状态更新为运行状态。
本申请实施例中,如图8所示,用户在前端管理子系统的图形操作界面选中抓取装配任务,触发针对该抓取装配任务的第一启动信号,触发前端管理子系统从数据库中找到该抓取装配任务的任务数据表,从该任务数据表中获取到该抓取装配任务的相关信息,比如状态和总执行次数,在确认该抓取装配任务的状态为初始化状态的情况下,通过非阻塞和异步调用机制向后端服务子系统发送第一预设命令(比如goal.pp.Start)和第五预设命令(比如goal.pp.total_num_pp),其中,第五预设命令主要是为了告知后端服务子系统该抓取装配任务的总执行次数,后端服务子系统在控制机械臂开始该抓取装配任务后向前端管理子系统返回该抓取装配任务的第一执行进度,前端管理子系统在接收到该第一执行进度后,将有限状态机的状态由初始化状态转换为运行状态,并在任务数据表中将抓取装配任务的状态由初始化状态更新为运行状态。
进一步的,请继续参见图6,当用户在任务树TaskTree子界面选中该抓取装配任务会触发任务树TaskTree向其他子界面发送信号,比如向菜单栏MenuBar和工具栏ToolBar发送信号B(比如gui_tasktree_itemclicked_running),菜单栏MenuBar和工具栏ToolBar通过槽机制接收该信号B,然后触发相应操作,比如将菜单栏MenuBar和工具栏ToolBar中的开始按钮设置为去使能状态。另外,任务树TaskTree向显示窗口RenderWidget子界面发送该信号B,显示窗口RenderWidget通过槽机制接收该信号B,并通过三维实时渲染显示机械臂执行抓取装配任务的状态。任务树TaskTree向任务细节TaskDetail子界面发送该信号B和信号D(比如gui_tasktree_current_selected_item),任务细节TaskDetail通过槽机制接收该信号B和信号D,然后将抓取装配任务的第一执行进度实时显示在任务细节TaskDetail子界面。
示例性的,上述向后端服务子系统发送第二预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令。
示例性的,在接收后端服务子系统响应于第二预设命令返回的暂停信息之后,该方法还包括:
将有限状态机的状态设置为暂停状态;
将任务数据表中抓取装配任务的状态由运行状态更新为暂停状态,并记录抓取装配任务在暂停时的已完成次数。
本申请实施例中,如图9所示,用户在图形操作界面选中抓取装配任务,触发针对该抓取装配任务的暂停信号,前端管理子系统查询有限状态机的状态,在确认抓取装配任务的状态为运行状态的情况下,通过非阻塞和异步调用机制向后端服务子系统发送第二预设命令(比如goal.pp.Stop),后端服务子系统在控制机械臂暂停该抓取装配任务后向前端管理子系统返回暂停信息,前端管理子系统在接收到该暂停信息后,将有限状态机的状态由运行状态转换为暂停状态,在任务数据表中将抓取装配任务的状态由运行状态更新为暂停状态,并记录下当前已完成次数。
进一步的,请继续参见图6,暂停抓取装配任务时,当用户在任务树TaskTree子界面选中该抓取装配任务会触发任务树TaskTree向其他子界面发送信号,比如向菜单栏MenuBar和工具栏ToolBar发送信号C(比如gui_tasktree_itemclicked_paused),菜单栏MenuBar和工具栏ToolBar通过槽机制接收该信号C,然后触发相应操作,比如将菜单栏MenuBar和工具栏ToolBar中的暂停按钮设置为去使能状态。另外,任务树TaskTree向显示窗口RenderWidget子界面发送该信号C,显示窗口RenderWidget通过槽机制接收该信号C,显示机械臂暂停工作的状态。任务树TaskTree向任务细节TaskDetail子界面发送该信号C和信号D,任务细节TaskDetail通过槽机制接收该信号C和信号D,然后从任务数据表中查询抓取装配任务的状态,并将其已暂停的状态显示在任务细节TaskDetail子界面。
示例性的,上述向后端服务子系统发送第四预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
示例性的,在接收后端服务子系统响应于第四预设命令返回的停止信息之后,该方法还包括:
将有限状态机的状态设置为停止状态;
将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
本申请实施例中,如图10所示,用户在前端管理子系统的图形操作界面选中抓取装配任务,触发针对该抓取装配任务的第二启动信号,前端管理子系统查询有限状态机的状态,在确认抓取装配任务的状态为暂停状态的情况下,通过非阻塞和异步调用机制向后端服务子系统发送第三预设命令(比如goal.pp.Star)和第六预设命令(比如goal.pp.total_num_pp=(total-pick_place_index)),后端服务子系统在控制机械臂重启该抓取装配任务后向前端管理子系统返回重启信息和第二执行进度,前端管理子系统在接收到该暂停信息后,将有限状态机的状态由暂停状态转换为运行状态,并在任务数据表中将抓取装配任务的状态由暂停状态更新为运行状态。其中,第六预设命令用于告知后端服务子系统从之前暂停的地方重启抓取装配任务,例如:通过之前的第二预设命令,抓取装配任务在执行完第500次抓取装配后被暂停,那么,在发送第三预设命令后,后端服务子系统将控制机械臂从第501次开始执行该抓取装配任务,并在任务细节TaskDetail子界面实时显示第二执行进度。
进一步的,请继续参见图6,重启抓取装配任务时,当用户在任务树TaskTree子界面选中该抓取装配任务会触发任务树TaskTree向其他子界面发送信号,比如向菜单栏MenuBar和工具栏ToolBar再发送信号B,类似的,菜单栏MenuBar和工具栏ToolBar接收到该信号B后,将菜单栏MenuBar和工具栏ToolBar中的开始按钮再设置为去使能状态。另外,任务树TaskTree向显示窗口RenderWidget子界面发送该信号B,显示窗口RenderWidget通过槽机制接收该信号B,显示机械臂执行抓取装配任务的状态。任务树TaskTree向任务细节TaskDetail子界面发送该信号B和信号D,任务细节TaskDetail接收到该信号B和信号D后,将抓取装配任务的第二执行进度实时显示在任务细节TaskDetail子界面。
示例性的,上述向后端服务子系统发送第四预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
示例性的,在接收后端服务子系统响应于第四预设命令返回的停止信息之后,该方法还包括:
将有限状态机的状态设置为停止状态;
将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
本申请实施例中,如图11所示,用户在图形操作界面选中抓取装配任务,触发针对该抓取装配任务的停止信号,在确认抓取装配任务的状态为运行状态的情况下,通过非阻塞和异步调用机制向后端服务子系统发送第四预设命令(比如goal.pp.Stop),后端服务子系统在控制机械臂停止该抓取装配任务后向前端管理子系统返回停止信息,前端管理子系统在接收到该停止信息后,将有限状态机的状态由运行状态转换为停止状态,在任务数据表中将抓取装配任务的状态由运行状态更新为停止状态。
进一步的,请继续参见图6,停止抓取装配任务时,当用户在任务树TaskTree子界面选中该抓取装配任务会触发任务树TaskTree向其他子界面发送信号,比如向菜单栏MenuBar和工具栏ToolBar发送信号E(比如gui_tasktree_itemclicked_stop),菜单栏MenuBar和工具栏ToolBar通过槽机制接收该信号E,然后触发相应操作,比如将菜单栏MenuBar和工具栏ToolBar中的停止按钮设置为去使能状态。另外,任务树TaskTree向显示窗口RenderWidget子界面发送该信号E,显示窗口RenderWidget通过槽机制接收该信号E,显示机械臂停止工作的状态。任务树TaskTree向任务细节TaskDetail子界面发送该信号E和信号D,任务细节TaskDetail通过槽机制接收该信号E和信号D,然后从任务数据表中查询抓取装配任务的状态,并将其已停止的状态显示在任务细节TaskDetail子界面。
示例性的,在接收后端服务子系统返回的抓取装配任务的执行进度之后,该方法还包括:
在接收到后端服务子系统返回的抓取装配任务执行完毕的信息的情况下,将有限状态机的状态设置为完成状态;
将任务数据表中抓取装配任务的状态更新为完成状态。
本申请实施例中,将抓取装配任务定义为原子操作,即函数Pick_and_Place_once(),该函数被调用一次即是抓取装配任务被执行一次,这样更方便对抓取装配任务进行调度和管理。如图12所示,在抓取装配任务执行完毕的情况下,后端服务子系统向前端管理子系统返回执行完毕的信息,然后触发前端管理子系统将有限状态机的状态由暂停或运行状态转换为完成状态,在任务数据表中将抓取装配任务的状态由暂停或运行状态更新为完成状态。
进一步的,请继续参见图6,当抓取装配任务执行完毕时,会触发任务树TaskTree向菜单栏MenuBar、工具栏ToolBar子界面、任务细节TaskDetail和显示窗口RenderWidget子界面发送信号F(比如gui_tasktree_itemclicked_finish),类似的,各子界面通过槽机制接收该信号F,并触发相应操作,比如,显示窗口RenderWidget显示机械臂完成工作的状态,任务细节TaskDetail从任务数据表中查询抓取装配任务的状态,将其已完成的状态显示在任务细节TaskDetail子界面。
进一步的,如图13所示,用户还可以通过图形操作界面对已创建的抓取装配任务进行编辑,当用户在任务树TaskTree子界面选中抓取装配任务会触发相应操作,比如查询有限状态机该抓取装配任务的状态,在其状态为初始化状态、停止状态或完成状态的情况下,任务树TaskTree子界面会向菜单栏MenuBar和工具栏ToolBar发送一信号,菜单栏MenuBar和工具栏ToolBar通过槽机制接收该信号,然后触发相应操作,比如将菜单栏MenuBar和工具栏ToolBar中的任务编辑按钮设置为去使能状态,当用户触发该任务编辑按钮时,即进入任务编辑EditPage子界面,用户可在任务编辑EditPage子界面更改该抓取装配任务的相关信息,比如总执行次数。应当理解的,在抓取装配任务的状态为运行状态和暂停状态的情况下,该抓取装配任务不可编辑。
可以看出,本申请实施例由前端管理子系统通过图形操作界面接收用户创建的抓取装配任务;响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。这样基于支持Qt5的前端管理子系统进行抓取装配任务的创建、管理,整个抓取装配过程通过三维实时渲染在图形操作界面进行展示,且可通过预设命令控制抓取装配任务的执行,极大地方便了抓取装配任务的管理,提高了抓取装配任务的可管理性,从而有利于提升抓取装配的效率。
请参见图14,图14为本申请实施例提供的一种基于ROS的机械臂抓取装配管理系统的示意图,如图14所示,该系统包括前端管理子系统和后端服务子系统,该系统基于ROS开发,前端管理子系统用于机械臂抓取装配任务的管理,以ROS节点的形式运行。其中,前端管理子系统进一步包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通框架提供的接口通信。图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染。后端服务子系统进一步包括姿态估计模块和抓取装配模块,该姿态估计模块基于3维视觉对待抓取装配物体进行6维姿态估计,抓取装配模块根据后端服务子系统接收到的预设命令及待抓取装配物体的姿态执行抓取装配任务。
具体实施中,前端管理子系统用于通过图形操作界面接收用户创建的抓取装配任务,响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;后端服务子系统用于接收预设命令,根据预设命令控制机械臂执行抓取装配任务,并向前端管理子系统返回抓取装配任务的执行进度;前端管理子系统,还用于接收执行进度,通过图形操作界面显示执行进度。
示例性的,本申请实施例通过为前端管理子系统的代码库编写预设文件,比如CMakeLists.txt文件,该预设文件中插入有预设指令,比如set(CMAKE_AUTOMOC ON),该预设指令用于触发Qt的元对象编译器Meta-Object Compiler(moc)生成元对象代码meta-object code,以使得前端管理子系统支持Qt5。
示例性的,本申请实施例基于Qt5进行图形操作界面的模块化开发,分别将菜单栏MenuBar、工具栏ToolBar、任务树TaskTree、任务细节TaskDetail、任务编辑EditPage、任务向导TaskWizard和显示窗口RenderWidget作为单独的子界面(或类)插入前端管理子系统的主界面,即完成图形操作界面的开发。其中,各子界面基于Qt的信号和槽机制设计的交互逻辑进行数据传输。具体实施中,用户可通过触发图形操作界面的新建任务按钮,进入任务向导TaskWizard子界面,输入抓取装配任务的相关参数,比如名称、总执行次数等,以完成抓取装配任务的创建。
示例性的,本申请实施例通过对Actionlib包中的sendGoal接口和cancelGoal接口进行封装抽象得到上述通信框架,封装抽象后的sendGoal接口用于向后端服务子系统发送开始命令和重启命令,封装抽象后的cancelGoal接口用于向后端服务子系统发送暂停命令和停止命令。
示例性的,前端管理子系统还包括Rviz插件,Rviz插件是基于Moveit开发得到的,Rviz插件中包括机械臂的三维模型、机械臂的工作空间、网格和运动规划,工作空间用于限定机械臂工作时的空间范围;机械臂抓取装配过程在图形操作界面的三维实时渲染通过Librviz的函数调用接口将网格和运动规划的显示输出函数插入到显示窗口类中实现。
示例性的,在响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令方面,前端管理子系统用于:
在检测到图形操作界面上的第一启动信号的情况下,向后端服务子系统发送第一预设命令,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;
在检测到图形操作界面上的暂停信号的情况下,向后端服务子系统发送第二预设命令,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;
在检测到图形操作界面上的第二启动信号的情况下,向后端服务子系统发送第三预设命令,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务;
在检测到图形操作界面上的停止信号的情况下,向后端服务子系统发送第四预设命令,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。
其中,第一启动信号是指抓取装配任务被创建之后未开始执行的情况下由用户在图形操作界面上触发的开始信号,用于指示向后端服务子系统发送第一预设命令,第一预设命令即开始命令;第二启动信号是指抓取装配任务被暂停后用户在图形操作界面上再次触发的开始信号,用于指示向后端服务子系统发送第三预设命令,第三预设命令即重启命令;应当理解的,暂停信号用于指示向后端服务子系统发送第二预设命令,第二预设命令即暂停命令,通过触发工具栏ToolBar中的暂停按钮实现;停止信号用于指示向后端服务子系统发送第四预设命令,第四预设命令即停止命令,通过工具栏ToolBar中的暂停按钮实现。
示例性的,在根据预设命令控制机械臂执行抓取装配任务方面,抓取装配模块用于:
在后端服务子系统接收到第一预设命令的情况下,控制机械臂开始抓取装配任务;
在后端服务子系统接收到第二预设命令的情况下,控制机械臂暂停抓取装配任务;
在后端服务子系统接收到第三预设命令的情况下,控制机械臂重启抓取装配任务;
在后端服务子系统接收到第四预设命令的情况下,控制机械臂停止抓取装配任务。
其中,后端服务子系统由抓取装配模块根据前端管理子系统发送的预设命令控制机械臂执行抓取装配任务,后端服务子系统根据抓取装配模块的执行情况向前端管理子系统返回执行进度。
示例性的,在接收后端服务子系统返回的抓取装配任务的执行进度方面,前端管理子系统用于:
在向后端服务子系统发送第一预设命令的情况下,接收后端服务子系统响应于第一预设命令返回的第一执行进度;
在向后端服务子系统发送第二预设命令的情况下,接收后端服务子系统响应于第二预设命令返回的暂停信息;
在向后端服务子系统发送第三预设命令的情况下,接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度;
在向后端服务子系统发送第四预设命令的情况下,接收后端服务子系统响应于第四预设命令返回的停止信息。
其中,第一执行进度是指首次开始抓取装配任务后由后端服务子系统返回的执行进度,前端管理子系统在接收到该第一执行进度的情况下,通过图形操作界面各子界面间的信号传递,将第一执行进度实时显示在任务细节TaskDetail子界面。第二执行进度是指抓取装配任务被重启后返回的执行进度,前端管理子系统在接收到该第二执行进度的情况下,同样在任务细节TaskDetail子界面显示该第二执行进度。应当理解的,暂停信息是指后端服务子系统暂停抓取装配任务后返回的信息,停止信息是指后端服务子系统停止抓取装配任务后返回的信息。
示例性的,前端管理子系统还用于:
响应于用户在图形操作界面输入的指令创建有限状态机,并将有限状态机的状态设置为初始化状态;
响应于用户在图形操作界面输入的指令创建数据库,并在数据库中创建任务数据表。
其中,有限状态机的状态用于表示抓取装配任务的状态,有限状态机的状态包括初始化状态、运行状态、暂停状态、停止状态以及完成状态,初始化状态、运行状态、暂停状态和停止状态之间通过开始命令、暂停命令、重启命令或停止命令进行转换。其中,数据库可以是前端数据库,用于存储与抓取装配任务相关的关联数据表,比如任务数据表,任务数据表用于记录抓取装配任务的属性,抓取装配任务的属性包括但不限于抓取装配任务的唯一编码、类型、状态、总执行次数、已完成次数。
示例性的,在向后端服务子系统发送第一预设命令方面,前端管理子系统用于:
从任务数据表中获取抓取装配任务的状态和总执行次数;
在抓取装配任务的状态为初始化状态的情况下,向后端服务子系统发送第一预设命令和第五预设命令;第五预设命令用于向后端服务子系统指定总执行次数。
示例性的,前端管理子系统还用于:将有限状态机的状态设置为运行状态;将任务数据表中抓取装配任务的状态由初始化状态更新为运行状态。
比如,用户在图形操作界面触发针对抓取装配任务的第一启动信号,前端管理子系统从对应任务数据表中获取到抓取装配任务的状态和总执行次数等信息,在其状态为初始化状态的情况下,前端管理子系统向后端服务子系统发送第一预设命令和第五预设命令,前端管理子系统在接收到后端服务子系统返回的第一执行进度的情况下,将有限状态机的状态由初始化状态转换为运行状态,并在任务数据表中将抓取装配任务的状态由初始化状态更新为运行状态。
示例性的,在向后端服务子系统发送第二预设命令方面,前端管理子系统用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令。
示例性的,前端管理子系统还用于:将有限状态机的状态设置为暂停状态;将任务数据表中抓取装配任务的状态由运行状态更新为暂停状态,并记录抓取装配任务在暂停时的已完成次数。
比如,用户在图形操作界面触发针对抓取装配任务的暂停信号,前端管理子系统查询有限状态机的状态,在确认抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令,前端管理子系统在接收到后端服务子系统返回的暂停信息的情况下,将有限状态机的状态由运行状态转换为暂停状态,在任务数据表中将抓取装配任务的状态由运行状态更新为暂停状态,并记录下当前已完成次数,比如500次。
示例性的,在向后端服务子系统发送第三预设命令方面,前端管理子系统用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为暂停状态的情况下,向后端服务子系统发送第三预设命令和第六预设命令;第六预设命令用于指示后端服务子系统从抓取装配任务被暂停时记录的已完成次数开始抓取装配任务。
示例性的,前端管理子系统还用于:将有限状态机的状态设置为运行状态;将任务数据表中抓取装配任务的状态由暂停状态更新为运行状态。
比如,用户在图形操作界面触发针对抓取装配任务的第二启动信号,前端管理子系统查询有限状态机的状态,在确认抓取装配任务的状态为暂停状态的情况下,向后端服务子系统发送第三预设命令和第六预设命令,后端服务子系统从抓取装配任务被暂停时记录的已完成次数开始抓取装配任务,比如第501次,前端管理子系统在接收到后端服务子系统返回的重启信息和第二执行进度的情况下,将有限状态机的状态由暂停状态转换为运行状态,并在任务数据表中将抓取装配任务的状态由暂停状态更新为运行状态。
示例性的,在向后端服务子系统发送第四预设命令方面,前端管理子系统用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
示例性的,前端管理子系统还用于:将有限状态机的状态设置为停止状态;将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
比如,用户在图形操作界面触发针对抓取装配任务的停止信号,前端管理子系统查询有限状态机的状态,在确认抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令,前端管理子系统在接收到后端服务子系统返回的停止信息的情况下,将有限状态机的状态由运行状态转换为停止状态,在任务数据表中将抓取装配任务的状态由运行状态更新为停止状态。
示例性的,前端管理子系统还用于:在接收到后端服务子系统返回的抓取装配任务执行完毕的信息的情况下,将有限状态机的状态设置为完成状态;将任务数据表中抓取装配任务的状态更新为完成状态。
其中,在抓取装配任务执行完毕的情况下,后端服务子系统向前端管理子系统返回执行完毕的信息,触发前端管理子系统将有限状态机的状态由暂停或运行状态转换为完成状态,在任务数据表中将抓取装配任务的状态由暂停或运行状态更新为完成状态。
其中,基于ROS的机械臂抓取装配管理系统的具体实施方式在图2至图13所示方法实施例中已有相关描述,且能达到相同或相似的有益效果,为避免重复,此处不再赘述。
可以看出,本申请实施例提供的基于ROS的机械臂抓取装配管理系统,由前端管理子系统通过图形操作界面接收用户创建的抓取装配任务,响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务,由后端服务子系统根据预设命令控制机械臂执行抓取装配任务,并向前端管理子系统返回抓取装配任务的执行进度,由前端管理子系统通过图形操作界面显示执行进度。这样基于支持Qt5的前端管理子系统进行抓取装配任务的创建、管理,整个抓取装配过程通过三维实时渲染在图形操作界面进行展示,且可通过预设命令控制抓取装配任务的执行,极大地方便了抓取装配任务的管理,提高了抓取装配任务的可管理性,从而有利于提升抓取装配的效率。
基于图2至图13所示方法实施例的描述,本申请实施例还提供一种基于ROS的机械臂抓取装配管理装置,应用于基于ROS的机械臂抓取装配管理系统的前端管理子系统,该系统包括该前端管理子系统和后端服务子系统,前端管理子系统包括通信框架和图形操作界面,前端管理子系统和后端服务子系统基于该通信框架通信,图形操作界面基于Qt5进行模块化开发得到,前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在图形操作界面的三维实时渲染;请参见图15,图15为本申请实施例提供的一种基于ROS的机械臂抓取装配管理装置的结构示意图,如图15所示,该装置包括:
第一接收模块1501,用于通过图形操作界面接收用户创建的抓取装配任务;
处理模块1502,用于响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;
第二接收模块1503,接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。
在一种可能的实施方式中,在响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令方面,处理模块1502用于:
在检测到图形操作界面上的第一启动信号的情况下,向后端服务子系统发送第一预设命令,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;
在检测到图形操作界面上的暂停信号的情况下,向后端服务子系统发送第二预设命令,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;
在检测到图形操作界面上的第二启动信号的情况下,向后端服务子系统发送第三预设命令,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务;
在检测到图形操作界面上的停止信号的情况下,向后端服务子系统发送第四预设命令,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。
在一种可能的实施方式中,在接收后端服务子系统返回的抓取装配任务的执行进度方面,第二接收模块1503用于:
在向后端服务子系统发送第一预设命令的情况下,接收后端服务子系统响应于第一预设命令返回的第一执行进度;
在向后端服务子系统发送第二预设命令的情况下,接收后端服务子系统响应于第二预设命令返回的暂停信息;
在向后端服务子系统发送第三预设命令的情况下,接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度;
在向后端服务子系统发送第四预设命令的情况下,接收后端服务子系统响应于第四预设命令返回的停止信息。
在一种可能的实施方式中,第一接收模块1501还用于:
响应于用户在图形操作界面输入的指令创建有限状态机,并将有限状态机的状态设置为初始化状态;有限状态机的状态用于表示抓取装配任务的状态;
响应于用户在图形操作界面输入的指令创建数据库,并在数据库中创建任务数据表;任务数据表用于记录抓取装配任务的属性。
在一种可能的实施方式中,在向后端服务子系统发送第一预设命令方面,处理模块1502用于:
从任务数据表中获取抓取装配任务的状态和总执行次数;
在抓取装配任务的状态为初始化状态的情况下,向后端服务子系统发送第一预设命令和第五预设命令;第五预设命令用于向后端服务子系统指定总执行次数。
在一种可能的实施方式中,处理模块1502还用于:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由初始化状态更新为运行状态。
在一种可能的实施方式中,在向后端服务子系统发送第二预设命令方面,处理模块1502用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令。
在一种可能的实施方式中,处理模块1502还用于:
将有限状态机的状态设置为暂停状态;
将任务数据表中抓取装配任务的状态由运行状态更新为暂停状态,并记录抓取装配任务在暂停时的已完成次数。
在一种可能的实施方式中,在向后端服务子系统发送第三预设命令方面,处理模块1502用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为暂停状态的情况下,向后端服务子系统发送第三预设命令和第六预设命令;第六预设命令用于指示后端服务子系统从抓取装配任务被暂停时记录的已完成次数开始抓取装配任务。
在一种可能的实施方式中,处理模块1502还用于:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由暂停状态更新为运行状态。
在一种可能的实施方式中,在向后端服务子系统发送第四预设命令方面,处理模块1502用于:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
在一种可能的实施方式中,处理模块1502还用于:
将有限状态机的状态设置为停止状态;
将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
在一种可能的实施方式中,处理模块1502还用于:
在接收到后端服务子系统返回的抓取装配任务执行完毕的信息的情况下,将有限状态机的状态设置为完成状态;
将任务数据表中抓取装配任务的状态更新为完成状态。
在一种可能的实施方式中,前端管理子系统的代码库编写有预设文件;预设文件中插入有预设指令,预设指令用于触发Qt的元对象编译器生成元对象代码,使得前端管理子系统支持Qt5。
在一种可能的实施方式中,图形操作界面是基于Qt5将菜单栏、工具栏、任务树、任务细节、任务编辑、任务向导和显示窗口作为单独的子界面插入前端管理子系统的主界面得到的。
在一种可能的实施方式中,前端管理子系统还包括Rviz插件,Rviz插件是基于Moveit开发得到的,Rviz插件中包括机械臂的三维模型、机械臂的工作空间、网格和运动规划,工作空间用于限定机械臂工作时的空间范围;机械臂抓取装配过程在图形操作界面的三维实时渲染通过Librviz的函数调用接口将网格和运动规划的显示输出函数插入到显示窗口类中实现。
在一种可能的实施方式中,通信框架通过对Actionlib包中的sendGoal接口和cancelGoal接口进行封装抽象得到,封装抽象后的sendGoal接口用于向后端服务子系统发送第一预设命令和第三预设命令,封装抽象后的cancelGoal接口用于向后端服务子系统发送第二预设命令和第四预设命令。
根据本申请的一个实施例,图15所示的基于ROS的机械臂抓取装配管理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,基于ROS的机械臂抓取装配管理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图15中所示的基于ROS的机械臂抓取装配管理装置设备,以及来实现本申请实施例的基于ROS的机械臂抓取装配管理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本申请实施例还提供一种电子设备。请参见图16,该电子设备至少包括处理器1601、输入设备1602、输出设备1603以及计算机存储介质1604。其中,电子设备内的处理器1601、输入设备1602、输出设备1603以及计算机存储介质1604可通过总线或其他方式连接。
计算机存储介质1604可以存储在电子设备的存储器中,所述计算机存储介质1604用于存储计算机程序,所述计算机程序包括程序指令,所述处理器1601用于执行所述计算机存储介质1604存储的程序指令。处理器1601(或称CPU(Central Processing Unit,中央处理器))是电子设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本申请实施例提供的电子设备的处理器1601可以用于进行一系列基于ROS的机械臂抓取装配管理的处理:
通过图形操作界面接收用户创建的抓取装配任务;
响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,以使后端服务子系统控制机械臂执行抓取装配任务;
接收后端服务子系统返回的抓取装配任务的执行进度,通过图形操作界面显示执行进度。
再一个实施例中,处理器1601执行上述响应于用户在图形操作界面上的操作向后端服务子系统发送预设命令,包括:
在检测到图形操作界面上的第一启动信号的情况下,向后端服务子系统发送第一预设命令,第一预设命令用于指示后端服务子系统控制机械臂开始抓取装配任务;
在检测到图形操作界面上的暂停信号的情况下,向后端服务子系统发送第二预设命令,第二预设命令用于指示后端服务子系统控制机械臂暂停抓取装配任务;
在检测到图形操作界面上的第二启动信号的情况下,向后端服务子系统发送第三预设命令,第三预设命令用于指示后端服务子系统控制机械臂重启抓取装配任务;
在检测到图形操作界面上的停止信号的情况下,向后端服务子系统发送第四预设命令,第四预设命令用于指示后端服务子系统控制机械臂停止抓取装配任务。
再一个实施例中,处理器1601执行上述接收后端服务子系统返回的抓取装配任务的执行进度,包括:
在向后端服务子系统发送第一预设命令的情况下,接收后端服务子系统响应于第一预设命令返回的第一执行进度;
在向后端服务子系统发送第二预设命令的情况下,接收后端服务子系统响应于第二预设命令返回的暂停信息;
在向后端服务子系统发送第三预设命令的情况下,接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度;
在向后端服务子系统发送第四预设命令的情况下,接收后端服务子系统响应于第四预设命令返回的停止信息。
再一个实施例中,在通过图形操作界面接收用户创建的抓取装配任务之后,处理器1601还用于:
响应于用户在图形操作界面输入的指令创建有限状态机,并将有限状态机的状态设置为初始化状态;有限状态机的状态用于表示抓取装配任务的状态;
响应于用户在图形操作界面输入的指令创建数据库,并在数据库中创建任务数据表;任务数据表用于记录抓取装配任务的属性。
再一个实施例中,抓取装配任务的属性包括抓取装配任务的状态和总执行次数;处理器1601执行上述向后端服务子系统发送第一预设命令,包括:
从任务数据表中获取抓取装配任务的状态和总执行次数;
在抓取装配任务的状态为初始化状态的情况下,向后端服务子系统发送第一预设命令和第五预设命令;第五预设命令用于向后端服务子系统指定总执行次数。
再一个实施例中,在接收后端服务子系统响应于第一预设命令返回的第一执行进度之后,处理器1601还用于:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由初始化状态更新为运行状态。
再一个实施例中,处理器1601执行上述抓取装配任务的属性还包括已完成次数;向后端服务子系统发送第二预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第二预设命令。
再一个实施例中,在接收后端服务子系统响应于第二预设命令返回的暂停信息之后,处理器1601还用于:
将有限状态机的状态设置为暂停状态;
将任务数据表中抓取装配任务的状态由运行状态更新为暂停状态,并记录抓取装配任务在暂停时的已完成次数。
再一个实施例中,处理器1601执行上述向后端服务子系统发送第三预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为暂停状态的情况下,向后端服务子系统发送第三预设命令和第六预设命令;第六预设命令用于指示后端服务子系统从抓取装配任务被暂停时记录的已完成次数开始抓取装配任务。
再一个实施例中,在接收后端服务子系统响应于第三预设命令返回的重启信息和第二执行进度之后,处理器1601还用于:
将有限状态机的状态设置为运行状态;
将任务数据表中抓取装配任务的状态由暂停状态更新为运行状态。
再一个实施例中,处理器1601执行上述向后端服务子系统发送第四预设命令,包括:
获取有限状态机的状态,以得到抓取装配任务的状态;
在抓取装配任务的状态为运行状态的情况下,向后端服务子系统发送第四预设命令。
再一个实施例中,在接收后端服务子系统响应于第四预设命令返回的停止信息之后,处理器1601还用于:
将有限状态机的状态设置为停止状态;
将任务数据表中抓取装配任务的状态由运行状态更新为停止状态。
再一个实施例中,在接收后端服务子系统返回的抓取装配任务的执行进度之后,处理器1601还用于:
在接收到后端服务子系统返回的抓取装配任务执行完毕的信息的情况下,将有限状态机的状态设置为完成状态;
将任务数据表中抓取装配任务的状态更新为完成状态。
示例性的,上述电子设备可以是桌上电脑平板、笔记本电脑、掌上电脑、可编程终端等,电子设备可包括但不仅限于处理器1601、输入设备1602、输出设备1603以及计算机存储介质1604,输入设备1602可以是键盘、触摸屏等,输出设备1603可以是扬声器、显示器、射频发送器等。本领域技术人员可以理解,所述示意图仅仅是电子设备的示例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
需要说明的是,由于电子设备的处理器1601执行计算机程序时实现上述的基于ROS的机械臂抓取装配管理方法中的步骤,因此上述基于ROS的机械臂抓取装配管理方法的实施例均适用于该电子设备,且均能达到相同或相似的有益效果。
本申请实施例还提供了一种计算机存储介质(Memory),所述计算机存储介质是电子设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括终端中的内置存储介质,当然也可以包括终端所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了终端的操作系统。并且,在该存储空间中还存放了适于被处理器1601加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的,还可以是至少一个位于远离前述处理器1601的计算机存储介质。在一个实施例中,可由处理器1601加载并执行计算机存储介质中存放的一条或多条指令,以实现上述有关基于ROS的机械臂抓取装配管理方法的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器1601加载并执行上述基于ROS的机械臂抓取装配管理方法中的步骤。
示例性的,计算机存储介质的计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,由于计算机存储介质的计算机程序被处理器执行时实现上述的基于ROS的机械臂抓取装配管理方法中的步骤,因此上述基于ROS的机械臂抓取装配管理方法的所有实施例均适用于该计算机存储介质,且均能达到相同或相似的有益效果。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (21)
1.一种基于ROS的机械臂抓取装配管理方法,其特征在于,应用于基于ROS的机械臂抓取装配管理系统的前端管理子系统,所述系统包括所述前端管理子系统和后端服务子系统,所述前端管理子系统包括通信框架和图形操作界面,所述前端管理子系统和所述后端服务子系统基于所述通信框架通信,所述图形操作界面基于Qt5进行模块化开发得到,所述前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在所述图形操作界面的三维实时渲染;所述方法包括:
通过所述图形操作界面接收用户创建的抓取装配任务;
响应于用户在所述图形操作界面上的操作向所述后端服务子系统发送预设命令,以使所述后端服务子系统控制所述机械臂执行所述抓取装配任务;
接收所述后端服务子系统返回的所述抓取装配任务的执行进度,通过所述图形操作界面显示所述执行进度。
2.根据权利要求1所述的方法,其特征在于,所述响应于用户在所述图形操作界面上的操作向所述后端服务子系统发送预设命令,包括:
在检测到所述图形操作界面上的第一启动信号的情况下,向所述后端服务子系统发送第一预设命令,所述第一预设命令用于指示所述后端服务子系统控制所述机械臂开始所述抓取装配任务;
在检测到所述图形操作界面上的暂停信号的情况下,向所述后端服务子系统发送第二预设命令,所述第二预设命令用于指示所述后端服务子系统控制所述机械臂暂停所述抓取装配任务;
在检测到所述图形操作界面上的第二启动信号的情况下,向所述后端服务子系统发送第三预设命令,所述第三预设命令用于指示所述后端服务子系统控制所述机械臂重启所述抓取装配任务;
在检测到所述图形操作界面上的停止信号的情况下,向所述后端服务子系统发送第四预设命令,所述第四预设命令用于指示所述后端服务子系统控制所述机械臂停止所述抓取装配任务。
3.根据权利要求2所述的方法,其特征在于,所述接收所述后端服务子系统返回的所述抓取装配任务的执行进度,包括:
在向所述后端服务子系统发送所述第一预设命令的情况下,接收所述后端服务子系统响应于所述第一预设命令返回的第一执行进度;
在向所述后端服务子系统发送所述第二预设命令的情况下,接收所述后端服务子系统响应于所述第二预设命令返回的暂停信息;
在向所述后端服务子系统发送所述第三预设命令的情况下,接收所述后端服务子系统响应于所述第三预设命令返回的重启信息和第二执行进度;
在向所述后端服务子系统发送所述第四预设命令的情况下,接收所述后端服务子系统响应于所述第四预设命令返回的停止信息。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述在通过所述图形操作界面接收用户创建的抓取装配任务之后,所述方法还包括:
响应于用户在所述图形操作界面输入的指令创建有限状态机,并将所述有限状态机的状态设置为初始化状态;所述有限状态机的状态用于表示所述抓取装配任务的状态;
响应于用户在所述图形操作界面输入的指令创建数据库,并在所述数据库中创建任务数据表;所述任务数据表用于记录所述抓取装配任务的属性。
5.根据权利要求4所述的方法,其特征在于,所述抓取装配任务的属性包括所述抓取装配任务的状态和总执行次数;所述向所述后端服务子系统发送第一预设命令,包括:
从所述任务数据表中获取所述抓取装配任务的状态和所述总执行次数;
在所述抓取装配任务的状态为初始化状态的情况下,向所述后端服务子系统发送所述第一预设命令和第五预设命令;所述第五预设命令用于向所述后端服务子系统指定所述总执行次数。
6.根据权利要求4所述的方法,其特征在于,在接收所述后端服务子系统响应于所述第一预设命令返回的第一执行进度之后,所述方法还包括:
将所述有限状态机的状态设置为运行状态;
将所述任务数据表中所述抓取装配任务的状态由初始化状态更新为运行状态。
7.根据权利要求4所述的方法,其特征在于,所述抓取装配任务的属性还包括已完成次数;所述向所述后端服务子系统发送第二预设命令,包括:
获取所述有限状态机的状态,以得到所述抓取装配任务的状态;
在所述抓取装配任务的状态为运行状态的情况下,向所述后端服务子系统发送所述第二预设命令。
8.根据权利要求7所述的方法,其特征在于,在接收所述后端服务子系统响应于所述第二预设命令返回的暂停信息之后,所述方法还包括:
将所述有限状态机的状态设置为暂停状态;
将所述任务数据表中所述抓取装配任务的状态由运行状态更新为暂停状态,并记录所述抓取装配任务在暂停时的所述已完成次数。
9.根据权利要求7所述的方法,其特征在于,所述向所述后端服务子系统发送第三预设命令,包括:
获取所述有限状态机的状态,以得到所述抓取装配任务的状态;
在所述抓取装配任务的状态为暂停状态的情况下,向所述后端服务子系统发送所述第三预设命令和第六预设命令;所述第六预设命令用于指示所述后端服务子系统从所述抓取装配任务被暂停时记录的所述已完成次数开始所述抓取装配任务。
10.根据权利要求9所述的方法,其特征在于,在接收所述后端服务子系统响应于所述第三预设命令返回的重启信息和第二执行进度之后,所述方法还包括:
将所述有限状态机的状态设置为运行状态;
将所述任务数据表中所述抓取装配任务的状态由暂停状态更新为运行状态。
11.根据权利要求4-10任一项所述的方法,其特征在于,所述向所述后端服务子系统发送第四预设命令,包括:
获取所述有限状态机的状态,以得到所述抓取装配任务的状态;
在所述抓取装配任务的状态为运行状态的情况下,向所述后端服务子系统发送所述第四预设命令。
12.根据权利要求4-10任一项所述的方法,其特征在于,在接收所述后端服务子系统响应于所述第四预设命令返回的停止信息之后,所述方法还包括:
将所述有限状态机的状态设置为停止状态;
将所述任务数据表中所述抓取装配任务的状态由运行状态更新为停止状态。
13.根据权利要求4-12任一项所述的方法,其特征在于,在接收所述后端服务子系统返回的所述抓取装配任务的执行进度之后,所述方法还包括:
在接收到所述后端服务子系统返回的所述抓取装配任务执行完毕的信息的情况下,将所述有限状态机的状态设置为完成状态;
将所述任务数据表中所述抓取装配任务的状态更新为完成状态。
14.根据权利要求1所述的方法,其特征在于,所述前端管理子系统的代码库编写有预设文件;所述预设文件中插入有预设指令,所述预设指令用于触发Qt的元对象编译器生成元对象代码,使得所述前端管理子系统支持Qt5。
15.根据权利要求1或14所述的方法,其特征在于,所述图形操作界面是基于Qt5将菜单栏、工具栏、任务树、任务细节、任务编辑、任务向导和显示窗口作为单独的子界面插入所述前端管理子系统的主界面得到的。
16.根据权利要求15所述的方法,其特征在于,所述前端管理子系统还包括Rviz插件,所述Rviz插件是基于Moveit开发得到的,所述Rviz插件中包括所述机械臂的三维模型、所述机械臂的工作空间、网格和运动规划,所述工作空间用于限定所述机械臂工作时的空间范围;所述机械臂抓取装配过程在所述图形操作界面的三维实时渲染通过Librviz的函数调用接口将网格和运动规划的显示输出函数插入到所述显示窗口类中实现。
17.根据权利要求2所述的方法,其特征在于,所述通信框架通过对Actionlib包中的sendGoal接口和cancelGoal接口进行封装抽象得到,封装抽象后的sendGoal接口用于向所述后端服务子系统发送所述第一预设命令和所述第三预设命令,封装抽象后的cancelGoal接口用于向所述后端服务子系统发送所述第二预设命令和所述第四预设命令。
18.一种基于ROS的机械臂抓取装配管理系统,其特征在于,所述系统包括前端管理子系统和后端服务子系统,所述前端管理子系统包括通信框架和图形操作界面,所述前端管理子系统和所述后端服务子系统基于所述通信框架通信,所述图形操作界面基于Qt5进行模块化开发得到,所述前端管理子系统基于Qt5的渲染接口实现机械臂抓取装配过程在所述图形操作界面的三维实时渲染;
所述前端管理子系统,用于通过所述图形操作界面接收用户创建的抓取装配任务,响应于用户在所述图形操作界面上的操作向所述后端服务子系统发送预设命令,以使所述后端服务子系统控制所述机械臂执行所述抓取装配任务;
所述后端服务子系统,用于接收所述预设命令,根据所述预设命令控制所述机械臂执行所述抓取装配任务,并向所述前端管理子系统返回所述抓取装配任务的执行进度;
所述前端管理子系统,还用于接收所述执行进度,通过所述图形操作界面显示所述执行进度。
19.一种基于ROS的机械臂抓取装配管理装置,其特征在于,所述装置包括:
第一接收模块,用于通过所述图形操作界面接收用户创建的抓取装配任务;
处理模块,用于响应于用户在所述图形操作界面上的操作向所述后端服务子系统发送预设命令,以使所述后端服务子系统控制所述机械臂执行所述抓取装配任务;
第二接收模块,接收所述后端服务子系统返回的所述抓取装配任务的执行进度,通过所述图形操作界面显示所述执行进度。
20.一种电子设备,包括输入设备和输出设备,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如权利要求1-17任一项所述的方法。
21.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1-17任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440306.9A CN113172622B (zh) | 2021-04-22 | 2021-04-22 | 基于ros的机械臂抓取装配管理方法、系统及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110440306.9A CN113172622B (zh) | 2021-04-22 | 2021-04-22 | 基于ros的机械臂抓取装配管理方法、系统及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113172622A true CN113172622A (zh) | 2021-07-27 |
CN113172622B CN113172622B (zh) | 2024-04-16 |
Family
ID=76924191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110440306.9A Active CN113172622B (zh) | 2021-04-22 | 2021-04-22 | 基于ros的机械臂抓取装配管理方法、系统及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113172622B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113671963A (zh) * | 2021-08-23 | 2021-11-19 | 深圳市小二极客科技有限公司 | 机器人传输服务三端控制系统 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005293491A (ja) * | 2004-04-05 | 2005-10-20 | Hitachi Ltd | サーバシステム |
AU2009202142A1 (en) * | 2009-05-29 | 2010-12-16 | Canon Kabushiki Kaisha | Creation of user interface interactions |
CN104699122A (zh) * | 2015-02-12 | 2015-06-10 | 哈尔滨工业大学 | 一种机器人运动控制系统 |
CN107181818A (zh) * | 2017-06-27 | 2017-09-19 | 华南师范大学 | 基于云平台的机器人远端控制和管理系统及方法 |
CN109760059A (zh) * | 2019-02-28 | 2019-05-17 | 华中科技大学 | 基于bim的机械臂装配任务规划方法及建筑装配方法 |
CN109903401A (zh) * | 2019-02-23 | 2019-06-18 | 深圳市元征科技股份有限公司 | 车辆支付管理方法、车载终端及电子设备 |
CN110543144A (zh) * | 2019-08-30 | 2019-12-06 | 天津施格自动化科技有限公司 | 图形化编程控制机器人的方法及系统 |
CN111136671A (zh) * | 2020-01-19 | 2020-05-12 | 国家电网有限公司 | 一种用于变电站巡检的机器人系统 |
CN111368720A (zh) * | 2020-03-03 | 2020-07-03 | 瀚颐(上海)汽车电子科技有限公司 | 一种自动搬运取货系统及方法 |
US10735522B1 (en) * | 2019-08-14 | 2020-08-04 | ProKarma Inc. | System and method for operation management and monitoring of bots |
CN111508066A (zh) * | 2020-04-16 | 2020-08-07 | 北京迁移科技有限公司 | 一种基于3d视觉的无序堆叠工件抓取系统及交互方法 |
KR102190968B1 (ko) * | 2020-06-16 | 2020-12-14 | 주식회사 아이온커뮤니케이션즈 | Dmfc로 동작하는 이동 로봇들의 작업 수행 최적화를 위한 운용 관리 시스템 및 방법 |
-
2021
- 2021-04-22 CN CN202110440306.9A patent/CN113172622B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005293491A (ja) * | 2004-04-05 | 2005-10-20 | Hitachi Ltd | サーバシステム |
AU2009202142A1 (en) * | 2009-05-29 | 2010-12-16 | Canon Kabushiki Kaisha | Creation of user interface interactions |
CN104699122A (zh) * | 2015-02-12 | 2015-06-10 | 哈尔滨工业大学 | 一种机器人运动控制系统 |
CN107181818A (zh) * | 2017-06-27 | 2017-09-19 | 华南师范大学 | 基于云平台的机器人远端控制和管理系统及方法 |
CN109903401A (zh) * | 2019-02-23 | 2019-06-18 | 深圳市元征科技股份有限公司 | 车辆支付管理方法、车载终端及电子设备 |
CN109760059A (zh) * | 2019-02-28 | 2019-05-17 | 华中科技大学 | 基于bim的机械臂装配任务规划方法及建筑装配方法 |
US10735522B1 (en) * | 2019-08-14 | 2020-08-04 | ProKarma Inc. | System and method for operation management and monitoring of bots |
CN110543144A (zh) * | 2019-08-30 | 2019-12-06 | 天津施格自动化科技有限公司 | 图形化编程控制机器人的方法及系统 |
CN111136671A (zh) * | 2020-01-19 | 2020-05-12 | 国家电网有限公司 | 一种用于变电站巡检的机器人系统 |
CN111368720A (zh) * | 2020-03-03 | 2020-07-03 | 瀚颐(上海)汽车电子科技有限公司 | 一种自动搬运取货系统及方法 |
CN111508066A (zh) * | 2020-04-16 | 2020-08-07 | 北京迁移科技有限公司 | 一种基于3d视觉的无序堆叠工件抓取系统及交互方法 |
KR102190968B1 (ko) * | 2020-06-16 | 2020-12-14 | 주식회사 아이온커뮤니케이션즈 | Dmfc로 동작하는 이동 로봇들의 작업 수행 최적화를 위한 운용 관리 시스템 및 방법 |
Non-Patent Citations (1)
Title |
---|
王国瑞, 史明华, 肖放, 温淑鸿: "装配CAPP系统中制造资源的构建与管理机制", 天津工业大学学报, no. 02, 8 January 2004 (2004-01-08), pages 47 - 49 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113671963A (zh) * | 2021-08-23 | 2021-11-19 | 深圳市小二极客科技有限公司 | 机器人传输服务三端控制系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113172622B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543144B (zh) | 图形化编程控制机器人的方法及系统 | |
CN105843630B (zh) | 一种基于机器人图形化编程开发的方法 | |
CN105630472B (zh) | 制造执行系统客户端快速开发框架及其软件开发方法 | |
US10850393B2 (en) | Method for extending end user programming of an industrial robot with third party contributions | |
CN109605366A (zh) | 机器人图形化编程交互系统及机器人 | |
CN114064152B (zh) | 基于动态加载的嵌入式多核调试系统及其调试方法 | |
CN111643898B (zh) | 虚拟场景构建方法、装置、终端和存储介质 | |
CN104698950A (zh) | 一种外围设备控制方法、微控制器、上位机及系统 | |
CN103019702B (zh) | 一种可视化三维显示控制编辑系统和方法 | |
CN112276943A (zh) | 机器人示教控制方法、示教控制系统、计算机设备和介质 | |
CN110673844A (zh) | 一种图像处理软件开发方法及系统 | |
CN113172622B (zh) | 基于ros的机械臂抓取装配管理方法、系统及相关设备 | |
CN115668126A (zh) | 图形化编程方法和处理器、终端 | |
CN114035860B (zh) | 一种基于rpa全局变量模块的流程参数配置系统 | |
CN114995816A (zh) | 业务流程配置方法、装置、电子设备及可读存储介质 | |
CN114564192A (zh) | 一种实时以太网工控软件开发环境的数据映射方法 | |
CN112861267B (zh) | 船舶mbd信息重用方法、系统、介质及终端 | |
CN114398115A (zh) | 可视化流水线生成方法和装置、存储介质及电子设备 | |
CN111367804B (zh) | 基于云计算及网络编程实现前端协作调试的方法 | |
CN104572275B (zh) | 一种进程加载方法、装置及系统 | |
CN111368720A (zh) | 一种自动搬运取货系统及方法 | |
CN102830978A (zh) | 一种可视化3d编程系统及应用 | |
CN115951970A (zh) | 一种异构多仿真软件集成开发环境 | |
CN105241011A (zh) | 空调群控系统开发装置和方法 | |
CN115421847A (zh) | 支持多引擎的研发运维平台和cicd流水线的管理方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |