本發(fā)明涉及通訊技術(shù)領(lǐng)域,特別是涉及一種基于zigbee技術(shù)的室內(nèi)定位方法。
背景技術(shù):
在室內(nèi)環(huán)境無法使用衛(wèi)星定位時(shí),使用室內(nèi)定位技術(shù)作為衛(wèi)星定位的輔助定位,解決衛(wèi)星信號(hào)到達(dá)地面時(shí)較弱、不能穿透建筑物的問題。最終定位物體當(dāng)前所處的位置。
除通訊網(wǎng)絡(luò)的蜂窩定位技術(shù)外,常見的室內(nèi)無線定位技術(shù)還有:wi-fi、藍(lán)牙、紅外線、超寬帶、rfid、zigbee和超聲波。
zigbee是一種近距離、低復(fù)雜度、低功耗、低速率、低成本的雙向無線通訊技術(shù)。它介于rfid和藍(lán)牙之間,可以通過傳感器之間的相互協(xié)調(diào)通信進(jìn)行設(shè)備的位置定位。這些傳感器只需要很少的能量,以接力的方式通過無線電波將數(shù)據(jù)從一個(gè)傳感器傳到另一個(gè)傳感器,所以zigbee最顯著的技術(shù)特點(diǎn)是它的低功耗和低成本。其主要用于距離短、功耗低且傳輸速率不高的各種電子設(shè)備之間進(jìn)行數(shù)據(jù)傳輸以及典型的有周期性數(shù)據(jù)、間歇性數(shù)據(jù)和低反應(yīng)時(shí)間數(shù)據(jù)傳輸?shù)膽?yīng)用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于zigbee技術(shù)的室內(nèi)定位方法,包括:
s1:判斷待測(cè)節(jié)點(diǎn)屬于哪個(gè)三角形區(qū)域的待測(cè)節(jié)點(diǎn)分區(qū);
s2:在每個(gè)三角形區(qū)域內(nèi)迭代計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位方法中,所述s1具體包括以下步驟:
s11:判斷所有待測(cè)節(jié)點(diǎn)是否都已添加,若有沒有添加的,則該待測(cè)節(jié)點(diǎn)接收所有錨點(diǎn)廣播的信標(biāo)信號(hào),直至全部添加完成;
s12:依次計(jì)算待測(cè)節(jié)點(diǎn)與各錨點(diǎn)的連通度并從大到小排序;并選取前兩個(gè)錨點(diǎn)做三角形的兩個(gè)頂點(diǎn);
s13:判斷第三個(gè)連通度與第四個(gè)連通度的大小,如不相等則選第三個(gè)錨點(diǎn),如相等則選任意一個(gè)錨點(diǎn);做三角形的第三個(gè)定點(diǎn);
s14:把待測(cè)節(jié)點(diǎn)按三角形區(qū)域分類加入到待測(cè)節(jié)點(diǎn)數(shù)組中。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位方法中,在s14后還包括步驟:再次判斷所有待測(cè)節(jié)點(diǎn)是否都添加完成,若都完成則結(jié)束。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位方法中,所述s2具體包括以下步驟:
s21:三角形區(qū)域內(nèi)所有待測(cè)節(jié)點(diǎn)接收這個(gè)三角形三個(gè)錨點(diǎn)的信標(biāo)信號(hào),并計(jì)算連通度;
s22:將所述連通度與閾值進(jìn)行比對(duì);當(dāng)有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);當(dāng)有相同待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取任意一個(gè)待測(cè)節(jié)點(diǎn);當(dāng)沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);
s23:當(dāng)為有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值或有相同待測(cè)節(jié)點(diǎn)滿足閾值的情況時(shí),采用質(zhì)心算法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);當(dāng)為沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí),采用三邊法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
s24:這個(gè)節(jié)點(diǎn)作為迭代的第一個(gè)節(jié)點(diǎn),添加該待測(cè)節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
s25:計(jì)算該三角形中其它待測(cè)節(jié)點(diǎn)與該第一個(gè)節(jié)點(diǎn)的跳數(shù),并進(jìn)行排序;
s26:判斷有無待測(cè)節(jié)點(diǎn),如果有選跳數(shù)最小待測(cè)節(jié)點(diǎn)用極大似然法計(jì)算其坐標(biāo);將新計(jì)算出坐標(biāo)的節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
s27:再次判斷有無待測(cè)節(jié)點(diǎn),如果沒有則完成所有待測(cè)節(jié)點(diǎn)迭代計(jì)算,進(jìn)行結(jié)果顯示。
相應(yīng)的,本發(fā)明還提供一種基于zigbee技術(shù)的室內(nèi)定位系統(tǒng),包括:
判斷模塊,用于判斷待測(cè)節(jié)點(diǎn)屬于哪個(gè)三角形區(qū)域的待測(cè)節(jié)點(diǎn)分區(qū);
待測(cè)節(jié)點(diǎn)坐標(biāo)模塊,用于在每個(gè)三角形區(qū)域內(nèi)迭代計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位系統(tǒng)中,所述判斷模塊包括:
添加模塊,用于判斷所有待測(cè)節(jié)點(diǎn)是否都已添加,若有沒有添加的,則該待測(cè)節(jié)點(diǎn)接收所有錨點(diǎn)廣播的信標(biāo)信號(hào),直至全部添加完成;
第一第二頂點(diǎn)模塊,用于依次計(jì)算待測(cè)節(jié)點(diǎn)與各錨點(diǎn)的連通度并從大到小排序;并選取前兩個(gè)錨點(diǎn)做三角形的兩個(gè)頂點(diǎn);
第三頂點(diǎn)模塊,用于判斷第三個(gè)連通度與第四個(gè)連通度的大小,如不相等則選第三個(gè)錨點(diǎn),如相等則選任意一個(gè)錨點(diǎn);做三角形的第三個(gè)定點(diǎn);
待測(cè)節(jié)點(diǎn)數(shù)組模塊,用于把待測(cè)節(jié)點(diǎn)按三角形區(qū)域分類加入到待測(cè)節(jié)點(diǎn)數(shù)組中。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位系統(tǒng)中,還包括再次添加模塊,用于再次判斷所有待測(cè)節(jié)點(diǎn)是否都添加完成,若都完成則結(jié)束。
進(jìn)一步的,在所述的基于zigbee技術(shù)的室內(nèi)定位系統(tǒng)中,所述待測(cè)節(jié)點(diǎn)坐標(biāo)模塊包括:
連通度模塊,用于三角形區(qū)域內(nèi)所有待測(cè)節(jié)點(diǎn)接收這個(gè)三角形三個(gè)錨點(diǎn)的信標(biāo)信號(hào),并計(jì)算連通度;
閾值比對(duì)模塊,用于將所述連通度與閾值進(jìn)行比對(duì);當(dāng)有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);當(dāng)有相同待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取任意一個(gè)待測(cè)節(jié)點(diǎn);當(dāng)沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);
坐標(biāo)模塊,用于當(dāng)為有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值或有相同待測(cè)節(jié)點(diǎn)滿足閾值的情況時(shí),采用質(zhì)心算法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);當(dāng)為沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí),采用三邊法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);
第一個(gè)節(jié)點(diǎn)模塊,用于這個(gè)節(jié)點(diǎn)作為迭代的第一個(gè)節(jié)點(diǎn),添加該待測(cè)節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
排序模塊,用于計(jì)算該三角形中其它待測(cè)節(jié)點(diǎn)與該第一個(gè)節(jié)點(diǎn)的跳數(shù),并進(jìn)行排序;
新坐標(biāo)模塊,用于判斷有無待測(cè)節(jié)點(diǎn),如果有選跳數(shù)最小待測(cè)節(jié)點(diǎn)用極大似然法計(jì)算其坐標(biāo);將新計(jì)算出坐標(biāo)的節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
顯示模塊,用于再次判斷有無待測(cè)節(jié)點(diǎn),如果沒有則完成所有待測(cè)節(jié)點(diǎn)迭代計(jì)算,進(jìn)行結(jié)果顯示。
本發(fā)明結(jié)合已有的質(zhì)心算法與abc算法無線定位算法,針對(duì)質(zhì)心算法的特性定位精度高和abc算法是定位成本低的特點(diǎn)提出了一種改進(jìn)定位方法。這種方法可以在降低質(zhì)心算法的成本的同時(shí),控制abc算法的定位精度在系統(tǒng)可接受范圍內(nèi)。
附圖說明
圖1是本發(fā)明基于zigbee技術(shù)的室內(nèi)定位方法流程圖;
圖2為本發(fā)明判斷待測(cè)節(jié)點(diǎn)屬于哪個(gè)三角形區(qū)域的待測(cè)節(jié)點(diǎn)分區(qū)流程圖;
圖3為本發(fā)每個(gè)三角形區(qū)域內(nèi)迭代計(jì)算待測(cè)節(jié)點(diǎn)坐標(biāo)的流程圖;
圖4為abc算法測(cè)試結(jié)果示意圖;
圖5為本發(fā)明試驗(yàn)結(jié)果示意圖;
圖6為質(zhì)心算法和本發(fā)明誤差對(duì)比圖;
圖7為abc算法和本發(fā)明誤差對(duì)比圖。
具體實(shí)施方式
以下通過特定的具體實(shí)例并結(jié)合附圖說明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說明書所揭示的內(nèi)容輕易地了解本發(fā)明的其它優(yōu)點(diǎn)與功效。本發(fā)明亦可通過其它不同的具體實(shí)例加以施行或應(yīng)用,本說明書中的各項(xiàng)細(xì)節(jié)亦可基于不同觀點(diǎn)與應(yīng)用,在不背離本發(fā)明的精神下進(jìn)行各種修飾與變更。
如圖1所示,本發(fā)明提供一種基于zigbee技術(shù)的室內(nèi)定位方法,包括:
s1:判斷待測(cè)節(jié)點(diǎn)屬于哪個(gè)三角形區(qū)域的待測(cè)節(jié)點(diǎn)分區(qū);
具體來說,如圖2所示,所述s1具體包括以下步驟:
s11:判斷所有待測(cè)節(jié)點(diǎn)是否都已添加,若有沒有添加的,則該待測(cè)節(jié)點(diǎn)接收所有錨點(diǎn)廣播的信標(biāo)信號(hào),直至全部添加完成;
s12:依次計(jì)算待測(cè)節(jié)點(diǎn)與各錨點(diǎn)的連通度并從大到小排序;并選取前兩個(gè)錨點(diǎn)做三角形的兩個(gè)頂點(diǎn);
s13:判斷第三個(gè)連通度與第四個(gè)連通度的大小,如不相等則選第三個(gè)錨點(diǎn),如相等則選任意一個(gè)錨點(diǎn);做三角形的第三個(gè)定點(diǎn);
s14:把待測(cè)節(jié)點(diǎn)按三角形區(qū)域分類加入到待測(cè)節(jié)點(diǎn)數(shù)組中。
s15:再次判斷所有待測(cè)節(jié)點(diǎn)是否都添加完成,若都完成則結(jié)束。
s2:在每個(gè)三角形區(qū)域內(nèi)迭代計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
具體來說,如圖3所示,所述s2具體包括以下步驟:
s21:三角形區(qū)域內(nèi)所有待測(cè)節(jié)點(diǎn)接收這個(gè)三角形三個(gè)錨點(diǎn)的信標(biāo)信號(hào),并計(jì)算連通度;
s22:將所述連通度與閾值進(jìn)行比對(duì);當(dāng)有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);當(dāng)有相同待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取任意一個(gè)待測(cè)節(jié)點(diǎn);當(dāng)沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);
s23:當(dāng)為有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值或有相同待測(cè)節(jié)點(diǎn)滿足閾值的情況時(shí),采用質(zhì)心算法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);當(dāng)為沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí),采用三邊法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
s24:這個(gè)節(jié)點(diǎn)作為迭代的第一個(gè)節(jié)點(diǎn),添加該待測(cè)節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
s25:計(jì)算該三角形中其它待測(cè)節(jié)點(diǎn)與該第一個(gè)節(jié)點(diǎn)的跳數(shù),并進(jìn)行排序;
s26:判斷有無待測(cè)節(jié)點(diǎn),如果有選跳數(shù)最小待測(cè)節(jié)點(diǎn)用極大似然法計(jì)算其坐標(biāo);將新計(jì)算出坐標(biāo)的節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
s27:再次判斷有無待測(cè)節(jié)點(diǎn),如果沒有則完成所有待測(cè)節(jié)點(diǎn)迭代計(jì)算,進(jìn)行結(jié)果顯示。
相應(yīng)的,本發(fā)明還提供一種基于zigbee技術(shù)的室內(nèi)定位系統(tǒng),包括:判斷模塊和待測(cè)節(jié)點(diǎn)坐標(biāo)模塊;其中,
所述判斷模塊,用于判斷待測(cè)節(jié)點(diǎn)屬于哪個(gè)三角形區(qū)域的待測(cè)節(jié)點(diǎn)分區(qū);
具體來說,所述判斷模塊包括:
添加模塊,用于判斷所有待測(cè)節(jié)點(diǎn)是否都已添加,若有沒有添加的,則該待測(cè)節(jié)點(diǎn)接收所有錨點(diǎn)廣播的信標(biāo)信號(hào),直至全部添加完成;
第一第二頂點(diǎn)模塊,用于依次計(jì)算待測(cè)節(jié)點(diǎn)與各錨點(diǎn)的連通度并從大到小排序;并選取前兩個(gè)錨點(diǎn)做三角形的兩個(gè)頂點(diǎn);
第三頂點(diǎn)模塊,用于判斷第三個(gè)連通度與第四個(gè)連通度的大小,如不相等則選第三個(gè)錨點(diǎn),如相等則選任意一個(gè)錨點(diǎn);做三角形的第三個(gè)定點(diǎn);
待測(cè)節(jié)點(diǎn)數(shù)組模塊,用于把待測(cè)節(jié)點(diǎn)按三角形區(qū)域分類加入到待測(cè)節(jié)點(diǎn)數(shù)組中。
再次添加模塊,用于再次判斷所有待測(cè)節(jié)點(diǎn)是否都添加完成,若都完成則結(jié)束。
所述待測(cè)節(jié)點(diǎn)坐標(biāo)模塊,用于在每個(gè)三角形區(qū)域內(nèi)迭代計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo)。
具體來說,所述待測(cè)節(jié)點(diǎn)坐標(biāo)模塊包括:
連通度模塊,用于三角形區(qū)域內(nèi)所有待測(cè)節(jié)點(diǎn)接收這個(gè)三角形三個(gè)錨點(diǎn)的信標(biāo)信號(hào),并計(jì)算連通度;
閾值比對(duì)模塊,用于將所述連通度與閾值進(jìn)行比對(duì);當(dāng)有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);當(dāng)有相同待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取任意一個(gè)待測(cè)節(jié)點(diǎn);當(dāng)沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí)則選取滿足度最高的待測(cè)節(jié)點(diǎn);
坐標(biāo)模塊,用于當(dāng)為有多個(gè)待測(cè)節(jié)點(diǎn)滿足閾值或有相同待測(cè)節(jié)點(diǎn)滿足閾值的情況時(shí),采用質(zhì)心算法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);當(dāng)為沒有待測(cè)節(jié)點(diǎn)滿足閾值時(shí),采用三邊法計(jì)算待測(cè)節(jié)點(diǎn)的坐標(biāo);
第一個(gè)節(jié)點(diǎn)模塊,用于這個(gè)節(jié)點(diǎn)作為迭代的第一個(gè)節(jié)點(diǎn),添加該待測(cè)節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
排序模塊,用于計(jì)算該三角形中其它待測(cè)節(jié)點(diǎn)與該第一個(gè)節(jié)點(diǎn)的跳數(shù),并進(jìn)行排序;
新坐標(biāo)模塊,用于判斷有無待測(cè)節(jié)點(diǎn),如果有選跳數(shù)最小待測(cè)節(jié)點(diǎn)用極大似然法計(jì)算其坐標(biāo);將新計(jì)算出坐標(biāo)的節(jié)點(diǎn)到坐標(biāo)已知數(shù)組,從待測(cè)節(jié)點(diǎn)數(shù)組中刪除這個(gè)節(jié)點(diǎn);
顯示模塊,用于再次判斷有無待測(cè)節(jié)點(diǎn),如果沒有則完成所有待測(cè)節(jié)點(diǎn)迭代計(jì)算,進(jìn)行結(jié)果顯示。
【實(shí)施例】
設(shè)置場(chǎng)景為一地下停車場(chǎng),在該停車場(chǎng)內(nèi)隨機(jī)設(shè)置了25個(gè)待測(cè)節(jié)點(diǎn)。待測(cè)節(jié)點(diǎn)的分布情況如圖4和圖5中的圓形節(jié)點(diǎn)所示。在保持這25個(gè)待測(cè)節(jié)點(diǎn)位置不變的情況下分別利用abc算法,質(zhì)心算法和本發(fā)明對(duì)這25個(gè)待測(cè)節(jié)點(diǎn)進(jìn)行定位,對(duì)其結(jié)果進(jìn)行比較。在本發(fā)明中根據(jù)確定兩個(gè)參數(shù)值的步驟,先采用連通度閾值為95%,三角形區(qū)域邊長(zhǎng)為10米來進(jìn)行第一次實(shí)驗(yàn),之后以3%為量度降低連通度閾值,以5米為量度加長(zhǎng)三角形區(qū)域邊長(zhǎng)進(jìn)行迭代。最后確定連通度閾值為89%(迭代2次),每個(gè)三角形區(qū)域的邊長(zhǎng)為50米(迭代8次)。本發(fā)明的錨點(diǎn)分布情況如圖5中菱形節(jié)點(diǎn)所示。
定義em為第m個(gè)待測(cè)節(jié)點(diǎn)的定位誤差,定位得到的待測(cè)節(jié)點(diǎn)的坐標(biāo)為(xm’,ym’),其真實(shí)坐標(biāo)為(xm,ym),則各待測(cè)節(jié)點(diǎn)的定位誤差的計(jì)算方法如下面所示,即定位坐標(biāo)與真實(shí)坐標(biāo)間的距離。
定義n為第待測(cè)節(jié)點(diǎn)的個(gè)數(shù),則整個(gè)系統(tǒng)的定位誤差e的計(jì)算方法如下面公式所示,即各待測(cè)節(jié)點(diǎn)定位誤差的平均數(shù)。
圖6為質(zhì)心算法和本發(fā)明(改進(jìn)算法)誤差對(duì)比、圖7中abc算法和本發(fā)明(改進(jìn)算法)誤差對(duì)比。實(shí)驗(yàn)結(jié)果表明使用質(zhì)心算法需40到50個(gè)錨點(diǎn)才能控制定位誤差在可接受范圍內(nèi),不能滿足實(shí)際應(yīng)用中對(duì)成本的要求。而本發(fā)明只需7個(gè)錨點(diǎn),可以滿足實(shí)際應(yīng)用中對(duì)成本的要求。使用abc算法在待測(cè)節(jié)點(diǎn)個(gè)數(shù)個(gè)超過10個(gè)時(shí)定位誤差急劇增加,不能滿足實(shí)際應(yīng)用中對(duì)定位精度的要求。而改進(jìn)算法的定位誤差基本穩(wěn)定在可接受范圍內(nèi),能滿足實(shí)際應(yīng)用中對(duì)定位精度的要求。因此得出結(jié)論本發(fā)明確實(shí)在降低了成本的同時(shí)保證了一定的定位精度。
雖然本發(fā)明已以實(shí)施方式揭露如上,然其并不用以限定本發(fā)明,任何熟習(xí)此技藝者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動(dòng)與潤(rùn)飾,因此本發(fā)明的保護(hù)范圍當(dāng)視后附的申請(qǐng)專利范圍所界定者為準(zhǔn)。