【发明内容】
为了解决现有技术中的上述问题,本发明提出了一种家用智能陪伴机器人,所述家用智能陪伴机器人包含:电源、控制器、存储装置、输入输出装置、移动装置;
控制器用于进行任务控制和智能决策;
存储装置用于存储数据;
输入输出装置用于进行信息接收和发送,包括显示器、扬声器、报警器等;
移动装置用于支持机器人的移动和行走。
进一步的,所述电源用于为控制器、存储装置、输入输出装置、移动装置提供能量。
进一步的,控制器用于获取任务,进行任务解析后形成相互关联的子任务及其对应的子任务图;基于任务队列作任务的调度执行;基于快速查找表和子任务队列作子任务执行控制,并基于执行结果做智能决策和执行结果输出。
进一步的,所述执行结果输出为将执行结果通过输入输出装置输出。
进一步的,通过输入输出装置获取任务。
一种家用智能陪伴机器人执行控制方法,其特征在于,所述进行任务解析后形成相互关联的子任务及其对应的子任务图,具体包括如下步骤:
步骤SA1:基于任务类型做任务的初步划分得到第一子任务图;
步骤SA2:基于当前节点做子任务图的遍历;其中:开始子任务为没有先序子任务的子任务;设置当前节点为开始子任务所对应节点;
步骤SA3:将当前节点对应的子任务按照粒度统一和/或粒度混合的方式划分为一个或多个待选子任务图;
步骤SA4:从多个所述多个待选子任务图中选择一个作为目标子任务图,并将所述目标子任务图替换当前节点对应的子任务放入第一子任务图中,并基于当前节点对应子任务的序关系作节点连接以得到更新后的第一子任务图;
步骤SA5:设置当前节点为遍历顺序中的下一节点,并进入步骤SA2;如果所有节点均遍历完毕则进入步骤SA6;
步骤SA6:对子任务图进行合并调整。
进一步的,所述步骤SA6具体为:在子任务图中选择种子子任务,判断如果将种子子任务与其他子任务合并后,子任务图对应的开销值是否降低,如果是,则将所述种子子任务和其他子任务合并后形成更新后的子任务图。
进一步的,控制器中设置任务队列和子任务队列,所述任务队列中任务按照优先级排序;任务队列中保存任务标识及其对应的快速查找表标识;所述任务队列中包含多个分区,任务队列中的任务按照优先级分区存储;每个分区中包含的子任务的优先级和所述分区对应的优先级区间相对应。
进一步的,通过输入输出装置获取任务。
进一步的,通过不同粒度作任务和/或子任务划分,任务在进行动态划分时存在一种或者多种划分方式。
本发明的有益效果包括:(1)通过任务拆分的任务控制方式,使得在考虑任务类型和任务结构的基础上,将任务划分、快速查找表及其提前载入相结合,最终提高了拆分后子任务的执行速度并最终提高用户体验;基于任务队列,和子任务队列结合任务的完成情况结合软硬件资源做数据的提前加载,减少的响应时间。(2)提出基于现场和环境的动态任务混合粒度划分方式,能够提高划分后任务处理效率;(3)通过获取相对最优图集合,然后采用基于计算数据量的权重函数的开销估算方法,能够快速获取相对精确的开销值并获取局部最优解;(4)在基于优先级进行任务排序的基础上,提出通过区间和区间竞争的任务调度方式,通过上下界夹逼一个次优的调度方式,放弃次次最优解但是大大提高任务执行公平性。
【具体实施方式】
下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
家用智能陪伴机器人的任务相对复杂,例如:一个任务中可能包括语音识别、场景识别、智能决策、输入输出设备控制等多类型任务,比起工业机器人或者单一功能的家用机器人来说如何进行任务控制和决策复杂很多;本发明通过任务拆分的任务控制方式,使得在考虑任务类型和任务结构的基础上,提高拆分后子任务的执行速度并最终提高用户体验;
所述家用智能陪伴机器人包括电源、控制器、存储装置、输入输出装置、移动装置;
控制器用于进行任务控制和智能决策;
存储装置用于存储数据;
输入输出装置用于进行信息接收和发送,包括显示器、扬声器、报警器等;
移动装置用于支持机器人的行走;
控制器获取任务,进行任务解析后形成相互关联的子任务及其对应的子任务图;基于任务队列作任务的调度执行;并基于快速查找表和子任务队列作子任务执行控制,并基于执行结果做智能决策和执行结果输出;例如:通过输入输出装置获取任务;
控制器中设置任务队列和子任务队列,所述任务队列中任务按照优先级排序;任务队列中保存任务标识及其对应的快速查找表标识;所述任务队列中包含多个分区,任务队列中的任务按照优先级分区存储;每个分区中包含的子任务的优先级和所述分区对应的优先级区间相对应;
现有技术中的任务划分实质上都是静态的,任务的粒度和任务反应时间等执行特性在进行划分时不做区分,但是家用机器人其任务非常复杂,如果仅仅执行静态划分则不能根据软硬件环境以及用户特性的变化做适应性的划分,从而降低了硬件使用效率,本发明提出基于现场和环境的动态任务解析划分方式,能够提高划分后任务处理效率;
通过不同粒度的子任务划分,任务在进行动态划分时存在一种或者多种划分方式;也就是说,当任务被分解为多个不同的子务图时,所述多个子任务图之间是不相同的,随着环境的不同任务可以解析成所述多个不同的子任务图中的任一个;
子任务图中包含一个或多个子任务以及子任务之间的执行先后关系,两个存在先后执行顺序的子任务之前存在相连接的边;但是图的遍历相对慢,且图的存储空间较大,严重影响任务的执行速度;本发明提出快速查找表,能够快速进行子任务序关系查找,根据任务的执行进度将快速查找表载入高速存储空间,减少了控制开销;每个子任务对应快速查找表中的一个条目,条目中存储所有和子任务有连接关系的上一个子任务,也就是直接前序子任务;在任务执行过程中,条目中所有子任务均被执行完毕后,条目对应的子任务是可以被执行的,因此所述任务被触发并进入执行状态;
所述根据任务的执行进度将快速查找表载入高速存储空间,具体为:当任务对应的子任务图中的第一个子任务被放入任务队列中时,将所述任务对应的快速查找表载入;具体的:被放入高速存储空间中的程序空间中;
优选的:所述执行进度为已载入任务队列中子任务的比例,当所述比例超过比例阈值时,将所述快速查找表载入高速存储空间;所述比例阈值和高速存储空间的可用空间大小相关;一般情况来说,任务被调度后,所述任务的所有子任务均被放入子任务队列中,但是,子任务队列的长度有限,并非所有子任务都能够被一次放入子任务队列中个,因此,存在部分子任务并未被载入的情况,而且这种情况时有发生;
优选的:所述执行进度为子任务的完成比例;可设置开始子任务完成,则比例达成;
选的:所述高速存储空间为cache、register;
所述进行任务解析后形成相互关联的子任务及其对应的子任务图,具体包括如下步骤:
步骤SA1:基于任务类型做任务的初步划分得到第一子任务图;具体的:基于任务类型获取对应的划分模板,基于所述划分模板作任务的初步划分得到第一子任务图;第一子任务图中的子任务之间相对来说松散耦合;由于机器人功能有限,因此其接受的任务类型也是相对有限的,此时采用这种直接对应获取的方式是最快速的;配合后序详细划分,能够同时保障划分的速度和质量;
优选的:当没有对应的划分模板时,直接执行任务而不做划分;
步骤SA2:基于当前节点做子任务图的遍历;其中:开始子任务为没有先序子任务的子任务;设置当前节点为开始子任务所对应节点;
步骤SA3:将当前节点对应的子任务按照粒度统一和/或粒度混合的方式划分为一个或多个待选子任务图;
所述将当前节点对应的子任务按照粒度统一方式划分为一个或多个待选子任务图,具体为:获取当前的优选粒度,以优选粒度为中心的波动范围内的粒度划分当前节点对应的子任务,以形成一个或者多个待选子任务图;如果待选子任务图的数量小于目标数量,则增大波动范围后继续划分当前节点对应的子任务;在不满足目标数量时不断增加波动范围直到达到目标数量或波动范围过大;划分的粒度为程序单元、功能单元、任务执行复杂度和/或任务数据量等;在以优选粒度为中心划分时,划分的范围可以是优选粒度,也可以是波动范围内的其他粒度;划分可以是在划分范围内的任意划分;
其中,优选粒度为过去第一时间范围内单位执行速度最快的子任务粒度;
优选的:单位执行速度=单一粒度子任务的执行时间加和/子任务个数*标准化的子任务粒度值;
步骤SA4:从多个所述多个待选子任务图中选择一个作为目标子任务图,并将所述目标子任务图替换当前节点对应的子任务放入第一子任务图中,并基于当前节点对应子任务的序关系作节点连接以得到更新后的第一子任务图;虽然随机划分使得划分效率提高,但是仅仅是得到一个相对最优的图集合,通过该步骤可以相对小的开销得到一个局部最优解;
所述从多个所述多个待选子任务图中选择一个作为目标子任务图,具体为:基于下式(1)计算待选子任务图开销,选择其中开销值Cost最小的待选子任务图作为目标子任务图;
Cost=∑i(f1(DSi)×TEi+f2(DSi)×∑jTCi,j) 式(1);
其中:TEi为第i个子任务的执行时间,TCi,j为第i和第j个子任务之间的通信开销;Cost为子任务图的计算开销值;DSi是第i个子任务的计算数据量;f1(DSi)是时间权重函数;f2(DSi)是通信开销权重函数;如果第i和第j个子任务之间不存在序关系,则其通信开销为零,因为其数据量为0;
优选的:f1()=f2();当可以计算机的硬件设置属性来调整这两个函数;实际上如果采用完全的动态划分,那么会大大增加步骤SA3的计算开销,因为每次下一划分根据粒度的波动会产生集合量的计算和划分方式,而且现有技术中并未将数据通信量科学的引入子任务划分中,
本发明通过获取相对最优图集合,然后采用基于计算数据量的权重函数的开销估算方法,能够快速获取相对精确的开销值并获取局部最优解;
步骤SA5:设置当前节点为遍历顺序中的下一节点,并进入步骤SA2;如果所有节点均遍历完毕则进入步骤SA6;
步骤SA6:对子任务图进行合并调整;具体的:在子任务图中选择种子子任务,判断如果将种子子任务与其他子任务合并后,子任务图对应的开销值是否降低,如果是,则将所述种子子任务和其他子任务合并后形成更新后的子任务图;否则,不进行合并;
在将种子子任务与其他子任务合并时,设置小范围的其他子任务为,所述其他子任务为和种子节点存在相同上一节点和/或下一节点的子任务;大范围的其他子任务为,所有和种子节点之间存在直接关联关系的节点;可以根据子任务图的大小等因素来调整合并范围;
现有技术中的任务调度往往是单纯的依靠优先级来完成的,这种独立的基于优先级的控制方式使得其内在的计算规律对一类的任务是相当不公平的,本发明在基于优先级进行任务排序的基础上,提出通过区间和区间竞争的任务调度方式,通过上下界夹逼一个次优的调度方式,放弃次次最优解但是大大提高任务执行公平性,同时可以将紧急任务的执行纳入任务常规调度中,减少了不必要的仲裁,适合功能复杂的智能陪伴型机器人;
所述基于任务队列作任务的调度执行,具体为:
步骤SC1:计算每个任务的优先级;具体的:根据任务类型和任务创建时间计算任务的优先级;
可替换的:基于任务创建时间计算任务优先级;
步骤SC2:基于优先级将任务放入相应的任务队列区间中;具体的;每个分区中包含的子任务的优先级和所述分区对应的优先级区间相对应;基于对应关系放入任务即可;
步骤SC3:根据任务的优先级确定竞争优先级;具体的:周期性的基于任务优先级、任务紧急程度、任务完成情况来计算任务竞争优先级;通过竞争优先级可以直接紧急任务的优先级直接提高,而不需采用抢断方式;这里的周期是时隙的倍数;周期不需要过于频繁避免无用计算;
优选的:所述周期为5个调度时隙;
步骤SC4:选择竞争优先级最高的第一数量的任务放入上一个分区尾部;
优选的:所述第一数量为1个;
步骤SC5:在调度时隙到达时,选择竞争优先级最高的任务进行调度;
其中:第一分区为优先级区间最大的一个分区;
如附图2所示,优选的:所述分区的数量为3个;这里第一分区的长度短于第二分区,第二分区短于第三分区长度;在设置分区后,经过竞争进入下一分区的子任务不会因为灵活的竞争优先级而被反复震荡不被执行;
优选的:在任务被调度后,将任务对应的所有子任务按照序关系的顺序放入子任务队列尾部中;
所述基于快速查找表和子任务队列作子任务执行控制,具体为:在子任务队列的中子任务的原有顺序的基础上,进行计算调整优先级,并按照调整优先级对子任务队列中子任务的顺序进行调整;在进行子任务执行控制时,按照子任务顺序调度;当子任务完成后,修改快速查找表,将所有和完成子任务相关的表项均修改为已完成;根据快速提交表中条目的完成情况作子任务的提前加载;当一个条目中所有表项均为已完成时,该子任务将被触发执行;本发明的控制方式能够在保障基本优先顺序的基础上考虑到任务实际的序列关系,并依次进行子任务的提前加载,从而提高任务的完成顺序;例如:当条目中先序子任务的完成情况为75%时,提前将该条目对应的子任务数据提前加载到程序和数据空间中;
调整优先级=子任务顺序*所述子任务的后序任务数量;
所述子任务的后序任务数量可以通过快速查找表中相应条目中表项的个数来确定;优选的:所述后序子任务为直接后序任务;
优选的:可变的方式是对后续任务数量进行权重调节,减少数量对调整优先级带来的过调节,导致小任务或粗粒度任务的过延迟执行;
上述家用智能陪伴机器人的执行控制方法和控制器可实施在多种类型的智能家用机器人中,仅涉及任务的划分等简单任务处理方式,计算复杂度不高,无需进行复杂的人工智能控制等,避免了无用的计算负担。所述智能家用陪伴机器人的控制装置亦可以由硬件器件搭建成的,例如,可以由一个或两个以上的芯片搭建而成,各个芯片可以互相协调工作,以完成上述各个实施例所阐述的机器人的执行控制。
若计算节点为多个,各个计算节点可以相互协商通信,可以基于本发明的子任务图分散由多个不同的计算节点执行相应的子任务。其中,作业任务的细分与协商处理为本领域技术人员所熟知,这里不再赘述。
该智能陪伴机器人包括执行存储在存储装置中的指令的至少一个处理器。这些指令可以是例如用于实现被描述为由上述一个或多个模块执行的功能的指令或用于实现上述方法中的一个或多个步骤的指令。处理器可以通过系统总线访问存储器。除了存储可执行指令,存储器还可存储训练数据等。处理器可以为中央处理器(CPU)或图形处理器GPU等各种具有计算能力的器件。该CPU可以为X86或ARM处理器;GPU可单独地直接集成到主板上,或者内置于主板的北桥芯片中,也可以内置于中央处理器(CPU)上。
智能陪伴机器人还包括可由处理器通过系统总线访问的数据存储。数据存储可包括可执行指令、多图像训练数据等。电子设备还包括允许外部设备与电子设备进行通信的输入接口。例如,输入接口可被用于从外部计算机设备、从用户等处接收指令。电子设备也可包括使电子设备和一个或多个外部设备相接口的输出接口。例如,电子设备可以通过输出接口显示图像等。考虑了通过输入接口和输出接口1012与电子设备通信的外部设备可被包括在提供实质上任何类型的用户可与之交互的用户界面的环境中。用户界面类型的示例包括图形用户界面、自然用户界面等。例如,图形用户界面可接受来自用户采用诸如键盘、鼠标、遥控器等之类的(诸)输入设备的输入,以及在诸如显示器之类的输出设备上提供输出。此外,自然语言界面可使得用户能够以无需受到诸如键盘、鼠标、遥控器等之类的输入设备强加的约束的方式来与电子设备交互。相反,自然用户界面可依赖于语音识别、触摸和指示笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语音、视觉、触摸、手势、以及机器智能等。
可以利用被设计用于进行在此所述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行所述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的一个或多个微处理器或任何其他这样的配置。集合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
所述的功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为一个或多个指令存储在切实的计算机可读介质上。计算机可读介质包括计算机可读存储介质。计算机可读存储介质可以是能被计算机访问的任何可用存储介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或能被用来承载或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。另外,所传播的信号不被包括在计算机可读存储介质的范围内。计算机可读介质还包括通信介质,其包括促成计算机程序从一地向另一地转移的任何介质。连接例如可以是通信介质。例如,如果软件使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外线、无线电、以及微波之类的无线技术来从web网站、服务器、或其它远程源传输,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外线、无线电、以及微波之类的无线技术被包括在通信介质的定义中。上述的组合应当也被包括在计算机可读介质的范围内。替换地或另选地,此处描述的功能可以至少部分由一个或多个硬件逻辑组件来执行。例如,可使用的硬件逻辑组件的说明性类型包括现场可编程门阵列(FPGA)、程序专用的集成电路(ASIC)、程序专用的标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
因此,计算机程序产品可以进行在此给出的操作。例如,这样的计算机程序产品可以是具有有形存储(和/或编码)在其上的指令的计算机可读的有形介质,该指令可由一个或多个处理器执行以进行在此所述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此所述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此所述的方法的手段的传送。或者,在此所述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此所述的方法和技术提供给设备的任何其他适当的技术。
以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。