本發(fā)明涉及機(jī)器人領(lǐng)域,尤其是一種機(jī)器人的任務(wù)規(guī)劃方法。
背景技術(shù):
隨著機(jī)器人技術(shù)的發(fā)展,服務(wù)機(jī)器人已經(jīng)越來越多地走入人們的生活,在日常生活服務(wù),特別是助老助殘領(lǐng)域發(fā)揮著重要的作用。傳統(tǒng)模式下,機(jī)器人直接占有傳感器設(shè)備(例如激光、視覺、溫度等)的感知和計(jì)算,因此會出現(xiàn)感知錯(cuò)誤或者感知死區(qū)等問題,具有很大的局限性。智能空間技術(shù)的發(fā)展改變了傳統(tǒng)的機(jī)器人領(lǐng)域?qū)π畔⒌谋硎竞托畔@取的模式?;诔杀鞠鄬^低的智能空間技術(shù)為服務(wù)機(jī)器人環(huán)境信息的獲取提供了便捷。而任務(wù)規(guī)劃在一定程度上也標(biāo)志著機(jī)器人的智能水平,是進(jìn)行規(guī)劃與決策的關(guān)鍵。服務(wù)機(jī)器人所處的環(huán)境大多具有很強(qiáng)的復(fù)雜性和動態(tài)性,如何讓機(jī)器人在動態(tài)環(huán)境下進(jìn)行自主的任務(wù)規(guī)劃和執(zhí)行是機(jī)器人任務(wù)規(guī)劃領(lǐng)域研究的熱點(diǎn)和難點(diǎn)。在復(fù)雜的動態(tài)環(huán)境下,要想讓服務(wù)機(jī)器人模仿人的思維進(jìn)行自主的任務(wù)規(guī)劃,并且能夠根據(jù)場景的變化進(jìn)行在線的任務(wù)調(diào)整,機(jī)器人對環(huán)境信息的感知和處理能力是實(shí)現(xiàn)上述目的的基礎(chǔ)。
作為智能領(lǐng)域的經(jīng)典方法--分層任務(wù)網(wǎng)絡(luò)規(guī)劃(HTN),以其更類似人類思維的特點(diǎn),在機(jī)器人的任務(wù)規(guī)劃領(lǐng)域有很好的適用性,然而雖然HTN方法可實(shí)現(xiàn)對機(jī)器人任務(wù)的具體描述,但是現(xiàn)今存在的很多智能規(guī)劃器都是在條件信息充足的前提下設(shè)計(jì)的,如果環(huán)境信息不充足,會對規(guī)劃結(jié)果產(chǎn)生影響甚至不會產(chǎn)生規(guī)劃結(jié)果。JSHOP2規(guī)劃器是一個(gè)基于分層任務(wù)網(wǎng)絡(luò)設(shè)計(jì)的智能規(guī)劃系統(tǒng)。該規(guī)劃器可以實(shí)現(xiàn)對機(jī)器人任務(wù)的HTN描述,并且實(shí)現(xiàn)根據(jù)用戶的請求和環(huán)境信息生成機(jī)器人可執(zhí)行的原子動作列表,即完成機(jī)器人任務(wù)的規(guī)劃。但是在動態(tài)的復(fù)雜的家庭環(huán)境下,規(guī)劃系統(tǒng)在對任務(wù)規(guī)劃好以后,機(jī)器人在執(zhí)行動作列表的過程中很有可能會出現(xiàn)環(huán)境信息改變或者請求任務(wù)改變的情況。當(dāng)環(huán)境信息改變時(shí),有可能出現(xiàn)機(jī)器人動作執(zhí)行錯(cuò)誤:而當(dāng)請求任務(wù)改變時(shí),如果機(jī)器人繼續(xù)執(zhí)行改變前的任務(wù),則有可能出現(xiàn)沒有及時(shí)調(diào)整任務(wù)的執(zhí)行順序或者沒有及時(shí)響應(yīng)緊急任務(wù)等問題,從而降低了用戶的滿意度。
現(xiàn)有的任務(wù)規(guī)劃系統(tǒng)如圖1所示。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種改進(jìn)的服務(wù)機(jī)器人任務(wù)規(guī)劃方法,允許規(guī)劃系統(tǒng)實(shí)時(shí)響應(yīng)環(huán)境信息和用戶請求信息的變化,實(shí)現(xiàn)必要情況下的重規(guī)劃,提高了規(guī)劃系統(tǒng)的任務(wù)在線再規(guī)劃能力。本發(fā)明采用的技術(shù)方案是:
一種改進(jìn)的服務(wù)機(jī)器人任務(wù)規(guī)劃方法,包括:加入從機(jī)器人執(zhí)行機(jī)構(gòu)到規(guī)劃器的反饋結(jié)構(gòu),實(shí)現(xiàn)任務(wù)執(zhí)行錯(cuò)誤時(shí)的重規(guī)劃;加入多任務(wù)調(diào)度算法實(shí)現(xiàn)多任務(wù)的實(shí)時(shí)調(diào)度;
從而允許規(guī)劃系統(tǒng)實(shí)時(shí)響應(yīng)環(huán)境信息和用戶請求信息的變化;當(dāng)環(huán)境信息發(fā)生變化時(shí)采用任務(wù)執(zhí)行錯(cuò)誤時(shí)的反饋機(jī)制,重新獲取環(huán)境信息,對動作列表中錯(cuò)誤動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn)進(jìn)行重新規(guī)劃;當(dāng)用戶請求發(fā)生變化的時(shí)候,給任務(wù)制定優(yōu)先級并設(shè)計(jì)多任務(wù)調(diào)度算法實(shí)現(xiàn)對任務(wù)的智能調(diào)度。
進(jìn)一步地,
當(dāng)環(huán)境信息改變引起機(jī)器人執(zhí)行到動作列表中的一個(gè)動作節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),機(jī)器人執(zhí)行機(jī)構(gòu)向規(guī)劃器發(fā)出動作執(zhí)行錯(cuò)誤的信號,并記錄該任務(wù)的執(zhí)行信息,然后將執(zhí)行錯(cuò)誤的動作反饋給規(guī)劃器,將已執(zhí)行的動作當(dāng)前改變的環(huán)境信息反饋給智能空間,使智能空間及時(shí)更新當(dāng)前環(huán)境信息;隨后規(guī)劃器將根據(jù)返回的動作信息和智能空間提供的當(dāng)前環(huán)境信息執(zhí)行在線再規(guī)劃過程;即將該動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn),返回給規(guī)劃器,同時(shí)獲取智能空間中的當(dāng)前環(huán)境信息,重新規(guī)劃發(fā)生錯(cuò)誤動作節(jié)點(diǎn)上一個(gè)動作節(jié)點(diǎn)的任務(wù);規(guī)劃好以后將新的動作列表發(fā)送給機(jī)器人執(zhí)行機(jī)構(gòu)執(zhí)行。
進(jìn)一步地,
當(dāng)用戶請求即任務(wù)改變時(shí),需要設(shè)定任務(wù)優(yōu)先級;
任務(wù)優(yōu)先級的設(shè)定方法:先根據(jù)任務(wù)緊急程度對任務(wù)進(jìn)行分類,然后結(jié)合任務(wù)的執(zhí)行時(shí)間給任務(wù)分配優(yōu)先級;
在同一優(yōu)先級類別里任務(wù)的優(yōu)先級大小由任務(wù)的執(zhí)行時(shí)間決定,執(zhí)行時(shí)間越短,優(yōu)先級越高;
每個(gè)任務(wù)具有一個(gè)優(yōu)先級等級P,P=(i+j-1)*(i+j-2)/2+i,P值越小,任務(wù)的優(yōu)先級越高;
i表示任務(wù)的緊急程度對應(yīng)的類別參數(shù),i越小任務(wù)緊急程度越大;j為任務(wù)執(zhí)行時(shí)間/權(quán)重系數(shù);
所述多任務(wù)調(diào)度算法包括以下步驟:
Step1:當(dāng)有新任務(wù)請求時(shí),根據(jù)公式P=(i+j-1)*(i+j-2)/2+i程序根據(jù)優(yōu)先級P的大小將該任務(wù)添加到任務(wù)列表的適當(dāng)位置;
Step2:對新任務(wù)進(jìn)行規(guī)劃,生成相應(yīng)的動作列表;
Step3:檢測此時(shí)機(jī)器人是否正在執(zhí)行某任務(wù),如果沒有正在執(zhí)行某任務(wù),轉(zhuǎn)到Step4,如果正在執(zhí)行某任務(wù),轉(zhuǎn)到Step5;
Step4:選取任務(wù)列表中優(yōu)先級最高的任務(wù)的動作列表執(zhí)行,執(zhí)行結(jié)束后,轉(zhuǎn)到Step6;
Step5:根據(jù)公式P=(i+j-1)*(i+j-2)/2+i判斷正在執(zhí)行的任務(wù)是否是當(dāng)前任務(wù)列表中優(yōu)先級最高那個(gè),如果是,則繼續(xù)執(zhí)行,如果不是,則保存正在執(zhí)行的任務(wù)的執(zhí)行信息,并暫停該任務(wù)的執(zhí)行,轉(zhuǎn)而執(zhí)行任務(wù)列表中優(yōu)先級最高的任務(wù),任務(wù)執(zhí)行完以后轉(zhuǎn)到Step6;
Step6:刪除任務(wù)列表和動作列表中的已經(jīng)執(zhí)行完的任務(wù)及其動作列表;
Step7:判斷任務(wù)列表中是否還有任務(wù),如果是,返回Step4,如果否,則算法結(jié)束。
更進(jìn)一步地,權(quán)重系數(shù)取10000。
更進(jìn)一步地,在同一優(yōu)先級類別中,如果存在具有相同執(zhí)行時(shí)間的多個(gè)任務(wù),對這些任務(wù)執(zhí)行的先后順序的確定將由規(guī)劃器決定。
本發(fā)明的優(yōu)點(diǎn)在于:
1)能夠?qū)崿F(xiàn)任務(wù)執(zhí)行錯(cuò)誤時(shí)的重規(guī)劃;當(dāng)環(huán)境信息發(fā)生變化時(shí)可以采用任務(wù)執(zhí)行錯(cuò)誤時(shí)的反饋機(jī)制,重新獲取環(huán)境信息,對錯(cuò)誤動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn)進(jìn)行重新規(guī)劃;
2)多任務(wù)調(diào)度算法實(shí)現(xiàn)多任務(wù)的實(shí)時(shí)調(diào)度,從而允許規(guī)劃系統(tǒng)實(shí)時(shí)響應(yīng)環(huán)境信息和用戶請求信息的變化,實(shí)現(xiàn)必要情況下的重規(guī)劃,提高了規(guī)劃系統(tǒng)的任務(wù)在線再規(guī)劃能力。
3)當(dāng)用戶請求發(fā)生變化的時(shí)候,給任務(wù)制定優(yōu)先級并設(shè)計(jì)多任務(wù)調(diào)度算法實(shí)現(xiàn)對任務(wù)的智能調(diào)度,提高用戶的滿意度。
附圖說明
圖1為現(xiàn)有機(jī)器人規(guī)劃系統(tǒng)的框圖。
圖2為本發(fā)明的在線再規(guī)劃系統(tǒng)總體框圖。
圖3為本發(fā)明的任務(wù)動作節(jié)點(diǎn)圖。
圖4為本發(fā)明的基于任務(wù)緊急程度/任務(wù)執(zhí)行時(shí)間的一種優(yōu)先級方案表。
圖5為本發(fā)明的多任務(wù)調(diào)度算法流程圖。
具體實(shí)施方式
下面結(jié)合具體附圖和實(shí)施例對本發(fā)明作進(jìn)一步說明。
為了應(yīng)對背景技術(shù)中所提到的場景信息的變化,提高機(jī)器人主動性和響應(yīng)能力,在系統(tǒng)中加入從機(jī)器人執(zhí)行機(jī)構(gòu)到規(guī)劃器的反饋結(jié)構(gòu),實(shí)現(xiàn)任務(wù)執(zhí)行錯(cuò)誤時(shí)的重規(guī)劃;加入多任務(wù)調(diào)度算法實(shí)現(xiàn)多任務(wù)的實(shí)時(shí)調(diào)度,如圖2所示,從而允許規(guī)劃系統(tǒng)實(shí)時(shí)響應(yīng)環(huán)境信息和用戶請求信息的變化,實(shí)現(xiàn)必要情況下的重規(guī)劃,提高了規(guī)劃系統(tǒng)的任務(wù)在線再規(guī)劃能力。當(dāng)環(huán)境信息發(fā)生變化時(shí)采用任務(wù)執(zhí)行錯(cuò)誤時(shí)的反饋機(jī)制,重新獲取環(huán)境信息,對動作列表中錯(cuò)誤動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn)進(jìn)行重新規(guī)劃;當(dāng)用戶請求發(fā)生變化的時(shí)候,給任務(wù)制定優(yōu)先級并設(shè)計(jì)多任務(wù)調(diào)度算法實(shí)現(xiàn)對任務(wù)的智能調(diào)度,提高用戶的滿意度。
1)環(huán)境改變時(shí)的規(guī)劃策略;
當(dāng)家庭環(huán)境下的某些信息,例如位置信息、狀態(tài)信息發(fā)生變化的時(shí)候,有可能會對機(jī)器人動作的執(zhí)行產(chǎn)生影響。以用戶請求機(jī)器人送咖啡的任務(wù)為例。規(guī)劃器JSHOP2接收到任務(wù)請求以后,需要先對任務(wù)進(jìn)行規(guī)劃,然后將規(guī)劃生成的原子動作列表傳遞給機(jī)器人執(zhí)行機(jī)構(gòu)去執(zhí)行。如果在規(guī)劃的時(shí)候智能空間提示用戶在位置一,那么規(guī)劃生成的動作列表則顯示執(zhí)行將咖啡杯遞給用戶的動作時(shí)要移動到位置一,即(!move pos1),然而有可能出現(xiàn)這樣一種情況,當(dāng)任務(wù)規(guī)劃好,機(jī)器人在執(zhí)行動作列表的過程中用戶的位置發(fā)生了變化,當(dāng)機(jī)器人執(zhí)行到將咖啡遞給用戶的動作的時(shí)候,用戶在位置二。此時(shí)機(jī)器人如果移動到位置一就會發(fā)現(xiàn)找不到用戶,出現(xiàn)了執(zhí)行錯(cuò)誤。這種情況下就需要對錯(cuò)誤信息進(jìn)行反饋并且對任務(wù)進(jìn)行重新規(guī)劃。因此在規(guī)劃系統(tǒng)中加入了從機(jī)器人執(zhí)行機(jī)構(gòu)到規(guī)劃器的反饋結(jié)構(gòu),實(shí)現(xiàn)任務(wù)規(guī)劃和任務(wù)執(zhí)行協(xié)作進(jìn)行,及時(shí)地反饋任務(wù)執(zhí)行過程中出現(xiàn)的問題。規(guī)劃器對任務(wù)規(guī)劃好W后,將動作列表傳遞給機(jī)器人執(zhí)行機(jī)構(gòu),讓機(jī)器人執(zhí)行機(jī)構(gòu)根據(jù)規(guī)劃的動作列表中的動作節(jié)點(diǎn)執(zhí)行。一旦在執(zhí)行過程中出現(xiàn)問題,比如機(jī)器人在執(zhí)行(!move to person1 bedroom)動作以后,在bedroom房間內(nèi)沒有找到用戶,從而出現(xiàn)了執(zhí)行錯(cuò)誤,此時(shí)機(jī)器人系統(tǒng)會將執(zhí)行出現(xiàn)問題的動作(!move to person1 bedroom)反饋給規(guī)劃器,告訴規(guī)劃器是在執(zhí)行此動作時(shí)發(fā)生執(zhí)行錯(cuò)誤,需要規(guī)劃器進(jìn)行重新規(guī)劃。在進(jìn)行重新規(guī)劃的時(shí)候,雖然出現(xiàn)錯(cuò)誤的是用戶請求的送咖啡任務(wù),但是沒有必要結(jié)合新的環(huán)境信息將整個(gè)送咖啡任務(wù)重新規(guī)劃,因?yàn)橹皥?zhí)行的時(shí)候機(jī)器人已經(jīng)將很多動作都執(zhí)行過了。也就是當(dāng)機(jī)器人執(zhí)行移動到(!move to person1 bedroom)動作節(jié)點(diǎn)的時(shí)候,機(jī)器人已經(jīng)拿好杯子并且倒好咖啡了,無需再重新規(guī)劃并執(zhí)行。因此將提出執(zhí)行錯(cuò)誤的動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn)返回并重新規(guī)劃的方法。
在執(zhí)行送咖啡任務(wù)時(shí),當(dāng)執(zhí)行到圖3中標(biāo)注的動作節(jié)點(diǎn)(!move to person1 bedroom)發(fā)生錯(cuò)誤時(shí),機(jī)器人執(zhí)行機(jī)構(gòu)會向規(guī)劃器發(fā)出動作執(zhí)行錯(cuò)誤的信號,并記錄該任務(wù)的執(zhí)行信息,然后將執(zhí)行錯(cuò)誤的動作反饋給規(guī)劃器,將已執(zhí)行的動作當(dāng)前改變的環(huán)境信息反饋給智能空間,使智能空間及時(shí)更新當(dāng)前環(huán)境信息;隨后規(guī)劃器JSHOP2將根據(jù)返回的動作信息和智能空間提供的當(dāng)前的環(huán)境信息執(zhí)行在線再規(guī)劃過程;即將該動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn),即圖3中標(biāo)注的動作節(jié)點(diǎn)hand to(person1 bedroom)返回給規(guī)劃器JSHOP2,同時(shí)獲取智能空間中的當(dāng)前環(huán)境信息,重新規(guī)劃發(fā)生錯(cuò)誤動作節(jié)點(diǎn)上一個(gè)動作節(jié)點(diǎn)的任務(wù);規(guī)劃好以后將新的動作列表發(fā)送給機(jī)器人執(zhí)行機(jī)構(gòu)執(zhí)行。如果再次出現(xiàn)執(zhí)行錯(cuò)誤,那么系統(tǒng)將會返回該動作節(jié)點(diǎn)hand to(person1 bedroom)的上一個(gè)節(jié)點(diǎn),即send_coffee(personal)動作節(jié)點(diǎn)重新規(guī)劃任務(wù)。
將執(zhí)行錯(cuò)誤的動作節(jié)點(diǎn)的上一個(gè)動作節(jié)點(diǎn)重新規(guī)劃的方法的好處是能夠簡化重規(guī)劃的任務(wù),對之前已完成的動作的影響不大,使機(jī)器人能夠接著已完成的動作繼續(xù)執(zhí)行,提高執(zhí)行的效率。
2)任務(wù)改變時(shí)的規(guī)劃策略;
由于家庭服務(wù)的特殊性,機(jī)器人在進(jìn)行家庭服務(wù)的時(shí)候很有可能會遇到服務(wù)任務(wù)改變的情況,例如機(jī)器人在執(zhí)行某任務(wù)的時(shí)候又接收到其他任務(wù)請求。而且當(dāng)服務(wù)機(jī)器人應(yīng)用于助老助殘領(lǐng)域中時(shí),服務(wù)對象為老人和殘障人士,該類人群經(jīng)常會發(fā)生身體不適、摔倒、求助等異常突發(fā)事件,針對這種特殊的服務(wù)對象,在任務(wù)執(zhí)行過程中,服務(wù)機(jī)器人還應(yīng)該具有針對異常突發(fā)事件的快速響應(yīng)和處理能力。因此機(jī)器人在進(jìn)行任務(wù)規(guī)劃和執(zhí)行的時(shí)候,必須具有多任務(wù)優(yōu)化的能力以及面對突發(fā)事件的應(yīng)急響應(yīng)能力。針對這種情況,提出基于任務(wù)優(yōu)先級的服務(wù)任務(wù)調(diào)度算法,當(dāng)有多任務(wù)請求時(shí),及時(shí)響應(yīng)請求的變化,根據(jù)任務(wù)的優(yōu)先級調(diào)整規(guī)劃和執(zhí)行的順序。
任務(wù)優(yōu)先級的設(shè)定方法;
先根據(jù)任務(wù)緊急程度對任務(wù)進(jìn)行分類,然后結(jié)合任務(wù)的執(zhí)行時(shí)間給任務(wù)分配優(yōu)先級的方法;
由于家庭環(huán)境下機(jī)器人可執(zhí)行的服務(wù)任務(wù)數(shù)量是有限的,因此列舉了家庭環(huán)境下機(jī)器人可W執(zhí)行的最具有代表性的一些任務(wù),包括倒水、開窗簾、開電視、打掃房間以及緊急任務(wù)摔倒、求救,并且綜合考慮家庭環(huán)境下用戶對機(jī)器人服務(wù)的需求程度、用戶的等待時(shí)間和對服務(wù)的滿意度等因素,結(jié)合服務(wù)任務(wù)的特點(diǎn),將這些家庭任務(wù)分成3類:緊急任務(wù),實(shí)時(shí)任務(wù)和日常任務(wù)。下表列出了對任務(wù)的分類情況、任務(wù)的平均執(zhí)行時(shí)間和任務(wù)的優(yōu)先級。
如上表所示,優(yōu)先級最高的是緊急任務(wù),包括摔倒、求救等任務(wù)。在家庭環(huán)境下,尤其是助老助殘領(lǐng)域,一旦發(fā)生緊急情況,用戶對這些任務(wù)的實(shí)時(shí)需求程度是最高的。其次,處于第二優(yōu)先級的是實(shí)時(shí)任務(wù),包括倒水、開窗簾、開電視等任務(wù)。用戶對這些任務(wù)的實(shí)時(shí)需求程度沒有緊急任務(wù)急,但是如果長時(shí)間的沒有服務(wù)響應(yīng)也會降低用戶的滿意度。優(yōu)先級最低的是日常任務(wù),送些日常設(shè)定的任務(wù)包括打掃房間等,該類任務(wù)的實(shí)時(shí)需求程度低,機(jī)器人可以在空閑時(shí)間完成任務(wù)。每個(gè)優(yōu)先級類別里都有多個(gè)任務(wù),那么在同一優(yōu)先級類別里任務(wù)的優(yōu)先級大小由任務(wù)的執(zhí)行時(shí)間決定,執(zhí)行時(shí)間越短,優(yōu)先級越高。例如,在實(shí)時(shí)任務(wù)中,任務(wù)開電視的平均執(zhí)行時(shí)間為2s,開窗簾為3s,倒水為70s,那么它們的優(yōu)先級順序?yàn)殚_電視任務(wù)的優(yōu)先級最高,其次是開窗簾任務(wù),最后是倒水任務(wù)。然而在同一優(yōu)先級類中,如果存在具有相同執(zhí)行時(shí)間的多個(gè)任務(wù),對這些任務(wù)執(zhí)行的先后順序的確定將由規(guī)劃器決定。
在某一時(shí)刻機(jī)器人接收到n個(gè)家庭服務(wù)任務(wù)t1,t2…..tn,每個(gè)任務(wù)用一個(gè)二元組(i,j)表示,其中緊急任務(wù)i值為1,實(shí)時(shí)任務(wù)i值為2,日常任務(wù)i值為3,j是該任務(wù)的執(zhí)行時(shí)間/10000,其中10000為權(quán)重系數(shù);原則:任務(wù)的緊急程度越大且執(zhí)行時(shí)間越小,則任務(wù)的優(yōu)先級越高;
對于任務(wù)的緊急程度與任務(wù)執(zhí)行時(shí)間完全相同的任務(wù),先被下達(dá)命令的任務(wù)具有更高的優(yōu)先級;
圖4是基于任務(wù)緊急程度/任務(wù)執(zhí)行時(shí)間的一種優(yōu)先級方案表,其中箭頭方向表示了任務(wù)的優(yōu)先級順序,在這種優(yōu)先級分派方法中,任務(wù)的緊急程度序列按照升序排列,即任務(wù)緊急程度越大,任務(wù)越靠前(體現(xiàn)在縱坐標(biāo)越靠上);而任務(wù)的執(zhí)行時(shí)間序列則采用降序排列,即任務(wù)時(shí)間越短越靠前,對于具有同樣緊急程度的任務(wù),任務(wù)執(zhí)行時(shí)間越短,任務(wù)的優(yōu)先級越高(體現(xiàn)在橫坐標(biāo)越靠左);對于具有同樣執(zhí)行時(shí)間的任務(wù),任務(wù)緊急程度越大,任務(wù)的優(yōu)先級越高。
在圖4中所示的優(yōu)先級列表中,每個(gè)任務(wù)具有一個(gè)優(yōu)先級等級P;
i(i=1,2,3)與j(0<j≤1)分別表示任務(wù)的緊急程度(緊急任務(wù)i值為1,實(shí)時(shí)任務(wù)i值為2,日常任務(wù)i值為3)與執(zhí)行時(shí)間/10000在各自序列中的位置,圖3中每條斜線上標(biāo)識的任務(wù)具有相同的優(yōu)先級等級P,但是同樣優(yōu)先級等級的任務(wù),其調(diào)度執(zhí)行的順序必須按照箭頭所指的方向,表現(xiàn)為不同的優(yōu)先級。任務(wù)的優(yōu)先級P可以按照下面的公式:
P=(i+j-1)*(i+j-2)/2+i(P值越小,任務(wù)的優(yōu)先級越高);
多任務(wù)調(diào)度算法設(shè)計(jì),如圖5所示:
制定好任務(wù)的優(yōu)先級以后,希望規(guī)劃系統(tǒng)能夠根據(jù)任務(wù)優(yōu)先級的大小來調(diào)整任務(wù)的執(zhí)行順序。比如機(jī)器人在執(zhí)行倒水任務(wù)的時(shí)候突發(fā)緊急情況,那么規(guī)劃系統(tǒng)應(yīng)該立即對緊急任務(wù)進(jìn)行規(guī)劃,然后讓機(jī)器人暫停執(zhí)行倒水任務(wù),并且保存倒水任務(wù)已執(zhí)行的進(jìn)度,轉(zhuǎn)而執(zhí)行緊急任務(wù),當(dāng)緊急任務(wù)執(zhí)行完后,再去執(zhí)行之前被暫停的倒水任務(wù)。為了實(shí)現(xiàn)此功能,本文對原規(guī)劃系統(tǒng)進(jìn)行了改進(jìn),設(shè)計(jì)了基于任務(wù)優(yōu)先級的服務(wù)任務(wù)調(diào)度算法,該算法的具體描述如下所示:
Step1:當(dāng)有新任務(wù)請求時(shí),根據(jù)公式P=(i+j-1)*(i+j-2)/2+i(P值越小,任務(wù)的優(yōu)先級越高)程序根據(jù)優(yōu)先級P的大小將該任務(wù)添加到任務(wù)列表(tasklist)的適當(dāng)位置;
Step2:對新任務(wù)進(jìn)行規(guī)劃,生成相應(yīng)的動作列表;
Step3:檢測此時(shí)機(jī)器人是否正在執(zhí)行某任務(wù),如果沒有正在執(zhí)行某任務(wù),轉(zhuǎn)到Step4,如果正在執(zhí)行某任務(wù),轉(zhuǎn)到Step5;
Step4:選取任務(wù)列表中優(yōu)先級最高的任務(wù)的動作列表執(zhí)行,執(zhí)行結(jié)束后,轉(zhuǎn)到Step6;
Step5:根據(jù)公式P=(i+j-1)*(i+j-2)/2+i(P值越小,任務(wù)的優(yōu)先級越高)判斷正在執(zhí)行的任務(wù)是否是當(dāng)前任務(wù)列表中優(yōu)先級最高那個(gè),如果是,則繼續(xù)執(zhí)行,如果不是,則保存正在執(zhí)行的任務(wù)的執(zhí)行信息(包括狀態(tài)信息,已經(jīng)完成的動作信息和未完成的動作信息),并暫停該任務(wù)的執(zhí)行,轉(zhuǎn)而執(zhí)行任務(wù)列表中優(yōu)先級最高的任務(wù),任務(wù)執(zhí)行完以后轉(zhuǎn)到Step6;
Step6:刪除任務(wù)列表和動作列表中的已經(jīng)執(zhí)行完的任務(wù)及其動作列表;
Step7:判斷任務(wù)列表中是否還有任務(wù),如果是,返回Step4,如果否,則算法結(jié)束。
根據(jù)上述算法,即可實(shí)現(xiàn)多任務(wù)的調(diào)度,讓系統(tǒng)根據(jù)任務(wù)優(yōu)先級的大小調(diào)整任務(wù)的執(zhí)行順序,提高機(jī)器人服務(wù)的智能性和用戶的滿意度。