本發(fā)明涉及一種用于無線傳感器網(wǎng)絡(luò)的定位方法。
背景技術(shù):
無線傳感器網(wǎng)絡(luò)應(yīng)用越來越廣泛,特別是定位技術(shù),在車聯(lián)網(wǎng)中的車輛定位、煤礦井下人員定位、變電站作業(yè)人員跟蹤定位、家庭人員定位、養(yǎng)老院人員定位、醫(yī)院人員定位等。目前無線傳感器網(wǎng)絡(luò)中的定位方法很多,比如質(zhì)心定位法、三邊定位法、極大似然估計(jì)法等。質(zhì)心定位算法簡單,誤差卻很大,一般難以滿足應(yīng)用的需求,三邊定位算法在距離測算精確的情況下,效果很好,但對(duì)于基于rssi(receivedsignalstrengthindicatinn接收的信號(hào)強(qiáng)度指示)的測距方法,實(shí)際測距誤差很大,遠(yuǎn)遠(yuǎn)不能滿足三邊定位算法的精度,而且三邊定位算法相對(duì)質(zhì)心定位算法復(fù)雜,極大似然估計(jì)定位方法與三邊定位算法類似,需要利用rssi測距,而且計(jì)算復(fù)雜度較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是針對(duì)上述問題,提出一種用于無線傳感器網(wǎng)絡(luò)的定位方法。
本發(fā)明的技術(shù)方案是:
一種用于無線傳感器網(wǎng)絡(luò)的定位方法,其特征在于,如圖1所示,包括以下步驟:
s1、移動(dòng)節(jié)點(diǎn)通過mac幀發(fā)起定位請(qǐng)求:移動(dòng)節(jié)點(diǎn)發(fā)出只有一跳的定位請(qǐng)求幀到與其相鄰的固定節(jié)點(diǎn);
s2、固定節(jié)點(diǎn)接收定位請(qǐng)求幀:固定節(jié)點(diǎn)接收到定位請(qǐng)求幀后,判斷該定位請(qǐng)求幀是否被重復(fù)接收,若是,則丟棄該幀;若否,則固定節(jié)點(diǎn)將獲取移動(dòng)節(jié)點(diǎn)短地址作為目的地址,并向移動(dòng)節(jié)點(diǎn)發(fā)送一跳的響應(yīng)定位幀;
s3、移動(dòng)節(jié)點(diǎn)定位:移動(dòng)節(jié)點(diǎn)接收到定位響應(yīng)幀后,通過如下方法對(duì)移動(dòng)節(jié)點(diǎn)進(jìn)行定位,如圖2所示:
s31、移動(dòng)節(jié)點(diǎn)判斷是否在預(yù)設(shè)的時(shí)間內(nèi)接收到定位響應(yīng)幀,若是,則進(jìn)入步驟s32;若否,則回到步驟s1;
s32、移動(dòng)節(jié)點(diǎn)判斷是否已經(jīng)接收到超過3個(gè)固定節(jié)點(diǎn)的定位響應(yīng)幀,若是,則選擇3個(gè)接收信號(hào)強(qiáng)度指示最好的固定節(jié)點(diǎn),固定節(jié)點(diǎn)到移動(dòng)節(jié)點(diǎn)的距離根據(jù)接收信號(hào)強(qiáng)度指示符獲得,將固定節(jié)點(diǎn)相對(duì)于移動(dòng)節(jié)點(diǎn)的位置表示為以移動(dòng)節(jié)點(diǎn)為中心、移動(dòng)節(jié)點(diǎn)到固定節(jié)點(diǎn)的距離的2倍為邊長的正方形,將正方形置于平面直角坐標(biāo)系中,則選擇的3個(gè)固定節(jié)點(diǎn)采用如下向量表示:
n1=(x11,x12,y11,y12);
n2=(x21,x22,y21,y22);
n3=(x31,x32,y31,y32);
其中,ni表示固定節(jié)點(diǎn)位置,xi1表示正方形在x軸上的左邊界,xi2表示正方形在x軸上的右邊界,yi1表示正方形在y軸上的下邊界,yi2表示正方形在y軸上的上邊界,下標(biāo)i表示固定節(jié)點(diǎn)的序號(hào);
獲得3個(gè)固定節(jié)點(diǎn)的位置坐標(biāo)向量后進(jìn)入步驟s33;若否,則判斷是否只接收到3個(gè)固定節(jié)點(diǎn)的定位響應(yīng)幀,若是,則采用上述方法獲得3個(gè)固定節(jié)點(diǎn)的位置坐標(biāo)向量并進(jìn)入步驟s33;若否,則判斷是否接收到2個(gè)固定節(jié)點(diǎn)的定位響應(yīng)幀,若是,則采用上述方法獲得2個(gè)固定節(jié)點(diǎn)的位置坐標(biāo)向量:
n1=(x11,x12,y11,y12);
n2=(x21,x22,y21,y22);
并進(jìn)入步驟s34,若否,則采用上述方法獲得1個(gè)固定節(jié)點(diǎn)的位置坐標(biāo)向量:
n1=(x11,x12,y11,y12);
并進(jìn)入步驟s35;
s33、通過如下公式獲得移動(dòng)節(jié)點(diǎn)的位置坐標(biāo)向量:
x00=max{min{x11,x12},min{x21,x22},min{x31,x32}};
x01=max{min{x11,x12},min{x21,x22},min{x31,x32}};
y00=max{min{y11,y12},min{y21,y22},min{y31,y32}};
y01=max{min{y11,y12},min{y21,y22},min{y31,y32}};
x00,x01,y00,y01,為3個(gè)固定節(jié)點(diǎn)所形成正方形的重疊區(qū)域向量坐標(biāo);
則獲得移動(dòng)節(jié)點(diǎn)的坐標(biāo)(x0,y0)如下:
x0=(x00+x01)/2;
y0=(y00+y01)/2;
進(jìn)入步驟s4;
s34、通過如下公式獲得移動(dòng)節(jié)點(diǎn)的位置坐標(biāo)向量:
x00=max{min{x11,x12},min{x21,x22}};
x01=max{min{x11,x12},min{x21,x22}};
y00=max{min{y11,y12},min{y21,y22}};
y01=max{min{y11,y12},min{y21,y22}};
x00,x01,y00,y01,為3個(gè)固定節(jié)點(diǎn)所形成正方形的重疊區(qū)域向量坐標(biāo);
則獲得移動(dòng)節(jié)點(diǎn)的坐標(biāo)(x0,y0)如下:
x0=(x00+x01)/2;
y0=(y00+y01)/2;
進(jìn)入步驟s4;
s35、獲得移動(dòng)節(jié)點(diǎn)的坐標(biāo)(x0,y0)如下:
x0=(x11+x12)/2;
y0=(y11+y12)/2;
s4、將步驟s3中獲得的定位坐標(biāo)發(fā)送到匯聚節(jié)點(diǎn),并由匯聚節(jié)點(diǎn)將結(jié)果發(fā)送到計(jì)算機(jī)設(shè)備。
本發(fā)明的有益效果是:相對(duì)于傳統(tǒng)方法,本發(fā)明的方法具有較低的算法復(fù)雜度和較高的定位精度。
附圖說明
圖1為本發(fā)明定位方法的邏輯示意圖;
圖2為本發(fā)明中對(duì)移動(dòng)節(jié)點(diǎn)定位的流程示意圖;
圖3為移動(dòng)節(jié)點(diǎn)在多個(gè)固定節(jié)點(diǎn)中的位置示意圖;
圖4為移動(dòng)節(jié)點(diǎn)和固定節(jié)點(diǎn)形成的正方形示意圖;
圖5為為移動(dòng)節(jié)點(diǎn)在多個(gè)固定節(jié)點(diǎn)中的位置坐標(biāo)示意圖。
具體實(shí)施方式
下面結(jié)合附圖,詳細(xì)描述本發(fā)明的技術(shù)方案。
在本發(fā)明的技術(shù)方案中,使用虛擬坐標(biāo)來定義固定節(jié)點(diǎn)的位置。作為二維平面定位算法,通常至少需要三個(gè)固定節(jié)點(diǎn)來建立移動(dòng)節(jié)點(diǎn)的位置,如圖3所示,為本發(fā)明采用的rill定位算法的模型。圓圈表示固定節(jié)點(diǎn),三角形表示移動(dòng)節(jié)點(diǎn)的實(shí)際位置,五角星代表使用本發(fā)明的rill定位算法的移動(dòng)節(jié)點(diǎn)的定位結(jié)果。在圖3中,可以看到有三個(gè)固定節(jié)點(diǎn)和一個(gè)移動(dòng)節(jié)點(diǎn)。假設(shè)三個(gè)固定節(jié)點(diǎn)n1,n2和n3的位置坐標(biāo)分別由(x1,y1),(x2,y2)和(x3,y3)表示。
當(dāng)移動(dòng)節(jié)點(diǎn)接收到來自三個(gè)固定節(jié)點(diǎn)的位置信息時(shí),移動(dòng)節(jié)點(diǎn)可以經(jīng)由接收到的信號(hào)強(qiáng)度指示符(rssi)來估計(jì)位置信息的發(fā)送者與其自身之間的距離。采用d1,d2和d3來表示三個(gè)固定節(jié)點(diǎn)和移動(dòng)節(jié)點(diǎn)之間的距離估計(jì)的結(jié)果。例如,當(dāng)移動(dòng)節(jié)點(diǎn)從固定節(jié)點(diǎn)n2接收到位置信息分組時(shí),它將首先估計(jì)n2與其本身之間的距離d2。一旦獲得距離d2,移動(dòng)節(jié)點(diǎn)可以利用固定節(jié)點(diǎn)n2的位置信息(x2,y2)以及距離d2來獲得正方形。正方形的中心是n2的位置坐標(biāo),正方形的邊長是d2的兩倍。當(dāng)移動(dòng)節(jié)點(diǎn)接收到三個(gè)固定節(jié)點(diǎn)的所有位置信息時(shí),移動(dòng)節(jié)點(diǎn)應(yīng)該能夠得到三個(gè)正方形具有共同重疊區(qū)域的結(jié)果。在圖3中,陰影區(qū)域表示重疊部分??梢钥吹揭苿?dòng)節(jié)點(diǎn)實(shí)際上處于重疊區(qū)域。
如圖4所示,可以看到正方形可以由四個(gè)數(shù)據(jù)(xi1,xi2,yi1,yi2)表示,其中xi1是x軸上的正方形的左邊界,xi2是x軸上正方形的右邊界。類似地,yi1是y軸上的正方形的下邊界,yi2是y軸上的正方形的上邊界。假設(shè)固定節(jié)點(diǎn)ni的坐標(biāo)為(xi,yi),固定節(jié)點(diǎn)ni和移動(dòng)節(jié)點(diǎn)之間的距離為di,可以使用下面的公式(1)計(jì)算(xi1,xi2,yi1,yi2):
令vi=(xi1,xi2,yi1,yi2),則該正方形可以表示為一個(gè)向量形式,可以獲得該虛擬坐標(biāo)中固定節(jié)點(diǎn)的所有向量。當(dāng)移動(dòng)節(jié)點(diǎn)接收到三個(gè)固定節(jié)點(diǎn)的位置信息時(shí),可以得到如圖5所示的結(jié)果。
在圖3中,令v1=(x11,x12,y11,y12),v2=(x21,x22,y21,y22)和v3=(x31,x32,y31,y32)。通過圖4,很容易得到重疊區(qū)域的矢量表示。令v0=(x00,x01,y00,y01)來表示重疊區(qū)域。得到圖4中v0=(x31,x22,y11,y22)的重疊區(qū)域的矢量表示是很容易的。實(shí)際上,重疊區(qū)域的左邊界是三個(gè)正方形的最大左邊界,重疊區(qū)域的右邊界是三個(gè)正方形的最小右邊界。類似地,重疊區(qū)域的下邊界是三個(gè)正方形的最大下邊界,并且重疊區(qū)域的頂邊界是三個(gè)正方形的最小上邊界??梢允褂霉?2)來計(jì)算重疊區(qū)域的向量表示:
當(dāng)利用公式(3)建立重疊區(qū)域的向量表示法后,則可以確定移動(dòng)節(jié)點(diǎn)的區(qū)域范圍??梢灾酪苿?dòng)節(jié)點(diǎn)必須位于重疊區(qū)域。在討論其他情況之前,首先介紹如何在虛擬坐標(biāo)系中獲取移動(dòng)節(jié)點(diǎn)的最終位置。無線傳感器網(wǎng)絡(luò)中的節(jié)點(diǎn)具有一些特征,例如有限的計(jì)算能力,有限的存儲(chǔ)容量以及有限的能量。為了簡化算法的復(fù)雜度,使用重疊區(qū)域的質(zhì)心來表示移動(dòng)節(jié)點(diǎn)的最終位置。計(jì)算過程如公式(3)所示??梢酝ㄟ^這個(gè)公式來估計(jì)移動(dòng)節(jié)點(diǎn)(x0,y0)的位置:
與傳統(tǒng)的其他方法相比,本發(fā)明的方法具有較低的算法復(fù)雜度。在原理上rill類似于三邊定位算法。然而,三邊定位算法的復(fù)雜度為o(n3)。三邊定位算法需要進(jìn)行矩陣求逆,這是非常復(fù)雜的。rill的復(fù)雜度為o(n),它可以在移動(dòng)傳感器節(jié)點(diǎn)上運(yùn)行。由于較高的算法復(fù)雜度,一些定位算法難以在移動(dòng)節(jié)點(diǎn)上運(yùn)行,這增加了鏈路負(fù)載和能量消耗。雖然質(zhì)心定位算法的復(fù)雜度與rill的順序相同,但是與rill相比,質(zhì)心定位算法的精度更差。
在本發(fā)明采用的在rill定位算法中,使用mac數(shù)據(jù)幀發(fā)送定位請(qǐng)求和響應(yīng)。在定位請(qǐng)求幀中,使用1個(gè)字節(jié)來定義定位請(qǐng)求幀的序列號(hào),用于判斷請(qǐng)求幀是否被重復(fù)接收。此外,使用1個(gè)字節(jié)來定義幀的類型,用于區(qū)分定位幀和數(shù)據(jù)幀。定位響應(yīng)幀中的序列號(hào)用于識(shí)別移動(dòng)節(jié)點(diǎn)的相應(yīng)請(qǐng)求幀。幀的類型用于區(qū)分定位幀與數(shù)據(jù)幀。本發(fā)明使用8個(gè)字節(jié)將固定節(jié)點(diǎn)的虛擬坐標(biāo)傳送到移動(dòng)節(jié)點(diǎn)進(jìn)行定位??梢栽趍ac頭的地址字段中獲取所有地址消息。此外,當(dāng)接收到響應(yīng)幀時(shí),可以經(jīng)由寄存器獲得rssi。