本技術(shù)涉及無(wú)人機(jī)集群分布式任務(wù)規(guī)劃,特別是涉及一種基于異步共識(shí)的無(wú)人機(jī)集群分布式任務(wù)規(guī)劃方法和裝置。
背景技術(shù):
1、無(wú)人機(jī)集群任務(wù)規(guī)劃算法需要通過(guò)通信階段來(lái)實(shí)現(xiàn)集群內(nèi)計(jì)劃的共識(shí),其中同步通信對(duì)應(yīng)著同步共識(shí)方法來(lái)消解無(wú)人機(jī)間的任務(wù)沖突,而異步通信則對(duì)應(yīng)著異步共識(shí)方法。在無(wú)人機(jī)集群任務(wù)規(guī)劃的研究中,同步通信的實(shí)驗(yàn)環(huán)境因易控易調(diào)而多被采用;而在實(shí)際應(yīng)用中,無(wú)人機(jī)集群實(shí)現(xiàn)分布式同步共識(shí)方法需要人為設(shè)定等待時(shí)間或額外信號(hào),使得群內(nèi)無(wú)人機(jī)能夠迭代同步。這樣的同步等待帶來(lái)了通信時(shí)間的延長(zhǎng),降低了算法在現(xiàn)實(shí)應(yīng)用中的實(shí)際性能,甚至有些算法在實(shí)際的物理系統(tǒng)中無(wú)法實(shí)現(xiàn)。而采用異步共識(shí)方法就解決了上述問(wèn)題,在異步迭代中,各無(wú)人機(jī)所處的迭代階段可不同,無(wú)人機(jī)無(wú)需等待其他無(wú)人機(jī)共同進(jìn)入通信階段,因而避免了計(jì)算和通信前后的等待時(shí)間浪費(fèi)。但目前已有的異步共識(shí)方法的通信協(xié)議和共識(shí)規(guī)則仍需相當(dāng)多的通信量和通信頻次。其協(xié)議采用獲勝者任務(wù)時(shí)間戳而不包含非獲勝者的任務(wù)時(shí)間戳,這樣不僅通信量會(huì)隨著任務(wù)數(shù)增加而增加,并且基于該協(xié)議的共識(shí)規(guī)則也因一些機(jī)間任務(wù)沖突消解需多次廣播而使得通信頻次上升,對(duì)無(wú)人機(jī)集群的網(wǎng)絡(luò)通信環(huán)境要求較高,嚴(yán)重降低了無(wú)人機(jī)集群在網(wǎng)絡(luò)化條件下的規(guī)劃時(shí)間性能和異步計(jì)劃共識(shí)的效率,影響了算法應(yīng)用于無(wú)人機(jī)集群的實(shí)時(shí)性。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問(wèn)題,提供一種基于異步共識(shí)的無(wú)人機(jī)集群分布式任務(wù)規(guī)劃方法和裝置。
2、一種基于異步共識(shí)的無(wú)人機(jī)集群分布式任務(wù)規(guī)劃方法,該方法包括:
3、無(wú)人機(jī)i通過(guò)異步通信的方式與無(wú)人機(jī)集群中其他無(wú)人機(jī)進(jìn)行通信,持續(xù)接收其他無(wú)人機(jī)k廣播的任務(wù)信息;任務(wù)信息包括:任務(wù)獲勝者、任務(wù)的獲勝者標(biāo)價(jià)以及無(wú)人機(jī)時(shí)間戳;無(wú)人機(jī)時(shí)間戳表示無(wú)人機(jī)i掌握的n架無(wú)人機(jī)生成或更新其任務(wù)的時(shí)間。
4、將收斂標(biāo)志和迭代計(jì)數(shù)器初始化為0,將廣播標(biāo)志初始化為1。
5、在任務(wù)計(jì)劃計(jì)算環(huán)節(jié)中計(jì)算任務(wù)選擇,并更新本機(jī)任務(wù)信息;
6、在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)中,獲取其他無(wú)人機(jī)k的任務(wù)信息,無(wú)人機(jī)i和其他無(wú)人機(jī)通過(guò)價(jià)高者得的異步共識(shí)規(guī)則消解機(jī)間任務(wù)沖突,得到無(wú)沖突的任務(wù)信息。
7、若廣播標(biāo)志為1,則將廣播其本地任務(wù)信息。
8、在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)結(jié)束時(shí),將迭代計(jì)數(shù)器增加1;如果進(jìn)行了消解的任務(wù)沖突,則將廣播標(biāo)志置1,否則將廣播標(biāo)志置0。
9、如果迭代計(jì)數(shù)器達(dá)到預(yù)設(shè)收斂閾值,則將收斂標(biāo)志置1,繼續(xù)進(jìn)行任務(wù)計(jì)劃計(jì)算環(huán)節(jié)和任務(wù)計(jì)劃共識(shí)環(huán)節(jié)的迭代,否則,將收斂標(biāo)志置0,停止迭代,得到無(wú)沖突的任務(wù)規(guī)劃。
10、其中,異步共識(shí)規(guī)則包括:
11、將無(wú)人機(jī)i作為接收方,將集群中的其他無(wú)人機(jī)k作為發(fā)送方。
12、快速一致規(guī)則:無(wú)人機(jī)i在收到無(wú)人機(jī)k關(guān)于任務(wù)j消息后;如果當(dāng)無(wú)人機(jī)i認(rèn)為任務(wù)j的獲勝者是第三方無(wú)人機(jī)m時(shí),如果無(wú)人機(jī)k具有更高的標(biāo)價(jià)或更新的無(wú)人機(jī)m消息,則無(wú)人機(jī)i將更新其本地關(guān)于任務(wù)j的信息并進(jìn)行轉(zhuǎn)發(fā),使得接收方可與發(fā)送方就任務(wù)j的信息快速達(dá)成一致;當(dāng)無(wú)人機(jī)k關(guān)于任務(wù)j的標(biāo)價(jià)較小時(shí),無(wú)論其無(wú)人機(jī)時(shí)間戳如何,無(wú)人機(jī)i均保留本機(jī)信息并轉(zhuǎn)發(fā)給無(wú)人機(jī)k;
13、平局決勝規(guī)則:無(wú)人機(jī)i不僅可打破其標(biāo)價(jià)與其他無(wú)人機(jī)相同的情況,同時(shí)還可助其他無(wú)人機(jī)提前打破標(biāo)價(jià)相等的平局情況,以防止冗余任務(wù)信息轉(zhuǎn)發(fā),降低網(wǎng)絡(luò)通信負(fù)載。
14、冗余檢測(cè)規(guī)則:在存在沖突需要處理并通知其他無(wú)人機(jī)的情況,接收方進(jìn)行消息轉(zhuǎn)發(fā);當(dāng)接收方無(wú)人機(jī)時(shí)間戳較舊或發(fā)送方無(wú)人機(jī)時(shí)間戳較舊時(shí)需要進(jìn)行消息轉(zhuǎn)發(fā)。
15、避免誤傳規(guī)則:當(dāng)接收方收到消息但卻不能做出判斷時(shí),則采用重置來(lái)避免錯(cuò)誤的消息更新,同時(shí)不轉(zhuǎn)發(fā)。
16、在其中一個(gè)實(shí)施例中,在任務(wù)計(jì)劃計(jì)算環(huán)節(jié)中計(jì)算任務(wù)選擇,并更新本機(jī)任務(wù)信息,包括:
17、在任務(wù)計(jì)劃計(jì)算環(huán)節(jié),無(wú)人機(jī)i將從本機(jī)計(jì)劃中移除與計(jì)劃共識(shí)相矛盾的任務(wù),再加入標(biāo)價(jià)高于當(dāng)前獲勝者的任務(wù),以形成該迭代下的本機(jī)計(jì)劃并更新于本機(jī)任務(wù)信息中。
18、在其中一個(gè)實(shí)施例中,在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)中,獲取其他無(wú)人機(jī)k的任務(wù)信息,無(wú)人機(jī)i和其他無(wú)人機(jī)通過(guò)價(jià)高者得的異步共識(shí)規(guī)則消解機(jī)間任務(wù)沖突,得到無(wú)沖突的任務(wù)信息,包括:
19、在任務(wù)計(jì)劃共識(shí)環(huán)節(jié),無(wú)人機(jī)i廣播本地任務(wù)信息,并獲取其他無(wú)人機(jī)的最新任務(wù)信息,在獲取其他無(wú)人機(jī)的最新消息時(shí),將已經(jīng)接收的其他無(wú)人機(jī)最新消息更新到本地緩沖區(qū)。
20、對(duì)與無(wú)人機(jī)i直連的第一個(gè)其他無(wú)人機(jī)的第一個(gè)任務(wù),通過(guò)異步共識(shí)規(guī)則消解機(jī)間任務(wù)沖突,得到無(wú)沖突的任務(wù)信息。
21、繼續(xù)對(duì)第一個(gè)其他無(wú)人機(jī)的下一個(gè)任務(wù)進(jìn)行沖突消解,直到遍歷完第一個(gè)其他無(wú)人機(jī)的所有任務(wù)為止,繼續(xù)對(duì)第二個(gè)其他無(wú)人機(jī)的任務(wù)進(jìn)行沖突消解,直到遍歷完所有與無(wú)人機(jī)i直連的所有其他無(wú)人機(jī)為止。
22、在其中一個(gè)實(shí)施例中,無(wú)人機(jī)的信息轉(zhuǎn)發(fā)采用udp廣播模式。
23、無(wú)人機(jī)i在接收到其他無(wú)人機(jī)的更新消息之前,默認(rèn)其他無(wú)人機(jī)的狀態(tài)不更新,隨后無(wú)人機(jī)i將持續(xù)廣播其消息,以避免其他無(wú)人機(jī)由于丟包等通信問(wèn)題而無(wú)法接收本機(jī)消息。
24、在其中一個(gè)實(shí)施例中,任務(wù)信息中的無(wú)人機(jī)時(shí)間戳的確定過(guò)程包括:
25、對(duì)于無(wú)人機(jī)i,無(wú)人機(jī)時(shí)間戳中的第i個(gè)元素即為本機(jī)任務(wù)生成或更新的時(shí)間,可通過(guò)本地記錄獲取。
26、對(duì)于無(wú)人機(jī)時(shí)間戳中第i個(gè)元素以外的其他元素,則需要通過(guò)通信獲??;其中獲取方式為:若無(wú)人機(jī)k與無(wú)人機(jī)i是通信直連的,則無(wú)人機(jī)i關(guān)于無(wú)人機(jī)k的任務(wù)更新時(shí)間由無(wú)人機(jī)k發(fā)送的無(wú)人機(jī)時(shí)間戳向量獲得;若無(wú)人機(jī)k與無(wú)人機(jī)i是非通信直連,則無(wú)人機(jī)i關(guān)于無(wú)人機(jī)k的任務(wù)更新時(shí)間需從其他無(wú)人機(jī)m處獲得,無(wú)人機(jī)m需要是無(wú)人機(jī)i通信直連的,并且無(wú)人機(jī)m具有無(wú)人機(jī)k的任務(wù)更新時(shí)間。
27、在其中一個(gè)實(shí)施例中,當(dāng)存在多架無(wú)人機(jī)m與無(wú)人機(jī)i直連時(shí),無(wú)人機(jī)k的無(wú)人機(jī)時(shí)間戳采用多架無(wú)人機(jī)m中最新的。
28、在其中一個(gè)實(shí)施例中,觸因矩陣用于記錄觸發(fā)發(fā)送方進(jìn)行廣播的原因,當(dāng)無(wú)人機(jī)需要將其任務(wù)j的信息發(fā)送給無(wú)人機(jī)k時(shí),,。
29、避免消息泛洪問(wèn)題的規(guī)避機(jī)制的具體步驟包括:
30、當(dāng)無(wú)人機(jī)i進(jìn)入進(jìn)行計(jì)劃環(huán)節(jié)與任務(wù)共識(shí)環(huán)節(jié)迭代之前,將當(dāng)次迭代的觸因矩陣和上次迭代的觸因矩陣的元素初始化為0,設(shè)置記錄相同廣播原因的計(jì)數(shù)器的值為0。
31、在進(jìn)入任務(wù)計(jì)劃共識(shí)環(huán)節(jié)后,若無(wú)人機(jī)i與無(wú)人機(jī)k就任務(wù)j存在沖突,需要通過(guò)廣播來(lái)消解任務(wù)沖突,則將設(shè)為1。
32、在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)結(jié)束時(shí),無(wú)人機(jī)檢查當(dāng)次迭代的觸因矩陣和上次迭代的觸因矩陣是否相同;若相同,則將記錄相同廣播原因的計(jì)數(shù)器的值加一;否則,計(jì)數(shù)器的值重置為0,并且將本次迭代的觸因矩陣設(shè)置為和上次迭代矩陣相同;經(jīng)多次迭代,當(dāng)計(jì)數(shù)器的值達(dá)到所設(shè)定的閾值時(shí),無(wú)人機(jī)i認(rèn)為無(wú)人機(jī)k已達(dá)成共識(shí)或已經(jīng)退出集群,則無(wú)人機(jī)i不再進(jìn)行廣播,將廣播標(biāo)志置0。
33、在其中一個(gè)實(shí)施例中,方法采用以雙線程的形式運(yùn)行,其中線程1是任務(wù)規(guī)劃算法的主進(jìn)程,線程2是連續(xù)接收其他無(wú)人機(jī)消息而不掛起的接收器;每個(gè)線程均獨(dú)立運(yùn)行且不掛起,線程之間通過(guò)緩存來(lái)實(shí)現(xiàn)信息交互。
34、一種基于異步共識(shí)的無(wú)人機(jī)集群分布式任務(wù)規(guī)劃裝置,該裝置包括:
35、無(wú)人機(jī)集群通信設(shè)置模塊,用于無(wú)人機(jī)i通過(guò)異步通信的方式與無(wú)人機(jī)集群中其他無(wú)人機(jī)進(jìn)行通信,持續(xù)接收其他無(wú)人機(jī)k廣播的任務(wù)信息;無(wú)人機(jī)i的任務(wù)信息包括:無(wú)人機(jī)i認(rèn)為的任務(wù)獲勝者、無(wú)人機(jī)i認(rèn)定的任務(wù)的獲勝者標(biāo)價(jià)以及無(wú)人機(jī)時(shí)間戳;無(wú)人機(jī)時(shí)間戳表示無(wú)人機(jī)i掌握的n架無(wú)人機(jī)生成或更新其任務(wù)的時(shí)間。
36、迭代初始化模塊,用于將收斂標(biāo)志和迭代計(jì)數(shù)器初始化為0,將廣播標(biāo)志初始化為1,并設(shè)定收斂閾值。
37、任務(wù)計(jì)劃計(jì)算模塊,用于在任務(wù)計(jì)劃計(jì)算環(huán)節(jié)中計(jì)算任務(wù)選擇,并更新本機(jī)任務(wù)信息;
38、任務(wù)計(jì)劃共識(shí)模塊,用于在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)中,獲取其他無(wú)人機(jī)k的任務(wù)信息,無(wú)人機(jī)i和其他無(wú)人機(jī)通過(guò)價(jià)高者得的異步共識(shí)規(guī)則消解機(jī)間任務(wù)沖突,得到無(wú)沖突的任務(wù)信息;若廣播標(biāo)志為1,則將廣播其本地任務(wù)信息;在任務(wù)計(jì)劃共識(shí)環(huán)節(jié)結(jié)束時(shí),將迭代計(jì)數(shù)器增加1;如果進(jìn)行了消解的任務(wù)沖突,則將廣播標(biāo)志置1,否則將廣播標(biāo)志置0;如果迭代計(jì)數(shù)器達(dá)到收斂閾值,則將收斂標(biāo)志置1,繼續(xù)進(jìn)行迭代,否則,將收斂標(biāo)志置0,停止迭代,得到無(wú)沖突的任務(wù)規(guī)劃。其中,異步共識(shí)規(guī)則包括:將無(wú)人機(jī)i作為接收方,將集群中的其他無(wú)人機(jī)k作為發(fā)送方;快速一致規(guī)則:無(wú)人機(jī)i在收到無(wú)人機(jī)k關(guān)于任務(wù)j消息后;如果當(dāng)無(wú)人機(jī)i認(rèn)為任務(wù)j的獲勝者是第三方無(wú)人機(jī)m時(shí),如果無(wú)人機(jī)k具有更高的標(biāo)價(jià)或更新的無(wú)人機(jī)m消息,則無(wú)人機(jī)i將更新其本地關(guān)于任務(wù)j的信息并進(jìn)行轉(zhuǎn)發(fā),使得接收方可與發(fā)送方就任務(wù)j的信息快速達(dá)成一致;當(dāng)無(wú)人機(jī)k關(guān)于任務(wù)j的標(biāo)價(jià)較小時(shí),無(wú)論其無(wú)人機(jī)時(shí)間戳如何,無(wú)人機(jī)i均保留本機(jī)信息并轉(zhuǎn)發(fā)給無(wú)人機(jī)k;平局決勝規(guī)則:無(wú)人機(jī)i不僅可打破其標(biāo)價(jià)與其他無(wú)人機(jī)相同的情況,同時(shí)還可助其他無(wú)人機(jī)提前打破標(biāo)價(jià)相等的平局情況,以防止冗余任務(wù)信息轉(zhuǎn)發(fā),降低網(wǎng)絡(luò)通信負(fù)載;冗余檢測(cè)規(guī)則:在存在沖突需要處理并通知其他無(wú)人機(jī)的情況,接收方進(jìn)行消息轉(zhuǎn)發(fā);當(dāng)接收方無(wú)人機(jī)時(shí)間戳較舊或發(fā)送方無(wú)人機(jī)時(shí)間戳較舊時(shí)需要進(jìn)行消息轉(zhuǎn)發(fā);避免誤傳規(guī)則:當(dāng)接收方收到消息但卻不能做出判斷時(shí),則采用重置來(lái)避免錯(cuò)誤的消息更新,同時(shí)不轉(zhuǎn)發(fā)。
39、上述基于異步共識(shí)的無(wú)人機(jī)集群分布式任務(wù)規(guī)劃方法和裝置,所述方法主要包含異步通信協(xié)議和共識(shí)規(guī)則,以實(shí)現(xiàn)低頻低通的無(wú)人機(jī)集群快速任務(wù)規(guī)劃,該方法巧妙地利用了無(wú)人機(jī)信息更新的無(wú)人機(jī)時(shí)間戳,減少了任務(wù)信息更新時(shí)原無(wú)人機(jī)時(shí)間戳的通信量,并且新的無(wú)人機(jī)時(shí)間戳包含了更多關(guān)于非獲勝者的信息,有助于新的異步共識(shí)規(guī)則設(shè)計(jì),本技術(shù)提出的無(wú)人機(jī)集群異步計(jì)劃共識(shí)無(wú)需同步計(jì)劃共識(shí)所需的通信等待,進(jìn)而可使無(wú)人機(jī)集群更快地獲得任務(wù)規(guī)劃結(jié)果。其次,設(shè)計(jì)了帶有新無(wú)人機(jī)時(shí)間戳的無(wú)人機(jī)異步共識(shí)規(guī)則來(lái)更快消解機(jī)間任務(wù)沖突,有效解決了異步下信息到達(dá)亂序問(wèn)題,并潛在地減少了通信頻次。