改进的服务机器人任务规划方法与流程

文档序号:12272414阅读:248来源:国知局
改进的服务机器人任务规划方法与流程

本发明涉及机器人领域,尤其是一种机器人的任务规划方法。



背景技术:

随着机器人技术的发展,服务机器人已经越来越多地走入人们的生活,在日常生活服务,特别是助老助残领域发挥着重要的作用。传统模式下,机器人直接占有传感器设备(例如激光、视觉、温度等)的感知和计算,因此会出现感知错误或者感知死区等问题,具有很大的局限性。智能空间技术的发展改变了传统的机器人领域对信息的表示和信息获取的模式。基于成本相对较低的智能空间技术为服务机器人环境信息的获取提供了便捷。而任务规划在一定程度上也标志着机器人的智能水平,是进行规划与决策的关键。服务机器人所处的环境大多具有很强的复杂性和动态性,如何让机器人在动态环境下进行自主的任务规划和执行是机器人任务规划领域研究的热点和难点。在复杂的动态环境下,要想让服务机器人模仿人的思维进行自主的任务规划,并且能够根据场景的变化进行在线的任务调整,机器人对环境信息的感知和处理能力是实现上述目的的基础。

作为智能领域的经典方法--分层任务网络规划(HTN),以其更类似人类思维的特点,在机器人的任务规划领域有很好的适用性,然而虽然HTN方法可实现对机器人任务的具体描述,但是现今存在的很多智能规划器都是在条件信息充足的前提下设计的,如果环境信息不充足,会对规划结果产生影响甚至不会产生规划结果。JSHOP2规划器是一个基于分层任务网络设计的智能规划系统。该规划器可以实现对机器人任务的HTN描述,并且实现根据用户的请求和环境信息生成机器人可执行的原子动作列表,即完成机器人任务的规划。但是在动态的复杂的家庭环境下,规划系统在对任务规划好以后,机器人在执行动作列表的过程中很有可能会出现环境信息改变或者请求任务改变的情况。当环境信息改变时,有可能出现机器人动作执行错误:而当请求任务改变时,如果机器人继续执行改变前的任务,则有可能出现没有及时调整任务的执行顺序或者没有及时响应紧急任务等问题,从而降低了用户的满意度。

现有的任务规划系统如图1所示。



技术实现要素:

本发明的目的在于克服现有技术中存在的不足,提供一种改进的服务机器人任务规划方法,允许规划系统实时响应环境信息和用户请求信息的变化,实现必要情况下的重规划,提高了规划系统的任务在线再规划能力。本发明采用的技术方案是:

一种改进的服务机器人任务规划方法,包括:加入从机器人执行机构到规划器的反馈结构,实现任务执行错误时的重规划;加入多任务调度算法实现多任务的实时调度;

从而允许规划系统实时响应环境信息和用户请求信息的变化;当环境信息发生变化时采用任务执行错误时的反馈机制,重新获取环境信息,对动作列表中错误动作节点的上一个动作节点进行重新规划;当用户请求发生变化的时候,给任务制定优先级并设计多任务调度算法实现对任务的智能调度。

进一步地,

当环境信息改变引起机器人执行到动作列表中的一个动作节点发生错误时,机器人执行机构向规划器发出动作执行错误的信号,并记录该任务的执行信息,然后将执行错误的动作反馈给规划器,将已执行的动作当前改变的环境信息反馈给智能空间,使智能空间及时更新当前环境信息;随后规划器将根据返回的动作信息和智能空间提供的当前环境信息执行在线再规划过程;即将该动作节点的上一个动作节点,返回给规划器,同时获取智能空间中的当前环境信息,重新规划发生错误动作节点上一个动作节点的任务;规划好以后将新的动作列表发送给机器人执行机构执行。

进一步地,

当用户请求即任务改变时,需要设定任务优先级;

任务优先级的设定方法:先根据任务紧急程度对任务进行分类,然后结合任务的执行时间给任务分配优先级;

在同一优先级类别里任务的优先级大小由任务的执行时间决定,执行时间越短,优先级越高;

每个任务具有一个优先级等级P,P=(i+j-1)*(i+j-2)/2+i,P值越小,任务的优先级越高;

i表示任务的紧急程度对应的类别参数,i越小任务紧急程度越大;j为任务执行时间/权重系数;

所述多任务调度算法包括以下步骤:

Step1:当有新任务请求时,根据公式P=(i+j-1)*(i+j-2)/2+i程序根据优先级P的大小将该任务添加到任务列表的适当位置;

Step2:对新任务进行规划,生成相应的动作列表;

Step3:检测此时机器人是否正在执行某任务,如果没有正在执行某任务,转到Step4,如果正在执行某任务,转到Step5;

Step4:选取任务列表中优先级最高的任务的动作列表执行,执行结束后,转到Step6;

Step5:根据公式P=(i+j-1)*(i+j-2)/2+i判断正在执行的任务是否是当前任务列表中优先级最高那个,如果是,则继续执行,如果不是,则保存正在执行的任务的执行信息,并暂停该任务的执行,转而执行任务列表中优先级最高的任务,任务执行完以后转到Step6;

Step6:删除任务列表和动作列表中的已经执行完的任务及其动作列表;

Step7:判断任务列表中是否还有任务,如果是,返回Step4,如果否,则算法结束。

更进一步地,权重系数取10000。

更进一步地,在同一优先级类别中,如果存在具有相同执行时间的多个任务,对这些任务执行的先后顺序的确定将由规划器决定。

本发明的优点在于:

1)能够实现任务执行错误时的重规划;当环境信息发生变化时可以采用任务执行错误时的反馈机制,重新获取环境信息,对错误动作节点的上一个动作节点进行重新规划;

2)多任务调度算法实现多任务的实时调度,从而允许规划系统实时响应环境信息和用户请求信息的变化,实现必要情况下的重规划,提高了规划系统的任务在线再规划能力。

3)当用户请求发生变化的时候,给任务制定优先级并设计多任务调度算法实现对任务的智能调度,提高用户的满意度。

附图说明

图1为现有机器人规划系统的框图。

图2为本发明的在线再规划系统总体框图。

图3为本发明的任务动作节点图。

图4为本发明的基于任务紧急程度/任务执行时间的一种优先级方案表。

图5为本发明的多任务调度算法流程图。

具体实施方式

下面结合具体附图和实施例对本发明作进一步说明。

为了应对背景技术中所提到的场景信息的变化,提高机器人主动性和响应能力,在系统中加入从机器人执行机构到规划器的反馈结构,实现任务执行错误时的重规划;加入多任务调度算法实现多任务的实时调度,如图2所示,从而允许规划系统实时响应环境信息和用户请求信息的变化,实现必要情况下的重规划,提高了规划系统的任务在线再规划能力。当环境信息发生变化时采用任务执行错误时的反馈机制,重新获取环境信息,对动作列表中错误动作节点的上一个动作节点进行重新规划;当用户请求发生变化的时候,给任务制定优先级并设计多任务调度算法实现对任务的智能调度,提高用户的满意度。

1)环境改变时的规划策略;

当家庭环境下的某些信息,例如位置信息、状态信息发生变化的时候,有可能会对机器人动作的执行产生影响。以用户请求机器人送咖啡的任务为例。规划器JSHOP2接收到任务请求以后,需要先对任务进行规划,然后将规划生成的原子动作列表传递给机器人执行机构去执行。如果在规划的时候智能空间提示用户在位置一,那么规划生成的动作列表则显示执行将咖啡杯递给用户的动作时要移动到位置一,即(!move pos1),然而有可能出现这样一种情况,当任务规划好,机器人在执行动作列表的过程中用户的位置发生了变化,当机器人执行到将咖啡递给用户的动作的时候,用户在位置二。此时机器人如果移动到位置一就会发现找不到用户,出现了执行错误。这种情况下就需要对错误信息进行反馈并且对任务进行重新规划。因此在规划系统中加入了从机器人执行机构到规划器的反馈结构,实现任务规划和任务执行协作进行,及时地反馈任务执行过程中出现的问题。规划器对任务规划好W后,将动作列表传递给机器人执行机构,让机器人执行机构根据规划的动作列表中的动作节点执行。一旦在执行过程中出现问题,比如机器人在执行(!move to person1 bedroom)动作以后,在bedroom房间内没有找到用户,从而出现了执行错误,此时机器人系统会将执行出现问题的动作(!move to person1 bedroom)反馈给规划器,告诉规划器是在执行此动作时发生执行错误,需要规划器进行重新规划。在进行重新规划的时候,虽然出现错误的是用户请求的送咖啡任务,但是没有必要结合新的环境信息将整个送咖啡任务重新规划,因为之前执行的时候机器人已经将很多动作都执行过了。也就是当机器人执行移动到(!move to person1 bedroom)动作节点的时候,机器人已经拿好杯子并且倒好咖啡了,无需再重新规划并执行。因此将提出执行错误的动作节点的上一个动作节点返回并重新规划的方法。

在执行送咖啡任务时,当执行到图3中标注的动作节点(!move to person1 bedroom)发生错误时,机器人执行机构会向规划器发出动作执行错误的信号,并记录该任务的执行信息,然后将执行错误的动作反馈给规划器,将已执行的动作当前改变的环境信息反馈给智能空间,使智能空间及时更新当前环境信息;随后规划器JSHOP2将根据返回的动作信息和智能空间提供的当前的环境信息执行在线再规划过程;即将该动作节点的上一个动作节点,即图3中标注的动作节点hand to(person1 bedroom)返回给规划器JSHOP2,同时获取智能空间中的当前环境信息,重新规划发生错误动作节点上一个动作节点的任务;规划好以后将新的动作列表发送给机器人执行机构执行。如果再次出现执行错误,那么系统将会返回该动作节点hand to(person1 bedroom)的上一个节点,即send_coffee(personal)动作节点重新规划任务。

将执行错误的动作节点的上一个动作节点重新规划的方法的好处是能够简化重规划的任务,对之前已完成的动作的影响不大,使机器人能够接着已完成的动作继续执行,提高执行的效率。

2)任务改变时的规划策略;

由于家庭服务的特殊性,机器人在进行家庭服务的时候很有可能会遇到服务任务改变的情况,例如机器人在执行某任务的时候又接收到其他任务请求。而且当服务机器人应用于助老助残领域中时,服务对象为老人和残障人士,该类人群经常会发生身体不适、摔倒、求助等异常突发事件,针对这种特殊的服务对象,在任务执行过程中,服务机器人还应该具有针对异常突发事件的快速响应和处理能力。因此机器人在进行任务规划和执行的时候,必须具有多任务优化的能力以及面对突发事件的应急响应能力。针对这种情况,提出基于任务优先级的服务任务调度算法,当有多任务请求时,及时响应请求的变化,根据任务的优先级调整规划和执行的顺序。

任务优先级的设定方法;

先根据任务紧急程度对任务进行分类,然后结合任务的执行时间给任务分配优先级的方法;

由于家庭环境下机器人可执行的服务任务数量是有限的,因此列举了家庭环境下机器人可W执行的最具有代表性的一些任务,包括倒水、开窗帘、开电视、打扫房间以及紧急任务摔倒、求救,并且综合考虑家庭环境下用户对机器人服务的需求程度、用户的等待时间和对服务的满意度等因素,结合服务任务的特点,将这些家庭任务分成3类:紧急任务,实时任务和日常任务。下表列出了对任务的分类情况、任务的平均执行时间和任务的优先级。

如上表所示,优先级最高的是紧急任务,包括摔倒、求救等任务。在家庭环境下,尤其是助老助残领域,一旦发生紧急情况,用户对这些任务的实时需求程度是最高的。其次,处于第二优先级的是实时任务,包括倒水、开窗帘、开电视等任务。用户对这些任务的实时需求程度没有紧急任务急,但是如果长时间的没有服务响应也会降低用户的满意度。优先级最低的是日常任务,送些日常设定的任务包括打扫房间等,该类任务的实时需求程度低,机器人可以在空闲时间完成任务。每个优先级类别里都有多个任务,那么在同一优先级类别里任务的优先级大小由任务的执行时间决定,执行时间越短,优先级越高。例如,在实时任务中,任务开电视的平均执行时间为2s,开窗帘为3s,倒水为70s,那么它们的优先级顺序为开电视任务的优先级最高,其次是开窗帘任务,最后是倒水任务。然而在同一优先级类中,如果存在具有相同执行时间的多个任务,对这些任务执行的先后顺序的确定将由规划器决定。

在某一时刻机器人接收到n个家庭服务任务t1,t2…..tn,每个任务用一个二元组(i,j)表示,其中紧急任务i值为1,实时任务i值为2,日常任务i值为3,j是该任务的执行时间/10000,其中10000为权重系数;原则:任务的紧急程度越大且执行时间越小,则任务的优先级越高;

对于任务的紧急程度与任务执行时间完全相同的任务,先被下达命令的任务具有更高的优先级;

图4是基于任务紧急程度/任务执行时间的一种优先级方案表,其中箭头方向表示了任务的优先级顺序,在这种优先级分派方法中,任务的紧急程度序列按照升序排列,即任务紧急程度越大,任务越靠前(体现在纵坐标越靠上);而任务的执行时间序列则采用降序排列,即任务时间越短越靠前,对于具有同样紧急程度的任务,任务执行时间越短,任务的优先级越高(体现在横坐标越靠左);对于具有同样执行时间的任务,任务紧急程度越大,任务的优先级越高。

在图4中所示的优先级列表中,每个任务具有一个优先级等级P;

i(i=1,2,3)与j(0<j≤1)分别表示任务的紧急程度(紧急任务i值为1,实时任务i值为2,日常任务i值为3)与执行时间/10000在各自序列中的位置,图3中每条斜线上标识的任务具有相同的优先级等级P,但是同样优先级等级的任务,其调度执行的顺序必须按照箭头所指的方向,表现为不同的优先级。任务的优先级P可以按照下面的公式:

P=(i+j-1)*(i+j-2)/2+i(P值越小,任务的优先级越高);

多任务调度算法设计,如图5所示:

制定好任务的优先级以后,希望规划系统能够根据任务优先级的大小来调整任务的执行顺序。比如机器人在执行倒水任务的时候突发紧急情况,那么规划系统应该立即对紧急任务进行规划,然后让机器人暂停执行倒水任务,并且保存倒水任务已执行的进度,转而执行紧急任务,当紧急任务执行完后,再去执行之前被暂停的倒水任务。为了实现此功能,本文对原规划系统进行了改进,设计了基于任务优先级的服务任务调度算法,该算法的具体描述如下所示:

Step1:当有新任务请求时,根据公式P=(i+j-1)*(i+j-2)/2+i(P值越小,任务的优先级越高)程序根据优先级P的大小将该任务添加到任务列表(tasklist)的适当位置;

Step2:对新任务进行规划,生成相应的动作列表;

Step3:检测此时机器人是否正在执行某任务,如果没有正在执行某任务,转到Step4,如果正在执行某任务,转到Step5;

Step4:选取任务列表中优先级最高的任务的动作列表执行,执行结束后,转到Step6;

Step5:根据公式P=(i+j-1)*(i+j-2)/2+i(P值越小,任务的优先级越高)判断正在执行的任务是否是当前任务列表中优先级最高那个,如果是,则继续执行,如果不是,则保存正在执行的任务的执行信息(包括状态信息,已经完成的动作信息和未完成的动作信息),并暂停该任务的执行,转而执行任务列表中优先级最高的任务,任务执行完以后转到Step6;

Step6:删除任务列表和动作列表中的已经执行完的任务及其动作列表;

Step7:判断任务列表中是否还有任务,如果是,返回Step4,如果否,则算法结束。

根据上述算法,即可实现多任务的调度,让系统根据任务优先级的大小调整任务的执行顺序,提高机器人服务的智能性和用户的满意度。

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