本發(fā)明涉及時(shí)間同步技術(shù)領(lǐng)域,具體涉及一種基于線性加權(quán)最小二乘法的時(shí)間同步方法。
背景技術(shù):
時(shí)間同步技術(shù)是使整個無線傳感器網(wǎng)絡(luò)保持同一個時(shí)間標(biāo)準(zhǔn)的技術(shù),它是一個分布式系統(tǒng)中的各個節(jié)點(diǎn)協(xié)同工作的最基本的支撐技術(shù)。不同的應(yīng)用對時(shí)間同步的精度、范圍、壽命、能量等有著不同的要求。當(dāng)無線傳感器網(wǎng)絡(luò)用于變電站的帶電檢測和故障定位時(shí),時(shí)間同步的精度直接影響到定位的準(zhǔn)確性,雖然已經(jīng)存在很多用在網(wǎng)絡(luò)通信中的高精度的時(shí)間同步算法,然而,跟傳統(tǒng)的通信網(wǎng)絡(luò)不同的是,無線傳感器網(wǎng)絡(luò)中,傳感器節(jié)點(diǎn)的計(jì)算能力和能量是有限的,傳統(tǒng)用于計(jì)算機(jī)網(wǎng)路的NTP同步機(jī)制以及高成本的GPS同步機(jī)制并不適用。
現(xiàn)有的用于無線傳感器網(wǎng)絡(luò)的時(shí)間同步算法有參照廣播同步協(xié)議(RBS),雙向成對同步協(xié)議(TPSN),延遲測量同步協(xié)議(DMTS)和泛洪式時(shí)間同步協(xié)議(FTSP)等,還有基于這些算法的一些改進(jìn)算法。RBS通過引入一個參考節(jié)點(diǎn),周期性地廣播同步數(shù)據(jù)包,接收節(jié)點(diǎn)記錄并彼此交換收到數(shù)據(jù)包的時(shí)間來完成同步。TPSN則是典型的基于發(fā)送者-接收者的雙向時(shí)間同步方法,子節(jié)點(diǎn)通過一種握手機(jī)制獲取父節(jié)點(diǎn)的時(shí)標(biāo),用計(jì)算出的時(shí)鐘偏差值調(diào)整本地時(shí)鐘。延遲測量時(shí)間同步機(jī)制(DMTS)是一種簡單直觀的基于發(fā)送者-接收者的單向時(shí)間同步方法,DMTS通過測量估計(jì)數(shù)據(jù)包從發(fā)送到被接收過程中的各種延遲來完成同步。FTSP是一種基于發(fā)送者和接收者間的單向時(shí)間同步協(xié)議,節(jié)點(diǎn)通過廣播來將節(jié)點(diǎn)的本地時(shí)間傳給接收節(jié)點(diǎn)。相對于其他算法,F(xiàn)TSP算法由于采用線性擬合的方法估計(jì)時(shí)鐘漂移和時(shí)鐘偏移,精度較高。在統(tǒng)計(jì)學(xué)和參數(shù)估計(jì)理論中,最大似然法、最小方差無偏估計(jì),卡爾曼濾波,最小二乘估計(jì)均可以用于參數(shù)的估計(jì)。最大似然法和最小方差無偏估計(jì)對消息的傳輸延遲的分布很敏感,若實(shí)際的傳輸延遲和假定的傳輸延遲模型不吻合,那么求出的估計(jì)量會有較大誤差;而卡爾曼濾波方法對時(shí)鐘的模型較為敏感,由于傳感器節(jié)點(diǎn)配備的晶振價(jià)格較為低廉,晶振的穩(wěn)定性易受環(huán)境影響,當(dāng)同步周期較長時(shí),若把節(jié)點(diǎn)時(shí)鐘建立成一階模型會有較大偏差。而最小二乘法對觀測數(shù)據(jù)沒有任何概率假設(shè),所以無需任何先驗(yàn)知識,只需被估計(jì)量的觀測信號模型即可估計(jì)信號參量。所以傳統(tǒng)的FTSP算法一般采用線性最小二乘法來對數(shù)據(jù)進(jìn)行線性擬合。但是線性最小二乘法是假設(shè)每次的觀測噪聲是一樣的,而在無線傳感器網(wǎng)絡(luò)的每次同步過程中,越舊的時(shí)標(biāo)對當(dāng)前的觀測帶來的噪聲越大,所以同等地對待各次觀測量是不合理的。本發(fā)明介紹一種線性加權(quán)最小二乘法可以給予觀測噪聲小的觀測量以較大的權(quán)值,降低觀測噪聲對同步精度的影響,從而進(jìn)一步提高同步的精度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于線性加權(quán)最小二乘法的泛洪式時(shí)間同步方法,對泛洪式時(shí)間同步算法中的線性回歸方法進(jìn)行改進(jìn),消除觀測噪聲對同步精度的影響。針對節(jié)點(diǎn)搜集的時(shí)間對中的觀測噪聲,采用線性加權(quán)最小二乘法對時(shí)間進(jìn)行線性擬合,在求得時(shí)鐘漂移和時(shí)鐘偏移的同時(shí),降低觀測噪聲對同步精度的影響,從而實(shí)現(xiàn)高精度的同步。
一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,其特征是,包含以下步驟:
S1、初始化時(shí)任意選定一節(jié)點(diǎn)作為根節(jié)點(diǎn);此根節(jié)點(diǎn)周期性地廣播同步數(shù)據(jù)包,同步數(shù)據(jù)包中包含MAC層的時(shí)標(biāo)TimeStamp、根節(jié)點(diǎn)識別標(biāo)志RootID、同步數(shù)據(jù)包的序列號SeqNum;其余節(jié)點(diǎn)為非根節(jié)點(diǎn),非根節(jié)點(diǎn)在根節(jié)點(diǎn)記錄myRootID中記錄自己所屬的根節(jié)點(diǎn)號,其時(shí)標(biāo)TimeStamp與所屬根節(jié)點(diǎn)的時(shí)標(biāo)TimeStamp同步;
S2、非根節(jié)點(diǎn)在網(wǎng)絡(luò)工作時(shí)啟動一個超時(shí)定時(shí)器,若在約定時(shí)間內(nèi)沒有收到任何同步數(shù)據(jù)包,那么超時(shí)定時(shí)器加1,當(dāng)超時(shí)定時(shí)器的值超過預(yù)設(shè)的值時(shí),該節(jié)點(diǎn)定義自己為根節(jié)點(diǎn),也周期性地廣播同步數(shù)據(jù)包;
S3、非根節(jié)點(diǎn)接收到同步數(shù)據(jù)包時(shí),必須對來自不同根節(jié)點(diǎn)的同步數(shù)據(jù)包進(jìn)行過濾,只接受滿足特定條件的同步數(shù)據(jù)包,并更新本地的線性回歸表,按線性加權(quán)最小二乘法構(gòu)造擬合直線,得到時(shí)鐘漂移a和時(shí)鐘偏移b;
S4、非根節(jié)點(diǎn)根據(jù)S3得到的時(shí)鐘漂移a和時(shí)鐘偏移b調(diào)整本地時(shí)鐘,與根節(jié)點(diǎn)同步后,非根節(jié)點(diǎn)同樣地廣播同步數(shù)據(jù)包,其中,時(shí)標(biāo)TimeStamp為同步后本地的時(shí)鐘值,根節(jié)點(diǎn)識別標(biāo)志RootID保持不變。
上述的一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,其中,所述步驟S3中,滿足下列2個條件之一的同步數(shù)據(jù)包才被接收:
條件一:RootID<myRootID;
條件二:(SeqNum>highestSeqNum)&&(RootID==myRootID);
其中,highestSeqNum表示同步的輪數(shù),myRootID表示該節(jié)點(diǎn)所屬的根節(jié)點(diǎn)號。
上述的一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,其中,所述步驟S3中,構(gòu)造擬合直線的方法是線性最小二乘法,其包含以下步驟:
令xi為觀測向量,為觀測矩陣,θ為M維的被估計(jì)量,ni為觀測噪聲,構(gòu)造線性觀測方程:
記X=[x0 x1 … xL-1]T為L次的觀測向量,對應(yīng)的觀測矩陣記為觀測噪聲向量N=[n0 n1 … nL-1]T,則L次的觀測方程為:
X=Hθ+N (2)
令W=diag(w0,w1,…,wL-1)為權(quán)重矩陣,按照線性最小二乘法計(jì)算,得誤差函數(shù)Jw(θ):
Jw(θ)=(X-Hθ)TW(X-Hθ) (3)
其中,基于線性加權(quán)最小二乘算法中每次只用線性回歸表中最新的K對時(shí)標(biāo)來進(jìn)行擬合,構(gòu)造權(quán)重矩陣為:
W=diag(0,…,0,rK-1,…,r,1) (4)
令xi=Tsi,hi=[Tri 1],θ=[a b]T,a為時(shí)鐘漂移,b為時(shí)鐘偏移,則誤差函數(shù)轉(zhuǎn)換成:
其中,Tsi為發(fā)送節(jié)點(diǎn)第i次同步時(shí)發(fā)送的時(shí)標(biāo),Tri為接收節(jié)點(diǎn)第i次接收數(shù)據(jù)包時(shí)的本地時(shí)標(biāo);
當(dāng)
時(shí),誤差函數(shù)J(θ)最小,記可以求得:
現(xiàn)有的線性最小二乘法是假設(shè)每次的觀測噪聲是一樣的,本發(fā)明介紹了一種線性加權(quán)最小二乘法,可以給予觀測噪聲小的觀測量以較大的權(quán)值,使求出的時(shí)鐘漂移更貼近真實(shí)傳感器節(jié)點(diǎn)的晶振頻率變化。通過降低觀測噪聲對同步精度的影響,可以進(jìn)一步提高同步的精度。
附圖說明
圖1是本發(fā)明線性加權(quán)最小二乘法的步驟圖。
圖2是本發(fā)明線性加權(quán)最小二乘法與傳統(tǒng)的有限加權(quán)最小二乘法的精度仿真對比圖。
圖3是本發(fā)明中所述實(shí)施例的網(wǎng)絡(luò)節(jié)點(diǎn)分布圖。
具體實(shí)施方式
以下結(jié)合附圖,通過詳細(xì)說明一個較佳的具體實(shí)施例,對本發(fā)明做進(jìn)一步闡述。
如圖1所示,一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,包含以下步驟:
S1、初始化時(shí)任意選定一節(jié)點(diǎn)作為根節(jié)點(diǎn);此根節(jié)點(diǎn)周期性地廣播同步數(shù)據(jù)包,同步數(shù)據(jù)包中包含MAC層的時(shí)標(biāo)TimeStamp、根節(jié)點(diǎn)識別標(biāo)志RootID、同步數(shù)據(jù)包的序列號SeqNum;其余節(jié)點(diǎn)為非根節(jié)點(diǎn),非根節(jié)點(diǎn)在根節(jié)點(diǎn)記錄myRootID中記錄自己所屬的根節(jié)點(diǎn)號,其時(shí)標(biāo)TimeStamp與所屬根節(jié)點(diǎn)的時(shí)標(biāo)TimeStamp同步。
S2、非根節(jié)點(diǎn)在網(wǎng)絡(luò)工作時(shí)啟動一個超時(shí)定時(shí)器,若在約定時(shí)間內(nèi)沒有收到任何同步數(shù)據(jù)包,那么超時(shí)定時(shí)器加1,當(dāng)超時(shí)定時(shí)器的值超過預(yù)設(shè)的值時(shí),該節(jié)點(diǎn)定義自己為根節(jié)點(diǎn),也周期性地廣播同步數(shù)據(jù)包。所述預(yù)設(shè)的值由操作者根據(jù)本網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)量、網(wǎng)絡(luò)規(guī)模不同而選取不同的數(shù)值。
S3、非根節(jié)點(diǎn)接收到同步數(shù)據(jù)包時(shí),必須對來自不同根節(jié)點(diǎn)的同步數(shù)據(jù)包進(jìn)行過濾,只接受滿足特定條件的同步數(shù)據(jù)包,并更新本地的線性回歸表,按線性加權(quán)最小二乘法構(gòu)造擬合直線,得到時(shí)鐘漂移a和時(shí)鐘偏移b。
S4、非根節(jié)點(diǎn)根據(jù)S3得到的時(shí)鐘漂移a和時(shí)鐘偏移b調(diào)整本地時(shí)鐘,與根節(jié)點(diǎn)同步后,非根節(jié)點(diǎn)同樣地廣播同步數(shù)據(jù)包,其中,時(shí)標(biāo)TimeStamp為同步后本地的時(shí)鐘值,根節(jié)點(diǎn)識別標(biāo)志RootID保持不變。
上述的一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,其中,所述步驟S3中,滿足下列2個條件之一的同步數(shù)據(jù)包才被接收:
條件一:RootID<myRootID;
條件二:(SeqNum>highestSeqNum)&&(RootID==myRootID);
其中,highestSeqNum表示同步的輪數(shù),myRootID表示該節(jié)點(diǎn)所屬的根節(jié)點(diǎn)號。
上述的一種基于線性加權(quán)最小二乘法的時(shí)間同步方法,其中,所述步驟S3中,構(gòu)造擬合直線的方法是線性最小二乘法,其包含以下步驟:
令xi為觀測向量,為觀測矩陣,θ為M維的被估計(jì)量,ni為觀測噪聲,構(gòu)造線性觀測方程:
記X=[x0 x1 … xL-1]T為L次的觀測向量,對應(yīng)的觀測矩陣記為觀測噪聲向量N=[n0 n1 … nL-1]T,則L次的觀測方程為:
X=Hθ+N (2)
令W=diag(w0,w1,…,wL-1)為權(quán)重矩陣,按照線性最小二乘法計(jì)算,得誤差函數(shù)Jw(θ):
Jw(θ)=(X-Hθ)TW(X-Hθ) (3)
其中,基于線性加權(quán)最小二乘算法中每次只用線性回歸表中最新的K對時(shí)標(biāo)來進(jìn)行擬合,構(gòu)造權(quán)重矩陣為:
W=diag(0,…,0,rK-1,…,r,1) (4)
令xi=Tsi,hi=[Tri 1],θ=[a b]T,a為時(shí)鐘漂移,b為時(shí)鐘偏移,則誤差函數(shù)轉(zhuǎn)換成:
其中,Tsi為發(fā)送節(jié)點(diǎn)第i次同步時(shí)發(fā)送的時(shí)標(biāo),Tri為接收節(jié)第i次接收數(shù)據(jù)包時(shí)的本地時(shí)標(biāo);
當(dāng)
時(shí),誤差函數(shù)J(θ)最小,記可以求得:
采用線性加權(quán)最小二乘法能有效提高同步精度。圖2所示是在NS2網(wǎng)絡(luò)仿真平臺中搭建的仿真環(huán)境:節(jié)點(diǎn)數(shù)為30個,隨機(jī)分布在100米*100米的范圍內(nèi),節(jié)點(diǎn)時(shí)鐘漂移為-10ppm~10ppm間的均勻分布,同步精度以節(jié)點(diǎn)兩兩之間的時(shí)間差的均值衡量,同步90次,同步間隔為20s。參與線性回歸的時(shí)標(biāo)對數(shù)K為8,基于有限加權(quán)最小二乘法的洪泛時(shí)鐘同步協(xié)議FTSP同步誤差為1.8μs~4.9μs,如▲所示;基于線性加權(quán)最小二乘法的FTSP算法的同步誤差為0.8μs~1.9μs,如□所示。
圖3為一個由7個節(jié)點(diǎn)組成的傳感器網(wǎng)絡(luò),初始化時(shí)選擇節(jié)點(diǎn)0為根節(jié)點(diǎn),節(jié)點(diǎn)1、2在節(jié)點(diǎn)0的廣播范圍內(nèi),節(jié)點(diǎn)3、4、5在節(jié)點(diǎn)1的廣播范圍、節(jié)點(diǎn)5、6在節(jié)點(diǎn)2的廣播范圍內(nèi)。
首先節(jié)點(diǎn)0每隔20s的間隔(interval)廣播一個同步數(shù)據(jù)包,數(shù)據(jù)包中攜帶發(fā)送時(shí)的本地時(shí)標(biāo)Ts。節(jié)點(diǎn)1和2收到數(shù)據(jù)包后記錄下本地時(shí)標(biāo)Tr,并用Ts和Tr作為一對時(shí)標(biāo)更新線性回歸表。對于大小為6(K=6)的線性回歸表,更新過程如下:當(dāng)本地已收到的有效同步數(shù)據(jù)包數(shù)量小于6時(shí),新獲得的時(shí)標(biāo)對直接加入線性回歸表,大于6時(shí),每次要丟棄回歸表中最舊的那對時(shí)標(biāo),然后把新的時(shí)標(biāo)放進(jìn)去,即線性回歸表中總存放的是最新的6對時(shí)標(biāo)(TrL-6,TsL-6)、(TrL-5,TsL-5)、(TrL-4,TsL-4)、(TrL-3,TsL-3)、(TrL-2,TsL-2)、(TrL-1,TsL-1)。之后利用線性加權(quán)最小二乘法構(gòu)造擬合直線,求出時(shí)鐘漂移a和時(shí)鐘偏移b。
權(quán)重r取0.9,待估計(jì)量θ=[a b]T,a為時(shí)鐘漂移,b為時(shí)鐘偏移。線性觀測矩陣的誤差函數(shù)可以轉(zhuǎn)換成:
要令誤差函數(shù)最小,則令:
記可以求得,當(dāng)權(quán)重r取0.9時(shí):
之后節(jié)點(diǎn)1和2的本地時(shí)鐘調(diào)整為Tsync=a×Tlocal+b,然后節(jié)點(diǎn)1和2開始像根節(jié)點(diǎn)一樣廣播同步數(shù)據(jù)包。節(jié)點(diǎn)3、4、5、6分別與節(jié)點(diǎn)1和2同步。由于節(jié)點(diǎn)5同時(shí)處于節(jié)點(diǎn)1和2的廣播范圍內(nèi),所以當(dāng)節(jié)點(diǎn)5收到來自節(jié)點(diǎn)1或2的同步數(shù)據(jù)包時(shí),節(jié)點(diǎn)5留下先收到的數(shù)據(jù)包,拋棄另一個數(shù)據(jù)包。對于最大跳數(shù)為2的網(wǎng)絡(luò),第一次全網(wǎng)同步需要2×K×interval的時(shí)間,之后每個同步周期便可進(jìn)行一次全網(wǎng)同步。
盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識到上述的描述不應(yīng)被認(rèn)為是對本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來限定。