一種面向區域監測的多機器人遍歷方法
1.本發明屬于機器人智能控制領域,更具體地,涉及一種面向區域監測的多機器人遍歷方法。
背景技術:
2.區域監測的目的為感知、建模和跟蹤目標區域內感興趣的物理、生物和化學量。無線傳感器網絡是進行區域監測的傳統工具。雖然相比以往的手工測量有了一定的進步,但其只提供固定的監測點,無法適應環境的變化,且對于較大的區域,往往需要大量的傳感器節點,提高了系統成本。隨著多機器人技術的不斷發展,多個移動機器人搭載傳感器組成的移動傳感器網絡解決了這個問題。
3.在區域監測問題中,由于只能通過對部分離散位置的采樣測量來對未被測量的其他位置進行回歸預測,所以如何提高預測精度是一個關鍵的問題。在傳感器精度和預測模型確定的情況下,采樣點的數量與位置決定了預測的精度,而冗余的采樣點又將增加任務執行的時間。因此,需要對采樣點的部署進行優化。
技術實現要素:
4.針對現有技術的以上缺陷或改進需求,本發明提供了一種面向區域監測的多機器人遍歷方法,其目的在于優化采樣點的部署,以在保證預測精度的前提下,最小化多機器人系統完成采樣所需的時間。
5.為實現上述目的,按照本發明的一個方面,提供了一種面向區域監測的多機器人遍歷方法,包括:
6.步驟s1:確定采樣半徑r
max
;
7.步驟s2:基于目標區域的柵格地圖,對采樣點進行初始化部署,舍棄落入障礙物及目標區域外的采樣點x
obs
,形成初始采樣點集x
init
;
8.步驟s3:完成所有采樣點xi∈x
obs
覆蓋空洞的再部署,形成補充采樣點集,x
extra
對于每個采樣點進行再部署的步驟包括:
9.步驟s31:確定xi覆蓋區域邊界l
cover
,l
cover
上各柵格滿足到xi的距離不大于r
max
且至少一個相鄰柵格到xi的距離大于r
max
;將l
cover
內部到最近采樣點x
′
∈x
init u x
extra
的距離大于r
max
的自由柵格和邊界柵格編號為fi;在編號為fi的柵格a中,若存在有編號不為fi且未被標記的相鄰柵格,則對柵格a進行標記;將l
cover
內部相鄰的標記柵格組成對應采樣點xi的覆蓋空洞的邊界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采樣點xi的第j個覆蓋空洞的邊界;
10.步驟s32:做b
ij
的最小外接圓c,若圓心o(x,y)所在的柵格為自由柵格,則將柵格x
new
=o(x,y)添加至補充采樣點集x
extra
中,否則,將b
ij
中距離o(x,y)最近的自由柵格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署;在完成邊界集合borderi的再部署后,判斷是否存在b
ij
的最小外接圓c的圓心所在柵格不為自由柵格,若是,則返回步驟s31,若否,則表示完
成對采樣點xi覆蓋空洞的再部署;
11.步驟s4:控制多機器人遍歷初始采樣點和補充采樣點x
init
∪x
extra
。
12.在其中一個實施例中,對采樣點進行初始化部署的方法包括:
13.采用正三角形的模式進行采樣點的部署,每個采樣點的覆蓋邊界將目標區域分割為蜂窩網絡狀的圖形。
14.在其中一個實施例中,對柵格a進行標記的方法為將柵格a的編號乘以負數變為負編號,將具有負編號的柵格作為標記柵格,當具有正編號的柵格作為未標記的柵格。
15.在其中一個實施例中,步驟s4包括:
16.步驟s41:對地圖進行預處理,向左右兩側擴展每個障礙物的邊界,使得[u
l
,o
l
)和[u
l
,or]內的初始采樣點列數均可以被n整除,其中,n+1為機器人的數量,u
l
為目標區域的左邊界,o
l
和or分別為障礙物擴展后的左邊界和右邊界;
[0017]
步驟s42:使用牛耕分解法對預處理后的地圖進行縱向分解得到多個子區域,除最右側子區域外,每個子區域的初始采樣點的列數均可被n整除;
[0018]
步驟s43:當最右側子區域中的初始采樣點的列數大于n時,則將最右側子區域分別為左側區域和右側區域,其中,左側區域中的初始采樣點的列數能被n整除,右側區域中的初始采樣點的列數小于n;
[0019]
步驟s44:將子區域橫向分解為邊界區域c
border
和內部區域c
inside
,內部區域滿足不包含補充采樣點且初始采樣點的列數可被n整除和初始采樣點的行數為偶數三個條件,否則為邊界區域;
[0020]
步驟s45:規劃遍歷路徑,對于內部區域,控制n個機器人組成機器人編隊進行遍歷,對于邊界區域,控制1個機器人進行遍歷,根據采樣結果對未被采樣的其他位置進行高斯回歸預測。
[0021]
在其中一個實施例中,在步驟s44中一個子區域分為一個c
inside
和位于c
inside
上方的上邊界區域和位于c
inside
下方的下邊界區域;
[0022]
步驟s44包括:
[0023]
先初步確定上邊界區域的頂端為r
uu
、上邊界區域的初始底端為r
ud
,下邊界區域的初始頂端為r
du
、下邊界區域的底端為r
dd
;
[0024]
再將r
ud
向下平移至第一個含有初始采樣點的行作為c
inside
的上邊界r
iu
,將r
du
向上平移至第一個含有初始采樣點的行作為c
inside
的下邊界r
id
,且r
id
與r
iu
之間含有偶數行初始采樣點,上邊界區域的上下范圍更新為[r
uu
,r
iu-1],下邊界區域的上下范圍更新為[r
id
+1,r
du
],其中,r
iu-1表示朝頂端方向上移一行,r
id
+1表示朝底端方向下移一行。
[0025]
在其中一個實施例中,對于邊界區域的遍歷方法包括:
[0026]
步驟s451:將每個邊界區域c
border
縱向分解為多個單元的集合c={c1,c2,...cj...,c
nc
},cj為第j單元,nc為當前邊界區域的初始采樣點的列數,每個單元僅包含一列初始采樣點;
[0027]
步驟s452:對于每一個j<nc,規劃path
j1
和path
j2
,path
j1
表示以c
ju
為起點,以c
(j+1)u
為終點,遍歷了c
ju
和c
(j+1)u
中所有采樣點的最短路徑,path
j2
表示以c
jd
為起點,以c
(j+1)d
為終點,遍歷了c
jd
和c
(j+1)d
中所有采樣點的最短路徑,c
ju
和c
jd
分別為cj單元最頂部和最底部的初始采樣點,c
ju
表示cj中縱坐標大于c
ju
的采樣點的集合,c
jd
表示cj中縱坐標小于cjd
的采樣點的集合;
[0028]
步驟s453:對于j=1和j=nc,按照縱坐標從大到小的方向規劃path
j3
,按照縱坐標從小到大的方向規劃path
j4
,path
j3
表示以c
ju
為起點,遍歷了cj中c
ju
以下所有采樣點的路徑,path
j4
表示以c
jd
為起點,遍歷了cj中c
jd
以上所有采樣點的路徑;縱坐標由地圖底部到頂部逐漸增大;
[0029]
步驟s454:對于每一個1<j<nc,規劃以c
ju
為起點、c
jd
為終點,遍歷cj中所有初始采樣點的直線路徑path
j5
;
[0030]
步驟s455:通過path
j1
到path
j5
的不同組合形成了以c
border
的四個角作為起始點、遍歷c
border
中所有采樣點的子區域內路徑path
i1
到path
i4
。
[0031]
在其中一個實施例中,若nc為偶數,則以左上角為起點的路徑path
i1
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以左下角為起點的路徑path
i2
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以右上角為起點的路徑以右下角為起點的路徑其中,表示與path路徑相同、反向相反;
[0032]
若nc為奇數,則以左上角為起點的路徑path
i1
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以左下角為起點的路徑path
i2
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以右上角為起點的路徑以右下角為起點的路徑
[0033]
在其中一個實施例中,針對所有邊界區域c
border
,通過動態規劃方法規劃出每個邊界區域c
border
的內部遍歷路徑起點和子區域的訪問順序,從而得到邊界區域的遍歷路徑;
[0034]
針對所有內部區域c
inside
,通過動態規劃方法規劃出每個內部區域c
inside
的內部遍歷路徑起點和子區域的訪問順序,從而得到內部區域的遍歷路徑。
[0035]
在其中一個實施例中,所述動態規劃方法通過最小化來規劃遍歷同一類子區域的路徑,表示某類子區域的集合,d(t,i,q)的計算方式為:
[0036][0037]
其中,g(k,l,i,q)表示出發于子區域k的角點l,遍歷子區域i內所有目標點,并結束于角點q的路徑長度,k為在路徑序列中在子區域i之前的子區域,(0,0)表示倉庫x0,path
iq1
表示子區域i內部遍歷路徑的起點;g(k,l,i,q)的計算方式:
[0038][0039]
其中,d(a,b)表示a和b之間的最短路徑長度,s
kl1
表示區域k內以角點l為起點的遍
歷路徑的第一個點,表示區域i內以角點q為起點的遍歷路徑的最后一個點,表示區域i內以角點q為起點的遍歷路徑的第m個點,ni表示區域i內遍歷路徑上采樣點的數量,表示以角點q為起點的單元i內采樣點遍歷路徑。
[0040]
在其中一個實施例中,在規劃兩點之間的路徑時,若兩點之間的直線路徑與障礙物沖突,使用a*算法對兩點之間的路徑進行規劃。
[0041]
總體而言,通過本發明所構思的以上技術方案與現有技術相比,能夠取得下列有益效果:
[0042]
由于目標區域內存在障礙物,在進行初始化部署時,部分采樣點因為落在了障礙物區域而被舍棄,導致出現了覆蓋空洞。除此之外,落在目標區域之外的采樣點也會被舍棄,同樣也會導致覆蓋空洞的出現。覆蓋空洞對整體的預測精度有著直接影響,覆蓋空洞內的預測精度無法保證,因此需要采取措施對其進行修復。在本技術中,對于采樣點的部署分為兩個階段,初始化部署階段和對覆蓋空洞進行修復的再部署階段,其中,初始化部署階段可以采用常規方法部署初始采樣點陣列,在再部署階段,對每一個舍棄的采樣點所導致的覆蓋空洞進行修復,其中,先選定一個舍棄的采樣點并確定覆蓋空洞,然后再通過外接圓確定修復空洞的補充采樣點,以此完成所有覆蓋空洞的修復。初始化部署階段的初始采樣點和再部署階段的補充采樣點共同形成采樣點的部署方案,由此可以消除目標區域內的覆蓋空洞,從而保證對整個目標區域的預測結果的精度,同時減少了所需的采樣點的數量。
附圖說明
[0043]
圖1為一實施例的面向區域監測的多機器人遍歷方法的步驟流程圖;
[0044]
圖2為一實施例的控制多機器人遍歷采樣點的步驟流程圖;
[0045]
圖3為一實施例的規劃邊界區域遍歷路徑的步驟流程圖;
[0046]
圖4為一實施例的環境柵格地圖的示意圖;
[0047]
圖5為一實施例的初始化部署的部署模式示意圖;
[0048]
圖6為一實施例的初始化部署后的采樣點及覆蓋區域示意圖;
[0049]
圖7為一實施例的覆蓋空洞示意圖;
[0050]
圖8為一實施例的覆蓋空洞修復后的采樣點及覆蓋區域示意圖;
[0051]
圖9(a)為一實施例的擴展障礙物邊界的示意圖;
[0052]
圖9(b)為一實施例的對地圖進行縱向分解的示意圖;
[0053]
圖9(c)為一實施例的分解最右側子區域的意圖;
[0054]
圖9(d)為一實施例的對子區域進行橫向分解的示意圖;
[0055]
圖10為一實施例的橫向分解界限示意圖;
[0056]
圖11為一實施例的內部區域中的目標點示意圖;
[0057]
圖12(a)為一實施例的一邊界區域中以左上角為起點的遍歷路徑示意圖;
[0058]
圖12(b)為一實施例的一邊界區域中以左下角為起點的遍歷路徑示意圖;
[0059]
圖13為一實施例的遍歷內部區域的編隊形狀示意圖;
[0060]
圖14為一實施例的標量場真值分布圖;
[0061]
圖15為一實施例的采樣點位置和機器人路徑圖;
[0062]
圖16為一實施例的標量場預測值分布圖;
[0063]
圖17為一實施例的標量場預測誤差分布圖。
具體實施方式
[0064]
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。此外,下面所描述的本發明各個實施方式中所涉及到的技術特征只要彼此之間未構成沖突就可以相互組合。
[0065]
如圖1所示為一實施例中的面向區域監測的多機器人遍歷方法,其包括:
[0066]
步驟s100:確定采樣半徑r
max
。
[0067]
其中,采樣半徑即為機器人位于采樣點時所覆蓋范圍的半徑,單個采樣點的覆蓋區域為以該采樣點為圓心、以r
max
為半徑的圓盤。
[0068]
具體的,可以根據高斯核函數計算保證預測精度的最大采樣半徑r
max
:
[0069][0070]
其中,l、σ0為已知的高斯核函數(rbf)的超參數。ω2為傳感器測量噪聲的方差,δ為對預測誤差的容忍閾值。
[0071]
步驟s200:基于目標區域的柵格地圖,對采樣點進行初始化部署,舍棄落入障礙物及目標區域外的采樣點x
obs
,形成初始采樣點x
init
。
[0072]
先建立目標區域的柵格地圖。
[0073]
在一實施例中,使用柵格法建立環境的柵格地圖,使用1表示完全被障礙物占用的柵格,稱其為障礙柵格,使用0表示沒有被障礙物占用的柵格,稱其為自由柵格,使用2表示部分被障礙物占用的柵格,稱其為邊界柵格。使用該種方法對環境的建模結果如圖4所示,圖中灰區域表示障礙物。
[0074]
然后,初始化部署采樣點,將初始化部署的采樣點組成的集合稱之為初始采樣點集x
init
。
[0075]
初始化部署階段的目的是使用均勻分布的采樣點對目標監測區域進行確定性部署,采樣點組成某種形式的網格以最小化采樣點的數量。通過初始化部署,相鄰的多個采樣點形成了固定的形狀,在最小化重復覆蓋區域的同時,也為使用機器人編隊進行采樣提供了方便。根據網格的形狀,圓盤覆蓋模式可分為三種:正三角形、正方形和正六邊形等,相鄰圓盤之間的圓心距越長,重復覆蓋區域的面積就越小。
[0076]
在本實施例中,采用正三角形的部署模式,覆蓋相同大小的面積,正三角形部署所需要的采樣點的數量為正方形部署的0.87倍,為正六邊形部署的0.66倍。若使用正三角形部署模式,相鄰圓盤的圓心距為每個采樣點所負責覆蓋的區域為一個正六邊形,目標區域被分割為蜂窩網絡狀的圖形,如圖5所示。
[0077]
具體的,采用正三角形的部署模式,按照從上到下、從左到右的方向,進行采樣點的部署,如圖5所示。在柵格地圖中,奇數行采樣點的第一個采樣點距左邊界的距離為
偶數行采樣點的第一個采樣點距離左邊界的距離為處于不同列的兩個相鄰采樣點之間的橫向距離為縱向距離為縱向距離為表示向下取整,res表示柵格的邊長,距離均以柵格數來表示。假設柵格地圖有nr行、nc列,采樣點共有na行、第b行有nb個采樣點,那么則有:
[0078][0079][0080]
其中b=1,2,
…
,na,表示向上取整,bmod2=0表示偶數行,bmod2=1表示奇數行。初始化部署之后的采樣點分布及覆蓋區域如圖6所示,其中,陰影部分表示舍棄采樣點后所導致的覆蓋空洞。
[0081]
步驟s300:完成所有采樣點xi∈x
obs
覆蓋空洞的再部署。
[0082]
為了方便描述,首先定義一些變量。定義記覆蓋空洞為h,障礙物為obs,初始化部署階段被舍棄的采樣點為x
obs
,以x
obs
為圓心、r
max
為半徑的圓盤為q
obs
,初始采樣點集合為x
init
,通過再部署補充的采樣點組成的集合為補充采樣點集合x
extra
,已部署的所有采樣點為x=x
init i x
extra
,已被覆蓋的區域為q
cover
,則有覆蓋空洞如圖7所示,其中陰影區域為h,白區域為q
cover
,黑區域為obs。
[0083]
對于每一個被舍棄的采樣點x
obs
,進行再部署的過程包括:
[0084]
步驟s310:在柵格地圖中確定覆蓋空洞。
[0085]
步驟s320:進行再部署以對覆蓋空洞進行修復。
[0086]
其中,步驟s310具體包括:
[0087]
步驟s311:確定由xi覆蓋的區域的邊界l
cover
,l
cover
上的每一個柵格都滿足兩個條件:
[0088]
條件1:l
cover
上的每一個柵格到xi的距離不大于r
max
;
[0089]
條件2:l
cover
上的每一個柵格至少存在一個相鄰柵格到xi的距離大于r
max
。
[0090]
步驟s312:將l
cover
內部到最近采樣點x
′
∈x
init u x
extra
的距離大于r
max
的自由柵格和邊界柵格編號為fi。
[0091]
其中,x
′
為已部署采樣點中最近的采樣點,已部署采樣點包括初始部署的初始采樣點x
init
和再部署中已經添加的補充采樣點x
extra
。對于l
cover
以內的任意柵格a,若其為自由或邊界柵格,且到最近的x
′
∈x
init u x
extra
的距離大于r
max
,將柵格a的編號設為fi。若不存
在該類柵格,則表示不存在覆蓋空洞,方法結束。fi為采樣點xi的編號。
[0092]
步驟s313:在編號為fi的柵格a中,若存在有編號不為fi且未被標記的相鄰柵格,則對柵格a進行標記。
[0093]
具體的,對于l
cover
以內的任意編號為fi的柵格a,若其上下左右相鄰的編號為不等于fi且未被標記,將柵格a進行標記,具體標記方法是在標記之前編號全為正數,標記時將編號乘以-1作為新的編號。
[0094]
步驟s314:將l
cover
內部相鄰的標記柵格組成對應采樣點xi的覆蓋空洞的邊界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采樣點xi的第j個覆蓋空洞的邊界。
[0095]
具體,一個采樣點可能對應有多個覆蓋空洞,當標記柵格為編號為負的柵格,尋l
cover
以內的所有編號小于0的柵格,相鄰的柵格組成了對應采樣點xi的覆蓋空洞的邊界集合borderi={b
i1
,b
i2
,...b
ij
...,b
in
}。
[0096]
其中,步驟s320包括:
[0097]
步驟s321:做b
ij
的最小外接圓c,若圓心o(x,y)所在的柵格為自由柵格,則將柵格x
new
=o(x,y)添加至x
extra
中,否則,將b
ij
中距離o(x,y)最近的柵格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署。
[0098]
記b
ij
為xi所導致的第j個覆蓋空洞,b
ij
為對應于h
ij
的覆蓋邊界,首先做b
ij
的最小外接圓c,c的圓心和半徑分別為o(x,y)和r。由于h
ij
為q
obs
與obs和q
cover
的差,所以r≤r
max
。然后對o(x,y)的柵格屬性進行判斷,若其為自由柵格,將x
new
=o(x,y)加入到x
extra
中,完成對空洞h
ij
的修復。否則,尋b
ij
中距離o(x,y)最近的柵格o
′
(x,y)作為新的采樣點部署位置,將x
new
=o
′
(x,y)加入到x
extra
中。
[0099]
步驟s322:在完成邊界集合borderi的再部署后,判斷是否存在b
ij
的最小外接圓c的圓心所在柵格不為自由柵格,若是,則返回步驟s310,若否,則表示完成對采樣點xi覆蓋空洞的再部署。
[0100]
完成再部署的采樣點分布及覆蓋區域如圖8所示,其中三角形代表了補充采樣點。
[0101]
步驟s400:控制多機器人遍歷初始采樣點和補充采樣點x
init
∪x
extra
。
[0102]
在完成采樣點的部署之后,根據上文所部署的采樣點規劃遍歷路徑,便可以控制機器人遍歷各采樣點。在使用多個機器人進行區域監測時,通常的方式為將目標區域被分為多個子區域,每個機器人執行子區域內的監測任務。此種方式將多機器人系統視作多個機器人的簡單疊加,沒有發揮出多機器人系統的優勢。若將多機器人組成編隊來對目標區域進行監測,通過機器人之間的協作,可以使得系統具有更強的魯棒性和更復雜的功能。
[0103]
在一實施例中,如圖2所示,步驟s400包括以下子步驟:
[0104]
步驟s410:對地圖進行預處理,向左右兩側擴展每個障礙物的邊界,使得[u
l
,o
l
)和[u
l
,or]內的初始采樣點列數均可以被n整除,其中,n+1為機器人的數量,u
l
為目標區域的左邊界,o
l
和or分別為障礙物擴展后的左邊界和右邊界。
[0105]
如圖9(a)所示,對地圖進行預處理。記目標區域的左右邊界分別為u
l
和ur,障礙物的左右邊界分別為o
l
和or,向兩側擴展障礙物的邊界,使得[u
l
,o
l
)和[u
l
,or]內的nc均可以被n整除,nc為對應區域內的輸出采樣點的列數。
[0106]
步驟s420:使用牛耕分解法對預處理后的地圖進行縱向分解得到多個子區域,除最右側子區域外,每個子區域的初始采樣點的列數均可被n整除。
[0107]
如圖9(b)所示,使用原始牛耕分解法(boustrophedon cell decomposition,bcd)對處理之后的地圖進行縱向分解。對于已經進行處理的障礙物,使用bcd法進行分解,分解之后的結果,除最右邊的子區域以外,每個子區域celli的nc均可被n整除。
[0108]
步驟s430:當最右側子區域中的初始采樣點的列數大于n時,則將最右側子區域分別為左側區域和右側區域,其中,左側區域中的初始采樣點的列數能被n整除,右側區域中的初始采樣點的列數小于n。
[0109]
如圖9(c)所示,將地圖恢復為處理前的形狀,隨后對最右邊的子區域的nc進行判斷,若其大于n,將其縱向分割為兩個子區域:左側區域的nc可被n整除,右側的nc小于n。
[0110]
步驟s440:將子區域橫向分解為包含補充采樣點的邊界區域c
border
和不含補充采樣點的內部區域c
inside
。內部區域滿足不包含補充采樣點、初始采樣點的列數可被n整除,且初始采樣點的行數為偶數三個條件,否則即為邊界區域。
[0111]
如圖9(d)所示,將子區域橫向分解為邊界區域c
border
(陰影部分)和內部區域c
inside
(白部分)。
[0112]
在這一步中,如圖10所示,每個子區域celli原則上可以分為兩個c
border
和一個c
inside
。記子區域celli的上邊界區域的頂端為r
uu
、上邊界區域的底端為r
ud
、下邊界區域的頂端為r
du
、下邊界區域的底端為r
dd
,則c
inside
的上邊界r
iu
為從r
ud
向下第一個含有初始采樣點的行,下邊界r
id
為從r
du
向上第一個含有初始采樣點的行,且r
id
與r
iu
之間含有偶數行初始采樣點。兩個邊界區域的上下范圍分別為[r
uu
,r
iu-1]和[r
id
+1,r
du
]。若r
uu
>r
iu-1或r
id
+1>r
du
,則對應的邊界區域不存在;而若r
id
<r
iu
,則對應的內部區域不存在。
[0113]
步驟s450:規劃遍歷路徑,對于內部區域,控制n個機器人組成機器人編隊進行遍歷,對于邊界區域,控制1個機器人進行遍歷,根據采樣結果對未被采樣的其他位置進行高斯回歸預測。
[0114]
由于內部區域的初始采樣點的列數能夠被n整除,因此,可以控制n個機器人聯合遍歷,對于邊界區域,由于其列數小于n,因此,只控制1個機器人進行遍歷。
[0115]
多機器人系統通過對目標點的遍歷完成對采樣點的遍歷。在邊界區域中,采樣點即為目標點;在內部區域中,目標點為n個相鄰采樣點的質心。在一實施例中,內部區域中的目標點的示意圖如圖11所示。
[0116]
通過步驟s450,實現了控制多機器人系統對所有采樣點進行遍歷采樣的目的。在內部區域中,使用多個機器人組成編隊進行遍歷,通過機器人之間的協作,可以降低對于單個機器人的要求,降低系統的成本;同時也可通過多源數據融合來提高預測精度。
[0117]
在一實施例中,如圖3所示,步驟s450包括以下子步驟:
[0118]
步驟s451:將每個邊界區域c
border
縱向分解為多個單元的集合cj為第j單元,nc為當前邊界區域的初始采樣點的列數,每個單元僅包含一列初始采樣點。
[0119]
具體的,將邊界區域c
border
縱向分解為多個單元的集合每個單元僅包含一列初始采樣點。假設cj單元所含初始采樣點的橫坐標為xj,則cj的范圍為j=2,3,l,n
c-1。c1單元的左邊界為c
border
的左邊界,
單元的右邊界為c
border
的右邊界。
[0120]
步驟s452:對于每一個j<nc,規劃path
j1
和path
j2
,path
j1
表示以c
ju
為起點,以c
(j+1)u
為終點,遍歷了c
ju
和c
(j+1)u
中所有采樣點的最短路徑,path
j2
表示以c
jd
為起點,以c
(j+1)d
為終點,遍歷了c
jd
和c
(j+1)d
中所有采樣點的最短路徑,c
ju
和c
jd
分別為cj單元最頂部和最底部的初始采樣點,c
ju
表示cj中縱坐標大于c
ju
的采樣點的集合,c
jd
表示cj中縱坐標小于c
jd
的采樣點的集合。
[0121]
具體的,對于所有j<nc,規劃path
j1
和path
j2
。path
j1
表示以c
ju
為起點,以c
(j+1)u
為終點,遍歷了c
ju
和c
(j+1)u
中所有采樣點的最短路徑。path
j2
表示以c
jd
為起點,以c
(j+1)d
為終點,遍歷了c
jd
和c
(j+1)d
中所有采樣點的最短路徑。c
ju
為cj單元最頂部的初始采樣點,c
jd
為最底部的初始采樣點,若該單元無初始采樣點,則c
ju
和c
jd
為cj中橫坐標最靠近單元中心的采樣點。c
ju
表示cj中縱坐標大于c
ju
的采樣點的集合,即c
ju
={c|y(c)>y(c
ju
)且c∈cj}。c
jd
表示cj中縱坐標小于c
jd
的采樣點的集合,即c
jd
={c|y(c)<y(c
jd
)且c∈cj}。函數f1基于動態規劃法規劃最短路徑。
[0122]
步驟s453:對于j=1和j=nc,按照縱坐標從大到小的方向規劃path
j3
,按照縱坐標從小到大的方向規劃path
j4
,path
j3
表示以c
ju
為起點,遍歷了cj中c
ju
以下所有采樣點的路徑,path
j4
表示以c
jd
為起點,遍歷了cj中c
jd
以上所有采樣點的路徑。縱坐標由地圖的底部到頂部逐漸增大。
[0123]
具體的,對于首尾單元,根據縱坐標,按照從上至下的方向規劃path
j3
,按照從下至上的方向規劃path
j4
。path
j3
表示以c
ju
為起點,遍歷了cj中c
ju
以下所有采樣點的路徑,path
j4
表示以c
jd
為起點,遍歷了cj中c
jd
以上所有采樣點的路徑。
[0124]
步驟s454:對于每一個1<j<nc,規劃以c
ju
為起點、c
jd
為終點,遍歷cj中所有初始采樣點的直線路徑path
j5
。
[0125]
對于非首尾單元,規劃以c
ju
為起點,c
jd
為終點,遍歷cj中所有初始采樣點的直線路徑path
j5
。
[0126]
步驟s455:通過path
j1
到path
j5
的不同組合形成了以c
border
的四個角作為起始點、遍歷c
border
中所有采樣點的子區域內路徑path
i1
到path
i4
。
[0127]
其中,若nc為偶數,則以左上角為起點的路徑path
i1
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以左下角為起點的路徑path
i2
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以右上角為起點的路徑以右下角為起點的路徑其中,表示與path路徑相同、反向相反。邊界區域備選內部遍歷路徑規劃算法如下:
[0128][0129]
如圖12(a)所示為一實施例中,對某個子區域,以其左上角為起點規劃的path
i1
,圖12(b)所示則為以左下角為起點規劃的path
i2
。其中圓形點為初始采樣點,三角形點為補充采樣點,虛線表示了單元的分割。
[0130]
在一實施例中,當為每個邊界區域規劃出路徑path
i1
到path
i4
后,還包括:
[0131]
步驟ss456:基于所有邊界區域c
border
的路徑path
i1
到path
i4
,通過動態規劃方法規劃出每個邊界區域c
border
的內部遍歷路徑起點和子區域的訪問順序,從而得到每個邊界區域c
border
的遍歷路徑。
[0132]
同樣,對于所有的內部區域c
inside
,也可以通過動態規劃方法規劃出每個內部區域c
inside
的內部遍歷路徑起點和子區域的訪問順序,從而得到內部區域的遍歷路徑。
[0133]
具體的,使用動態規劃方法通過最小化來規劃遍歷所有的某類子區域的路徑。d(t,i,q)為從倉庫出發,遍歷t中所有子單元中的目標點并結束于子區域i的角點q的最短路徑,其中i∈t,且表示目標子單元的子集。d(t,i,q)的計
算方式為:
[0134][0135]
當t只包括一個子單元時,d(t,i,q)等于g(0,0,i,q),g(k,l,i,q)表示從出發于子區域k的角點l,遍歷子區域i內的每一個目標點,并結束于角點q的路徑長度。(0,0)表示倉庫x0,g(k,l,i,q)可以由f(i,q)得到:其中當時,d(t,i,c
iq
)為無窮大。d(x,y)為從位置x到位置y的路徑長度。在計算d(x,y)時,首先判斷x到y的直線路徑是否會產生碰撞。若未發生碰撞,d(x,y)即為x到y的直線距離,否則使用a
*
算法來規劃從x到y的路徑來得到d(x,y)。當t中包含多個子區域時,d(t,i,q)等于d(t-{i},k,l)+g(k,l,i,q)的最小值,其中子區域k為在路徑序列中在i之前的子區域,l為子單元k的退出點。
[0136]
其中,g(k,l,i,q)由如下的方式計算:
[0137][0138]
其中,d(a,b)表示a和b之間的最短路徑長度,表示以角點q為起點的單元i內采樣點遍歷路徑。
[0139]
步驟ss456中子區域入口和訪問順序優化算法的偽代碼如下,其中,minpath為返回的子區域遍歷路徑,mindis為返回的minpath的長度。算法使用h來保存d對應的路徑。算法的輸入為子區域的集合和其對應的子區域的備選內部遍歷路徑,子區域的集合為邊界區域或內部區域的集合;輸出則為遍歷子區域內所有目標點的路徑及其長度。
[0140][0141]
在規劃路徑之后,控制n個機器人形成編隊沿著內部區域遍歷路徑進行采樣,控制1個機器人沿著邊界區域遍歷路徑進行采樣,根據采樣結果對未被采樣的其他位置進行高斯回歸預測。在傳統技術中,在使用多個機器人進行區域監測時,通常的方式為將目標區域被分為多個子區域,每個機器人執行子區域內的監測任務。此種方式將多機器人系統視作多個機器人的簡單疊加,沒有發揮出多機器人系統的優勢。而本技術中,將多機器人組成編隊來對目標區域進行監測,通過機器人之間的協作,可以使得系統具有更強的魯棒性和更復雜的功能。
[0142]
以下,以一具體的實施例進行說明。
[0143]
用一個五個機器人組成的機器人系統為例說明該面向區域檢測的多機器人編隊遍歷路徑規劃算法的效果。五個機器人中,四個機器人組成圖13所示的機器人編隊,對內部區域進行遍歷,一個機器人對邊界區域進行遍歷,倉庫的坐標為場地的正中央:(20,20)。在一個40m
×
40m的環境中,使用圓形嵌入算法生成了一個在2000
×
2000網格上的空間隨機過程,使用雙線性插值法來得到網格點之間的場值,將該值作為待監測標量場f的真實值,l和σ0的值分別為6和10,f的最大值和最小值分別為39和0。如圖14所示,機器人在采樣點p∈i2處的測量值為f(p+ε
p
)+εs,為定位誤差,為傳感測量誤差。長度尺度l和信號方差σ0在生成空間隨機過程時手動給出。在獲得在各個采樣點的測量
值以后,根據這些測量值通過高斯回歸對其他位置的值進行預測。高斯回歸操作通過matlab提供的gpml工具箱來實現。所進行的各步驟則均由python語言在linux環境下實現。
[0144]
令δ為f的最大值與最小值的差的10%,即得δ=3.9,則計算出的r
max
為1.19。采樣點部署位置和機器人的路徑如圖15所示。
[0145]
實驗的預測結果則如圖16所示,真實值和預測值之間的差則如圖17所示。可以觀測到最大誤差為0.33,小于δ=3.9,滿足預先規定的精度要求。
[0146]
本領域的技術人員容易理解,以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
技術特征:
1.一種面向區域監測的多機器人遍歷方法,其特征在于,包括:步驟s1:確定采樣半徑r
max
;步驟s2:基于目標區域的柵格地圖,對采樣點進行初始化部署,舍棄落入障礙物及目標區域外的采樣點x
obs
,形成初始采樣點集x
init
;步驟s3:完成所有采樣點x
i
∈x
obs
覆蓋空洞的再部署,形成補充采樣點集,x
extra
對于每個采樣點進行再部署的步驟包括:步驟s31:確定x
i
覆蓋區域邊界l
cover
,l
cover
上各柵格滿足到x
i
的距離不大于r
max
且至少一個相鄰柵格到x
i
的距離大于r
max
;將l
cover
內部到最近采樣點x
′
∈x
init
ux
extra
的距離大于r
max
的自由柵格和邊界柵格編號為f
i
;在編號為f
i
的柵格a中,若存在有編號不為f
i
且未被標記的相鄰柵格,則對柵格a進行標記;將l
cover
內部相鄰的標記柵格組成對應采樣點x
i
的覆蓋空洞的邊界集合border
i
={b
i1
,b
i2
,...b
ij
...,b
in
},n≥1,其中,b
ij
表示采樣點x
i
的第j個覆蓋空洞的邊界;步驟s32:做b
ij
的最小外接圓c,若圓心o(x,y)所在的柵格為自由柵格,則將柵格x
new
=o(x,y)添加至補充采樣點集x
extra
中,否則,將b
ij
中距離o(x,y)最近的自由柵格x
new
=o
′
(x,y)加入到x
extra
中,完成b
ij
的再部署;在完成邊界集合border
i
的再部署后,判斷是否存在b
ij
的最小外接圓c的圓心所在柵格不為自由柵格,若是,則返回步驟s31,若否,則表示完成對采樣點x
i
覆蓋空洞的再部署;步驟s4:控制多機器人遍歷初始采樣點和補充采樣點x
init
∪x
extra
。2.如權利要求1所述的面向區域監測的多機器人遍歷方法,其特征在于,對采樣點進行初始化部署的方法包括:采用正三角形的模式進行采樣點的部署,每個采樣點的覆蓋邊界將目標區域分割為蜂窩網絡狀的圖形。3.如權利要求1所述的面向區域監測的多機器人遍歷方法,其特征在于,對柵格a進行標記的方法為將柵格a的編號乘以負數變為負編號,將具有負編號的柵格作為標記柵格,當具有正編號的柵格作為未標記的柵格。4.如權利要求1所述的面向區域監測的多機器人遍歷方法,其特征在于,步驟s4包括:步驟s41:對地圖進行預處理,向左右兩側擴展每個障礙物的邊界,使得[u
l
,o
l
)和[u
l
,o
r
]內的初始采樣點列數均可以被n整除,其中,n+1為機器人的數量,u
l
為目標區域的左邊界,o
l
和o
r
分別為障礙物擴展后的左邊界和右邊界;步驟s42:使用牛耕分解法對預處理后的地圖進行縱向分解得到多個子區域,除最右側子區域外,每個子區域的初始采樣點的列數均可被n整除;步驟s43:當最右側子區域中的初始采樣點的列數大于n時,則將最右側子區域分為左側區域和右側區域,其中,左側區域中的初始采樣點的列數能被n整除,右側區域中的初始采樣點的列數小于n;步驟s44:將子區域橫向分解為邊界區域c
border
和內部區域c
inside
,內部區域滿足不包含補充采樣點且初始采樣點的列數可被n整除和初始采樣點的行數為偶數三個條件,否則為邊界區域;步驟s45:規劃遍歷路徑,對于內部區域,控制n個機器人組成機器人編隊進行遍歷,對于邊界區域,控制1個機器人進行遍歷,根據采樣結果對未被采樣的其他位置進行高斯回歸
預測。5.如權利要求4所述的面向區域監測的多機器人遍歷方法,其特征在于,在步驟s44中一個子區域分為一個c
inside
和位于c
inside
上方的上邊界區域和位于c
inside
下方的下邊界區域;步驟s44包括:先初步確定上邊界區域的頂端為r
uu
、上邊界區域的初始底端為r
ud
,下邊界區域的初始頂端為r
du
、下邊界區域的底端為r
dd
;再將r
ud
向下平移至第一個含有初始采樣點的行作為c
inside
的上邊界r
iu
,將r
du
向上平移至第一個含有初始采樣點的行作為c
inside
的下邊界r
id
,且r
id
與r
iu
之間含有偶數行初始采樣點,上邊界區域的上下范圍更新為[r
uu
,r
iu-1],下邊界區域的上下范圍更新為[r
id
+1,r
du
],其中,r
iu-1表示朝頂端方向上移一行,r
id
+1表示朝底端方向下移一行。6.如權利要求4所述的面向區域監測的多機器人遍歷方法,其特征在于,對于邊界區域的遍歷方法包括:步驟s451:將每個邊界區域c
border
縱向分解為多個單元的集合c
j
為第j單元,n
c
為當前邊界區域的初始采樣點的列數,每個單元僅包含一列初始采樣點;步驟s452:對于每一個j<n
c
,規劃path
j1
和path
j2
,path
j1
表示以c
ju
為起點,以c
(j+1)u
為終點,遍歷了c
ju
和c
(j+1)u
中所有采樣點的最短路徑,path
j2
表示以c
jd
為起點,以c
(j+1)d
為終點,遍歷了c
jd
和c
(j+1)d
中所有采樣點的最短路徑,c
ju
和c
jd
分別為c
j
單元最頂部和最底部的初始采樣點,c
ju
表示c
j
中縱坐標大于c
ju
的采樣點的集合,c
jd
表示c
j
中縱坐標小于c
jd
的采樣點的集合;步驟s453:對于j=1和j=n
c
,按照縱坐標從大到小的方向規劃path
j3
,按照縱坐標從小到大的方向規劃path
j4
,path
j3
表示以c
ju
為起點,遍歷了c
j
中c
ju
以下所有采樣點的路徑,path
j4
表示以c
jd
為起點,遍歷了c
j
中c
jd
以上所有采樣點的路徑;縱坐標由地圖底部到頂部逐漸增大;步驟s454:對于每一個1<j<n
c
,規劃以c
ju
為起點、c
jd
為終點,遍歷c
j
中所有初始采樣點的直線路徑path
j5
;步驟s455:通過path
j1
到path
j5
的不同組合形成了以c
border
的四個角作為起始點、遍歷c
border
中所有采樣點的子區域內路徑path
i1
到path
i4
。7.如權利要求6所述的面向區域監測的多機器人遍歷方法,其特征在于,若n
c
為偶數,則以左上角為起點的路徑path
i1
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以左下角為起點的路徑path
i2
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以右上角為起點的路徑以右下角為起點的路徑其中,表示與path路徑相同、反向相反;若n
c
為奇數,則以左上角為起點的路徑path
i1
為以為起始路徑方向、以為結束路徑方向連成的之字形路徑,以左下角為起點的路徑path
i2
為以為起始路徑
方向、以為結束路徑方向連成的之字形路徑,以右上角為起點的路徑以右下角為起點的路徑8.如權利要求4所述的面向區域監測的多機器人遍歷方法,其特征在于,針對所有邊界區域c
border
,通過動態規劃方法規劃出每個邊界區域c
border
的內部遍歷路徑起點和子區域的訪問順序,從而得到邊界區域的遍歷路徑;針對所有內部區域c
inside
,通過動態規劃方法規劃出每個內部區域c
inside
的內部遍歷路徑起點和子區域的訪問順序,從而得到內部區域的遍歷路徑。9.如權利要求8所述的面向區域監測的多機器人遍歷方法,其特征在于,所述動態規劃方法通過最小化來規劃遍歷同一類子區域的路徑,表示某類子區域的集合,d(t,i,q)的計算方式為:其中,g(k,l,i,q)表示出發于子區域k的角點l,遍歷子區域i內所有目標點,并結束于角點q的路徑長度,k為在路徑序列中在子區域i之前的子區域,(0,0)表示倉庫x0,path
iq1
表示子區域i內部遍歷路徑的起點;g(k,l,i,q)的計算方式:其中,d(a,b)表示a和b之間的最短路徑長度,s
kl1
表示區域k內以角點l為起點的遍歷路徑的第一個點,表示區域i內以角點q為起點的遍歷路徑的最后一個點,表示區域i內以角點q為起點的遍歷路徑的第m個點,n
i
表示區域i內遍歷路徑上采樣點的數量,表示以角點q為起點的單元i內采樣點遍歷路徑。10.如權利要求6或9所述的面向區域監測的多機器人遍歷方法,其特征在于,在規劃兩點之間的路徑時,若兩點之間的直線路徑與障礙物沖突,使用a*算法對兩點之間的路徑進行規劃。
技術總結
本發明公開了面向區域監測的多機器人遍歷方法,其包括:基于目標區域的柵格地圖,對采樣點進行初始化部署以及舍棄采樣點覆蓋空洞修復的再部署;再部署的步驟包括:確定任意舍棄點x
