一种控制方法、装置及系统与流程

文档序号:11153102阅读:303来源:国知局
一种控制方法、装置及系统与制造工艺

本发明涉及通信技术领域,尤其涉及一种控制方法、装置及系统。



背景技术:

在机器人领域,机器人在执行任务时会面临复杂的周围环境以及各种层次的任务规划。这些复杂的环境问题以及多层次的任务规划问题极大提高了控制程序的复杂程度。如果控制程序的结构组织不当,可能会造成各个进程的延迟、阻塞和进程间的资源抢占等问题,甚至会造成程序紊乱,致使机器人失控等危险情况发生。

因此,为了进行更好的处理复杂的环境与任务规划,现有的机器人控制程序中使用FSM(有限状态机)或基于状态机的SMACH(state machine)等执行复杂任务的程序框架。但是,采用状态机的程序架构要求每个状态明确的转换到另一个状态,程序复杂。在处理复杂任务时,状态和转换条件变动并同时快速增多,难以对已有程序进行大规模的扩展,维护困难。



技术实现要素:

有鉴于此,本发明提供了一种控制方法、装置及系统,以解决现有技术中,控制程序复杂,难以大规模扩展,维护困难的问题。

本发明实施例提供的控制方法,应用于客户端,所述客户端中保存有预先得到的动作规则,所述动作规则,包括:至少一个动作指令和至少一个动作指令的触发逻辑;所述方法,包括:

接收任务指令;

根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制设备执行相应的动作。

优选的,还包括:

获取所述执行端的运行状态;

根据所述运行状态,查询所述动作规则,得到需发送的第二动作指令集合以及所述第二动作指令集合中动作指令的触发逻辑,所述第二动作指令集合至少包括一个动作指令;

根据所述第二动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制所述设备执行相应的动作。

优选的,所述动作规则为行为树;所述行为树,包括:叶子节点、分支节点和条件节点;

一个所述分支节点的下一级连接至少两个子节点,所述子节点包括所述叶子节点和/或所述条件节点和/或所述分支节点;

一个所述条件节点的下一级连接一个所述子节点;

所述叶子节点为所述动作规则中的动作指令;

所述分支节点为所述动作指令集合中动作指令的触发逻辑;

所述条件节点为其子节点的入口条件。

优选的,所述根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,具体包括:

根据所述任务指令,从所述树结构的根节点开始,查询所述树结构,获取与所述任务指令相关的分支上全部的树结构,得到任务子树,所述任务子树包括:所述第一动作指令集合和所述第一动作指令集合中动作指令的触发逻辑;

然后,所述根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,具体包括:

依次遍历所述任务子树的全部节点;

当遍历到所述任务子树的分支节点时,根据该分支节点所指示的触发逻辑触发该分支节点的子节点;

当遍历到所述任务子树的条件节点时,若满足该条件节点的入口条件,则遍历该条件节点的子节点;

当遍历到所述任务子树的叶子节点时,触发该叶子节点所指示的动作指令,将该动作指令发送给所述执行端。

本发明实施例还提供了一种控制装置,应用于客户端,所述客户端中保存有预先得到的动作规则,所述动作规则,包括:至少一个动作指令和至少一个动作指令的触发逻辑;所述装置,包括:接收模块、查询模块和发送模块;

所述接收模块,用于接收任务指令;

所述查询模块,用于根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

所述发送模块,用于根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制设备执行相应的动作。

优选的,还包括:获取模块;

所述获取模块,用于获取所述执行端的运行状态;

所述查询模块,还用于根据所述运行状态,查询所述动作规则,得到需发送的第二动作指令集合以及所述第二动作指令集合中动作指令的触发逻辑,所述第二动作指令集合至少包括一个动作指令;

所述发送模块,还用于根据所述第二动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制所述设备执行相应的动作。

优选的,所述动作规则为行为树;所述行为树,包括:叶子节点、分支节点和条件节点;

一个所述分支节点的下一级连接至少两个子节点,所述子节点包括所述叶子节点和/或所述条件节点和/或所述分支节点;

一个所述条件节点的下一级连接一个所述子节点;

所述叶子节点为所述动作规则中的动作指令;

所述分支节点为所述动作指令集合中动作指令的触发逻辑;

所述条件节点为其子节点的入口条件。

优选的,所述查询模块,具体包括:获取子模块;

所述获取子模块,用于根据所述任务指令,从所述树结构的根节点开始,查询所述树结构,获取与所述任务指令相关的分支上全部的树结构,得到任务子树,所述任务子树包括:所述第一动作指令集合和所述第一动作指令集合中动作指令的触发逻辑;

然后,所述发送模块,具体包括:遍历子模块、判断子模块和发送子模块;

所述遍历子模块,用于依次遍历所述任务子树的全部节点,当所述遍历子模块遍历到所述任务子树的分支节点时,根据该分支节点所指示的触发逻辑触发该分支节点的子节点;

所述判断子模块,用于当所述遍历子模块遍历到所述任务子树的条件节点时,判断是否满足该条件节点的入口条件;所述遍历子模块,还用于当所述判断子模块判断满足该条件节点的入口条件时,遍历该条件节点的子节点;

所述发送子模块,用于当所述遍历子模块遍历到所述任务子树的叶子节点时,触发该叶子节点所指示的动作指令,将该动作指令发送给所述执行端。

本发明实施例还提供了一种控制系统,包括:客户端和执行端;

所述客户端中保存有预先得到的动作规则,所述动作规则,包括:至少一个动作指令和动作指令的触发逻辑;

所述客户端,用于接收任务指令,并根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

所述客户端,还用于根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端;

所述执行端,用于接收所述客户端发送的动作指令,并根据该动作指令控制设备执行相应的动作。

优选的,所述执行端,包括:接收单元、处理单元和至少一个动作控制单元;

所述接收单元,用于接收所述客户端发送的动作指令;

所述处理单元,用于根据接收到的动作指令,触发相应的动作控制单元;

所述动作控制单元,用于控制所述设备执行相应的动作。

与现有技术相比,本发明至少具有以下优点:

本发明实施例提供的控制方法,应用于客户端,在客户端中保存有预先的动作规则。在接收到任务指令后,根据该任务指令,查询动作规则,得到需执行的动作指令集合以及动作指令集合中动作指令的触发逻辑。之后,按照该动作指令集合中动作指令的触发逻辑,依次触发相应的动作指令,将该动作指令发送给执行端。执行端在接收到该动作指令后,触发相应的控制程序以控制设备执行该动作,完成任务指令所指示的任务。本发明实施例提供的控制方法,将动作规则从程序中独立出来,单独设计动作规则的动作组成及逻辑,使得控制程序的结构更清晰,更易于组织大规模的复杂任务,还使得本领域技术人员易于对设备的任务规划进行扩展和维护。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例提供的行为树的结构示意图;

图2a-图2c为本发明实施例提供的行为树中各节点的类图;

图3为本发明提供的控制方法实施例一的流程示意图;

图4为本发明实施例提供的控制方法中任务子树的结构示意图;

图5为本发明提供的控制方法实施例二的流程示意图;

图6为本发明提供的控制装置实施例一的结构示意图;

图7为本发明提供的控制装置实施例二的结构示意图;

图8为本发明提供的控制系统实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为说明现有技术所使用的状态机框架在处理复杂任务时的复杂程度,这里列举一个简单的机器人执行倒水任务的例子:

机器人首先需要通过语音等传感器来获得主人的指令(这就需要机器人软件系统时刻监听语音传感器的数据变化)。机器人判断出主人的倒水命令后,便会通过视觉传感器来扫描周围水杯的位置,与此同时还会伴随着移动身体和头部转动等。一旦机器人找到水杯就会向着其位置运动,直到机器人判断出自己的手抓能够抓到水杯时停止。然后机器人通过手臂运动规划算法,规划出一条合适的手臂运动路径,并通过某种方式将规划好的手臂运动轨迹数据传到机器臂的底层驱动程序,手臂才能进行运动抓杯子。机器人抓杯子倒水这个动作又可以分解为几个子任务,比如左手去拿杯子,右手去拿水壶。然后,这两个子任务又可以分解,比如右手先伸到水壶附近,张开手抓,慢速去抓水壶等等。两个手臂配合完成倒水的过程同样可以细化。

这时,使用传统程序的逻辑判断,分支选择执行的方式就会显很乱,难以维护和扩展,即使使用FSM或SMACH也会出现下面提及的各种缺点。以FSM为例,其要求每一个状态明确地转换到另一状态,这使得软件工程师需要处理非常多的编程细节。FSM难以达到动作并发的效果,而运行多个状态机来实现运动并发时,要么会导致死锁,要么需手工编辑来确保各个状态机之间的兼容性,编程过程复杂。并且,由于FSM非模块化的处理各个逻辑,随着状态和转换条件的增多控制程序急速地变得错综复杂,以至于本领域技术人员很难对它做出改动,难以大规模扩展控制程序。综上,现有采用状态机的程序架构使得本领域技术人员在控制机器人处理复杂任务时需要做大量工作,不够便捷。

为此,本发明提供了一种控制方法、装置及系统,将游戏领域的行为树概念模型应用到机器人任务规划中,与目前流行的机器人操作系统ROS(Robot Operating System,机器人操作系统)进行结合。通过行为树规划机器人的任务动作,可以高效的组织复杂的机器人任务。然后,在行为树的行为节点中通过实例化一个客户端,并单独实例化对应此行为节点的服务模块,在该服务模块中编写机器人所需执行的任务。行为节点与服务模块之间使用ROS中的通信机制进行通信。行为树中的行为节点作为客户端只需发送任务给对应的服务模块,由基于ROS的服务模块进行任务的执行。这样,即可降低控制程序的复杂度,便于后续维护。本领域技术人员还可通过改进行为树的具体结构以及增加相应的服务模块,实现对复杂任务的控制以及任务扩展。

基于上述思想,为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。

首先需要说明的是,本发明实施例提供的控制方法及装置,应用于客户端,所述客户端中保存有预先得到的动作规则,所述动作规则,包括:至少一个动作指令和动作指令的触发逻辑;

在一个例子中,所述动作规则可以是行为树,其具体结构如图1所示,图2a-图2c示出了行为树中几种节点的类图。

所述行为树,包括:叶子节点、分支节点和条件节点;

一个所述分支节点的下一级连接至少两个子节点,所述子节点包括所述叶子节点和/或所述条件节点和/或所述分支节点;

一个所述条件节点的下一级连接一个所述子节点;

此时,所述叶子节点为所述动作规则中的动作指令;所述分支节点为所述动作指令集合中动作指令的触发逻辑;所述条件节点为其子节点的入口条件。

其中,分支节点为行为树中的逻辑控制节点。

逻辑控制节点(ControlNode,其类图如图2a所示),包括:顺序节点、选择节点和并行节点等。

顺序节点(SequenceNode、SequenceStarNode):将其所有子节点依次执行;也就是说当前一个子节点返回“完成”状态后,再触发后一个子节点。一般从优先级高的左边子节点开始,依次顺序执行所有的子节点。

选择节点(SelectNode、SelectStarNode)的下一级连接多个条件节点。一般,从最左边的子节点开始遍历,依次判断是否满足该条件节点所指示的入口条件。当找到一个满足其入口条件的条件节点后,触发该条件节点的子节点。

并行节点(ParallelNode):将其所有子节点并行触发。

条件节点(ConditionNode)可以用来与分支节点进行配合,用来表示器其子节点的入口条件。

叶子节点(LeafNode,其类图如图2b所示)为行为树中的行为节点。行为节点(ActionNode)是设备需要执行的真实任务节点。

此外,行为树中还包括根节点(TreeNode,其类图如图2c所示)。根节点包含行为树节点所必须的线程、锁等进程执行与通讯机制,并派生出上面所述的逻辑控制节点和叶子节点等。

可以理解的是,上述设备可以是机器人等通过指令控制运行的设备,在此不再一一列举。以下均以机器人为例进行说明。

这里需要说明的是,使用预先得到的行为规则,例如上述行为树结构规划机器人的动作,通过行为树中逻辑控制节点和条件节点的配合设计,可以使的程序结构更加清晰,便于后续维护。同时,本领域技术人员可以很容易的编写机器人所需功能的叶子节点,通过逻辑控制节点进行组织,极大的提高了控制程序的扩展性。

还需要说明的是,本领域技术人员还可根据实际情况具体设定动作规则的具体实现方法,这里不再一一列举。

下面以行为树为例,详细介绍本发明实施例提供的控制方法及装置。可以理解的是,本发明实施例提供的控制方法及装置还可应用于其他动作规则的实现方式中,具体实施方式类似,这里不再一一赘述。

方法实施例一:

参见图3,该图为本发明提供的控制方法实施例一的流程示意图。

本实施例提供的控制方法,具体包括:

S301:接收任务指令;

S302:根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

具体的,当接收到任务指令后,根据任务指令的标识从行为树的根节点开始,遍历行为树,找出行为树中与该任务指令相关的动作指令和各指令的触发逻辑。

S303:根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制设备执行相应的动作。

例如在行为树中,从根节点开始遍历,根据逻辑控制节点和条件节点的控制逻辑,顺序触发相应的叶子节点。

这里需要说明的是,执行端为机器人中的底层驱动程序。当执行端接收到动作指令后,会根据该动作指令,运行其上预先编辑好的控制程序,以控制机器人完成相应的动作。

还需要说明的是,由于在现有的机器人操作系统ROS中已经对目前比较成熟的机器人视觉,语音,运动规划等算法进行了融合,本实施例中提供的控制方法采用ROS作为整体程序系统的架构,可以缩短开发周期,节约编程时间。

此外,本实施例提供的控制方法,可在行为树的叶子节点上直接使用ROS提供的功能函数进行控制程序的编写。当遍历至叶子节点时,直接运行该叶子节点上编写的程序来控制机器人的动作。但是,在行为节点中使用ROS提供的功能函数进行程序的编写,会使得行为树结构与ROS耦合太紧,增加了后期对程序扩展和维护的难度。

所以,为解决上述问题,本实施例提供的控制方法在行为树的行为节点中通过实例化一个客户端,然后在底层控制程序中单独实例化对应此行为节点的服务节点,在该服务节点中编写机器人所需执行的任务。这样,客户端中保存的行为树,其叶子节点为动作指令。当遍历至叶子节点时,触发相应的动作指令,将该动作指令发送给对应的服务节点。在具体实施时,使用ROS中的Service机制或Actionlib(ROS中的基于action的控制方式)机制沟通上层行为树软件与底层驱动程序。在行为树中可以实例化多个客户端,比如头部的,手臂的,移动底盘的等,然后与硬件设备上实例化的服务器进行通信,这样会使控制程序的结构组织清晰,易于扩展。

在一个例子中,本领域技术人员可通过以下步骤得到第一动作指令集合及其中动作指令的触发逻辑:根据所述任务指令,从所述树结构的根节点开始,查询所述树结构,获取与所述任务指令相关的分支上全部的树结构,得到任务子树,所述任务子树包括:所述第一动作指令集合和所述第一动作指令集合中动作指令的触发逻辑;

例如,在接收到控制机器人执行倒水任务的任务指令时,根据倒水指令,从行为树的根节点开始遍历,找到倒水任务的任务子树,如图4所示。

之后,通过以下步骤,依次将相应的动作指令发送给执行端:

依次遍历所述任务子树的全部节点;

当遍历到所述任务子树的分支节点时,根据该分支节点所指示的触发逻辑触发该分支节点的子节点;当遍历到所述任务子树的条件节点时,若满足该条件节点的入口条件,则遍历该条件节点的子节点;当遍历到所述任务子树的叶子节点时,触发该叶子节点所指示的动作指令,将该动作指令发送给所述执行端。

具体的,在行为树中,分支节点一般为逻辑控制节点。执行时,根据逻辑控制节点的逻辑功能触发该逻辑控制节点的子节点。例如,顺序节点可依次顺序触发其子节点,选择节点为选择其子节点优先级高且能执行成功的进行触发,而并发节点则是并行触发其子节点。

此时,从图4所示的任务子树的根节点开始,从根节点开始搜索,首先是顺序节点(1),它会以从左至右的顺序执行其子节点,先发送电量检测指令,当电量充足时才执行识别语音节点发送检测语音指令。在检测到倒水命令后,执行顺序节点(2)开始控制顺序节点(2)的子节点依次执行。即控制视觉传感器检测水杯位置,然后并行控制底盘移动和双臂的运动学规划保存的手臂运动路径,最后在移动到水杯位置前时,执行刚才规划好的手臂运动,给水杯中倒水。

本实施例提供的控制方法,应用于客户端,在客户端中保存有预先的动作规则。在接收到任务指令后,根据该任务指令,查询动作规则,得到需执行的动作指令集合以及动作指令集合中动作指令的触发逻辑。之后,按照该动作指令集合中动作指令的触发逻辑,依次触发相应的动作指令,将该动作指令发送给执行端。执行端在接收到该动作指令后,触发相应的控制程序以控制设备执行该动作,完成任务指令所指示的任务。本实施例提供的控制方法,将动作规则从程序中独立出来,单独设计动作规则的动作组成及逻辑,使得控制程序的结构更清晰,更易于组织大规模的复杂任务,还使得本领域技术人员易于对设备的任务规划进行扩展和维护。

方法实施例二:

参见图5,该图为本发明提供的控制方法实施例二的流程示意图。相较于图3,本实施例提供了一种更加具体的控制方法。

本实施例的步骤S501-S503分别于方法实施例一的步骤S301-S303相同,在此不再赘述。

为了使客户端和执行端在任务执行过程中能够实时通信,以获得机器人的任务执行情况,便于对突发情况采取紧急措施,防止机器人损害或人员受伤,本实施例采用ROS中的Actionlib机制沟通上层行为树软件与底层驱动程序。此时,客户端可以时刻观察执行端中硬件的执行效果(例如,在移动手臂时手臂的位姿等)。这样,客户端在监测到动作执行错误或突发情况时,可以采取紧急措施,如任务抢断等。

此时,本实施例提供的控制方法,还包括:

S504:获取所述执行端的运行状态;

可以理解的是,本领域技术人员还可根据实际情况,具体设定运行状态的获取方法,在此不再一一列举。

S505:根据所述运行状态,查询所述动作规则,得到需发送的第二动作指令集合以及所述第二动作指令集合中动作指令的触发逻辑,所述第二动作指令集合至少包括一个动作指令;

S506:根据所述第二动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制所述设备执行相应的动作。

可以理解的是,当进行任务抢断时,第二动作指令集合中包括终止指令。通过将该终止指令发送给执行端,控制机器人停止动作。

还需要说明的是,还可通过获取到的运行状态,调整机器人的运行轨迹,改进机器人的任务执行过程。此时,第二任务指令集合中包括控制机器人执行改进后动作的动作指令及该指令的触发顺序。

之后,按照触发顺序,依次将动作指令发送给执行端,以使执行端根据该动作指令控制所述设备执行相应的动作。

基于上述实施例提供的控制方法,本发明实施例还提供了一种控制装置。

装置实施例一:

参见图6,该图为本发明提供的控制装置实施例一的结构示意图。

本实施例提供的控制装置,包括:接收模块100、查询模块200和发送模块300;

所述接收模块100,用于接收任务指令;

所述查询模块200,用于根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

所述发送模块300,用于根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制设备执行相应的动作。

在一个例子中,所述查询模块200,具体包括:获取子模块;

所述获取子模块,用于根据所述任务指令,从所述树结构的根节点开始,查询所述树结构,获取与所述任务指令相关的分支上全部的树结构,得到任务子树,所述任务子树包括:所述第一动作指令集合和所述第一动作指令集合中动作指令的触发逻辑;

此时,所述发送模块300,具体包括:遍历子模块、判断子模块和发送子模块;

所述遍历子模块,用于依次遍历所述任务子树的全部节点,当所述遍历子模块遍历到所述任务子树的分支节点时,根据该分支节点所指示的触发逻辑触发该分支节点的子节点;

所述判断子模块,用于当所述遍历子模块遍历到所述任务子树的条件节点时,判断是否满足该条件节点的入口条件;所述遍历子模块,还用于当所述判断子模块判断满足该条件节点的入口条件时,遍历该条件节点的子节点;

所述发送子模块,用于当所述遍历子模块遍历到所述任务子树的叶子节点时,触发该叶子节点所指示的动作指令,将该动作指令发送给所述执行端。

本实施例提供的控制装置,应用于客户端,在客户端中保存有预先的动作规则。在接收模块接收到任务指令后,查询模块根据该任务指令,查询动作规则,得到需执行的动作指令集合以及动作指令集合中动作指令的触发逻辑。之后,发送模块按照该动作指令集合中动作指令的触发逻辑,依次触发相应的动作指令,将该动作指令发送给执行端。执行端在接收到该动作指令后,触发相应的控制程序以控制设备执行该动作,完成任务指令所指示的任务。本实施例提供的控制装置,将动作规则从程序中独立出来,单独设计动作规则的动作组成及逻辑,使得控制程序的结构更清晰,更易于组织大规模的复杂任务,还使得本领域技术人员易于对设备的任务规划进行扩展和维护。

装置实施例二:

参见图7,该图为本发明提供的控制装置实施例二的结构示意图。相较于图6,本实施例提供了一种更加具体的控制装置。

为了使客户端和执行端在任务执行过程中能够实时通信,以获得机器人的任务执行情况,便于对突发情况采取紧急措施,防止机器人损害或人员受伤,本实施例采用ROS中的Actionlib机制沟通上层行为树软件与底层驱动程序。此时,客户端可以时刻观察执行端中硬件的执行效果(例如,在移动手臂时手臂的位姿等)。这样,客户端在监测到动作执行错误或突发情况时,可以采取紧急措施,如任务抢断等。

因此,在装置实施例一的基础上,本实施例提供的控制装置,还包括:获取模块400;

所述获取模块400,用于获取所述执行端的运行状态;

所述查询模块200,还用于根据所述运行状态,查询所述动作规则,得到需发送的第二动作指令集合以及所述第二动作指令集合中动作指令的触发逻辑,所述第二动作指令集合至少包括一个动作指令;

所述发送模块300,还用于根据所述第二动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端,以使所述执行端根据该动作指令控制所述设备执行相应的动作。

基于上述实施例提供的控制方法及装置,本发明实施例还提供了一种控制系统。

系统实施例:

参见图8,该图为本发明提供的控制系统实施例的结构示意图。

本实施例提供的控制系统,包括:客户端10和执行端20;

所述客户端10中保存有预先得到的动作规则,所述动作规则,包括:至少两个动作指令和动作指令的触发逻辑;

在一个例子中,所述动作规则可以是行为树,具体参照上面关于行为树的说明,这里不再赘述。

所述客户端10,用于接收任务指令,并根据所述任务指令,查询所述动作规则,得到需发送的第一动作指令集合以及所述第一动作指令集合中动作指令的触发逻辑,所述第一动作指令集合至少包括一个动作指令;

具体的,当客户端10接收到任务指令后,根据任务指令的标识从行为树的根节点开始,遍历行为树,找出行为树中与该任务指令相关的动作指令和各指令的触发逻辑。

所述客户端10,还用于根据所述第一动作指令集合中动作指令的触发逻辑,依次将相应的动作指令发送给执行端20;

例如在行为树中,从根节点开始遍历,根据逻辑控制节点和条件节点的控制逻辑,顺序触发相应的叶子节点。依次将相应的动作指令发送给执行端20。

所述执行端20,用于接收所述客户端10发送的动作指令,并根据该动作指令控制设备执行相应的动作。

这里需要说明的是,执行端为机器人中的底层驱动程序。当执行端接收到动作指令后,会根据该动作指令,运行其上预先编辑好的控制程序,以控制机器人完成相应的动作。

还需要说明的是,由于在现有的机器人操作系统ROS中已经对目前比较成熟的机器人视觉,语音,运动规划等算法进行了融合,本实施例中提供的控制方法采用ROS作为整体程序系统的架构,可以缩短开发周期,节约编程时间。

此外,本实施例提供的控制系统,可在行为树的叶子节点上直接使用ROS提供的功能函数进行控制程序的编写。此时,执行端20为机器人上的动作设备。当遍历至叶子节点时,直接运行该叶子节点上编写的程序来控制机器人上设备的动作。但是,在行为节点中使用ROS提供的功能函数进行程序的编写,会使得行为树结构与ROS耦合太紧,增加了后期对程序扩展和维护的难度。

所以,为解决上述问题,本实施例提供的控制系统在行为树的行为节点中通过实例化一个客户端,然后在底层控制程序中单独实例化对应此行为节点的服务节点,在该服务节点中编写机器人所需执行的任务。此时,执行端20为机器人的底层驱动程序。这样,客户端中保存的行为树,其叶子节点为动作指令。当遍历至叶子节点时,触发相应的动作指令,将该动作指令发送给对应的服务节点。在具体实施时,使用ROS中的Service机制或Actionlib(ROS中的基于action的控制方式)机制沟通上层行为树软件与底层驱动程序。在行为树中可以实例化多个客户端,比如头部的,手臂的,移动底盘的等,然后与硬件设备上实例化的服务器进行通信。这样,会使控制程序的结构组织清晰,易于本领域技术人员进行程序的扩展和维护。

在另一个例子中,所述执行端20,包括:接收单元、处理单元和至少一个动作控制单元;

所述接收单元,用于接收所述客户端10发送的动作指令;

所述处理单元,用于根据接收到的动作指令,触发相应的动作控制单元;

所述动作控制单元,用于控制所述设备执行相应的动作。

可以理解的是,具体实施时,可在执行端采用模块化的编程方法,将各动作的程序分为不同的程序模块,即动作控制单元。这样,不同节约编程时间,简化控制程序,易于扩展和维护。

本实施例提供的控制系统,在客户端中保存有预先的动作规则。当客户端接收到任务指令时,根据该任务指令,查询动作规则,得到需执行的动作指令集合以及动作指令集合中动作指令的触发逻辑。之后,客户端按照该动作指令集合中动作指令的触发逻辑,依次触发相应的动作指令,将该动作指令发送给执行端。执行端在接收到该动作指令后,触发相应的控制程序以控制设备执行该动作,完成任务指令所指示的任务。本实施例提供的控制系统,将动作规则从程序中独立出来,单独设计动作规则的动作组成及逻辑,使得控制程序的结构更清晰,更易于组织大规模的复杂任务,还使得本领域技术人员易于对设备的任务规划进行扩展和维护。

最后,需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

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