劉陳男,羅 恒,2
(1.蘇州科技大學 電子與信息工程學院,江蘇 蘇州 215000;2.江蘇省建筑智慧節能重點實驗室,江蘇 蘇州 215000)
近年來,隨著人們對室內環境健康和舒適性的關注度不斷提高,室內環境數據采集在研究和實踐中變得越來越重要,進行室內環境數據采集可以保障人們的健康和安全,提高室內環境的舒適度和節能效率,以及優化室內空間布局和設計,讓人們在室內獲得更好的使用體驗和感受[1]。室內溫濕度,光照度,二氧化碳濃度等指標是影響室內環境的關鍵因素。
對于以時間序列來進行采集的室內環境數據[2]。最常見的是以分鐘為單位進行多次采集,采集的密度高種類多,隨著時間的推移,越來越多的環境數據會堆疊,數據的復雜程度和數量會大幅提高。數據融合是指將來自不同數據源[3]、不同傳感器或不同模態的數據進行整合、分析和處理的過程。在國外,數據融合的研究已經有數十年的歷史,主要應用于軍事、情報、醫療、環境監測等領域。數據融合技術已經發展出多種方法和算法,例如基于貝葉斯網絡的數據融合[4]、基于神經網絡的數據融合等[5]。通常的傳感器數據融合本質是物理量融合,指對多個傳感器測量得到的相同物理量進行融合,如溫度、濕度、二氧化碳濃度等。但在實際生活中,一個普通的室內空間有著不止一類傳感器,而且同種類傳感器的數量也是有限的,以溫濕度傳感器為例,溫濕度的變化過程是比較緩慢的,假設按照固定的采樣頻率進行采樣,會產生冗余數據并且加重了網絡傳輸的負荷,所以傳感器的數據融合成為了研究的重點。文獻[6]研究了基于卡爾曼濾波算法的溫室數據采集系統,通過在溫室中放置多個相同種類的傳感器監測溫度及濕度,對多個同種類的傳感器數據進行靜態的數據融合,提高了數據采集的準確性。文獻[7]設計了在礦井中利用多個同種類傳感器對瓦斯數據,一氧化碳濃度,粉塵濃度進行分批估計和自適應加權,對監測數據進行融合。數據融合技術在環境數據處理和分析中具有十分廣泛的應用前景。
針對各種數據融合算法的提出,已經在融合精度和復雜度方面取得了一定的提高。然而,這些算法都是在對同一空間的多個傳感器的數據進行橫向融合的基礎上實現的。實際應用中,數據采集是以時間為單位的,采集的密度也很高。因此,將這些數據融合算法應用于基于時間序列的數據融合會帶來相對較高的計算復雜性。為了降低數據傳輸量并提高融合數據的準確性,可以采用縱向融合,即將基于時間序列的數據用卡爾曼濾波算法進行數據融合[8]。然而,傳統的卡爾曼數據融合算法存在一個問題,當測量數據出現異常時,可能會導致最終結果出現不同程度的波動。因此,本文的重點研究內容在于如何處理異常值和缺失數據,以進一步提高數據融合算法的準確性和可靠性。對此問題的研究將有助于更好地利用基于時間序列的數據,為各種實際應用提供更好的數據融合解決方案。
進行室內溫度數據采集的系統包括溫度數據監測功能和數據處理功能,系統結構如圖1所示,系統包含三部分:終端節點,網關節點和云服務器。LoRa終端節點中的STM32主控芯片控制DS18B20溫度傳感器采集室內實時的溫度數據,并通過串口將測量得到的溫度數據經由LoRaWAN網絡傳輸到LoRa網關節點,網關節點將其他由終端節點傳輸過來的溫度數據進行匯總,由STM32主控芯片處理后通過4 G模塊上傳到云服務器進行保存[9]。云服務器上掛載的Python數據處理程序將接收到的數據按照程序內部邏輯進行有規律的儲存和分析,最后再進行數據融合。

圖1 系統整體結構圖
網關節點和終端節點使用STM32F103RCT6作為主控芯片,并通過SX1278射頻芯片進行LoRa網絡通信。終端節點由LoRa模塊、主控芯片和各種不同類型的傳感器構成,這些傳感器采集環境數據并將其傳輸到主控芯片,最后通過LoRa模塊進行發送。網關節點的LoRa模塊接收到數據后,通過STM32主控芯片將所有傳感器數據經由4 G模塊發送到云服務器。通過這種方式,環境數據可以在云端進行進一步處理和分析,例如生成報告和制定決策等。在這個系統中,LoRa網絡通信技術被廣泛應用,其具有較遠的傳輸距離、較低的功耗和高度的可靠性等優點,能夠滿足室內環境數據采集和傳輸的要求。同時,STM32F103RCT6主控芯片具有高性能、低功耗和豐富的外設接口等特點,為該系統的高效運行提供了保障。
主控芯片STM32F103RCT6是由ST公司開發,基于ARM Cortex-M3內核,可以采用I2C,SPI,UART/USART等通信協議和外設模塊進行數據傳輸。其內置了48 K的RAM,256 K的FLASH,包括電源電路,晶振電路和復位電路,最高主頻可達72 MHz,滿足絕大部分的使用場景。
LoRa是一種基于擴頻技術的低功耗、長距離、低速率的無線通信技術,它是低功耗廣域網(LPWAN)中的一種。使用頻率偏移調制(FSK)或擴頻技術在無線電頻段發送數據包[10]。與其他低功耗無線通信技術相比,它具有更長的通信范圍和更長的電池壽命。它可以在數公里范圍內傳輸數據,同時保持非常低的功耗,這使得LoRa非常適合需要低速、低功耗和長距離通信的應用,如智能城市、智能家居、物聯網等。本系統使用SX1278射頻芯片通過SPI協議與STM32進行數據傳輸。LoRa模塊的電路原理圖如圖2所示。

圖2 LoRa模塊電路原理圖
溫度采集模塊選取的是DS18B20傳感器,由于它采用的是單線通信協議[11],所以只需要一條數據線就可以實現數據的傳輸和控制,并且輸出數字信號,便于數字化系統處理和數據傳輸。測量范圍在-55 ℃到+125 ℃,精度可以達到±0.5 ℃。DS18B20模塊的電路原理圖如圖3所示。

圖3 DS18B20模塊電路原理圖
為了避免在終端節點與網關節點進行通信時出現主動發送數據、信道搶占和互相干擾的情況,導致數據傳輸過程中出現差錯,采用了一種基于星型拓撲結構構造的LoRa組網結構。在該結構中,整個LoRa網絡中的各終端節點通過點對點的方式連接到一個中央節點,即LoRa網關。這種構造方式可以避免終端節點之間的干擾,保證數據傳輸的穩定性。同時,終端節點和網關節點之間的交互方式采用了輪詢方式,使得通信過程更加高效和可靠。
在LoRa終端節點首次上電后,STM32主控芯片會對串口進行使能以及SPI接口進行初始化。通過使用C語言編程開發,并借助Keil5軟件,對STM32主程序進行開發。通過SPI接口發送AT指令對各節點的LoRa模塊進行初始化并配置不同的地址和信道。這樣可以在網關節點上區分不同傳感器設備上傳的環境數據,同時也減少了傳輸過程中可能出現的錯誤數據。在主控芯片程序中,還定義了一些自定義函數用于傳感器的初始化,并在收到網關節點發出的喚醒指令后,采集實時的環境數據。該數據隨后通過USART串口發送到主控芯片,主控芯片接收到數據后再將其按照固定的格式封裝成數據幀,并發送到網關節點[12]。LoRa終端節點的軟件流程圖如圖4所示。

圖4 終端節點軟件流程圖
在網關節點首次上電后,STM32主控芯片對4 G模塊發送AT指令進行初始化配置,其中包括設置4 G模塊的傳輸模式和服務器的地址端口號等,同樣,需要對LoRa通信模塊配置地址和信道。STM32主控芯片的程序流程為將喚醒指令通過LoRa網關依次發給終端節點,再接收LoRa終端上傳的傳感器數據,接收完成后在主程序中進行數據幀格式的判斷,保證數據的正確性和完整性。確認數據無誤后,將接收到的數據通過4 G模塊發送給服務器進行進一步的數據預處理和算法過濾。LoRa網關節點的軟件流程圖如圖5所示。

圖5 網關節點軟件流程圖
卡爾曼濾波算法是一種高效率的遞歸濾波器,其主要應用于估計動態系統的狀態,尤其是從一系列包含噪聲的測量中。該算法采用信號與噪聲的狀態空間模型[13],通過利用前一時刻的估計值和當前時刻的觀測值來更新對狀態變量的估計,從而計算出當前時刻的估計值。由于其精度高、效率高和可靠性強等特點,卡爾曼濾波算法已經廣泛應用于諸多領域,包括航空航天、自動控制、信號處理等。其本質是由量測值來重構系統的狀態向量,以“預測—實測—修正”的順序遞歸來消除隨機干擾[14],逐步實現達到最優估計的效果。
一般形式下的卡爾曼狀態空間方程為:
狀態方程:
Xt=AXt-1+BUt+Wt
(1)
觀測方程:
Yt=HXt+Vt
(2)
在上述的狀態方程和觀測方程中,Xt為t時刻的系統狀態,Xt-1為上一時刻的系統狀態,Ut為系統在t時刻的輸入信號,Wt為系統在t時刻的過程噪聲,Vt為t時刻的觀測噪聲,A為狀態轉移矩陣,B為控制矩陣,H為觀測矩陣。由卡爾曼的狀態方程和t-1時刻的最優估計值可得出t時刻的預測值,也就是先驗估計為:
(3)
對應的先驗估計協方差為:
(4)
式中,Q的對應的過程噪聲Wt的方差,為了得到當前t時刻的最優估計值Xt,需要結合公式(2)和(3)得出t時刻的最優估計值,也就是后驗估計值Xt,其公式為:
(5)
在計算出t時刻的最優估計值后,需要對卡爾曼算法進行迭代運算,要更新上式中的卡爾曼增益Kt和Xt所對應的后驗估計協方差Pt,卡爾曼增益Kt和后驗估計協方差Pt的公式如下:
(6)
(7)
式中,R為觀測噪聲Vt的方差,I為單位矩陣。
在實際的應用中,需要根據測量數據的實際情況進行參數的設置。該算法的應用場景是建筑物內部的某個有流通性的空間,并不是一個密閉空間,所以會與外界的空間存在熱量交換導致的過程噪聲[15],室內的環境屬于一維系統,將一般的卡爾曼濾波方程改造成一維狀態下的卡爾曼濾波方程,其中A=H=1,由于整個系統沒有控制量,Ut=0,過程噪聲Wt和觀測噪聲Vt對應的方差分別是Q和R,R由測量儀器的精度決定,Q一般設置為一個確定的值,取值越接近0,融合的曲線越光滑。初值X0可以取0或者初始的測量值。在一般情況下,初始協方差P0的值越小代表初始的估計較好。
4.3.1 孤立森林算法
在一個相對穩定的數據采集環境中,傳統的卡爾曼濾波算法可以獲得一個較為理想的數據融合結果。然而,由于周圍環境的突然改變或傳感器本身的機械故障等原因,異常值或缺失值可能會出現,導致傳統的卡爾曼濾波算法出現不同程度的波動。為了解決此類問題,引入孤立森林算法對原始數據進行預處理[16],再利用卡爾曼數據融合算法進行融合,從而得到更加準確的融合結果。孤立森林算法是一種基于Ensemble的快速離群點檢測方法,具有線性時間復雜度和高精度。該算法不依賴于距離、密度等量化指標來比較樣本之間的差異。它使用孤立樹iTree[17],這是一種結構為二叉搜索樹的孤立樹,用于孤立樣本。由于異常值數量較少,樣本疏離度高等特征,異常值可以在樣本中被早期孤立出來。因此,通過使用孤立森林算法預處理數據,可以更好地提高卡爾曼數據融合算法的融合效果,從而獲得更加準確的融合結果。
該算法的大致流程可以分為兩個步驟,第一步是構建出孤立樹組成孤立森林,具體過程如下:
對需要被測量的對象進行多次測量,得到的數據集可表示為:
X={x1,x2,x3,…,xn}
(8)
從X數據集中隨機選擇ψ個樣本點并將其作為數據集X的子集X′放入根節點后,需要在數據集的m個維度中隨機選擇一個維度q,在當前數據集中隨機選擇一個切割點p,以便滿足以下條件:
Min(xij,j=q)
(9)
以隨機選擇的切割點p生成一個超平面。該超平面將數據空間劃分成為兩個子空間,其中小于p的樣本點被指定為左子節點,大于或等于p的樣本點被指定為右子節點。然后,遞歸地隨機選擇一個維度和一個點p,并重復上述操作,直到所有葉子節點都只有一個數據或達到了預設的iTree高度。最后,上述操作會循環執行,直到生成T個iTree。然后使用這些iTree來預測數據的異常分數,并據此識別異常值。
第二步是將每個樣本點帶入孤立森林中的每棵孤立樹,以此來計算每個樣本點的異常值分數和平均高度。其具體過程如下:
在獲得T個iTree后,對每一個數據xi,讓這個數據遍歷每一棵iTree,從而計算xi在森林中的平均高度h(xi),對所有的數據點的平均高度做歸一化處理。異常值分數的計算公式如下所示:
s(x,ψ)=2E(h(x))/c(ψ)
(10)
s(x,ψ)代表記錄數據xi在ψ個樣本中的訓練數據構成的iTree的異常指數,其中:
(11)
H(k)=lnk+ζ,ζ=0.5772156649
(12)
當異常值被識別出,為了保證數據質量和完整性,提高數據的可用性,避免誤導性分析,可以通過對異常點周圍數據取平均值來替代異常點數據來保證數據的完整性。
4.3.2 融合算法步驟
改進的卡爾曼數據融合算法步驟如下:
1)將原始的室內溫度數據導入孤立森林算法中,利用孤立森林算法識別異常數據,并用平均值算法代替原始數據中的異常數據。
2)確定卡爾曼濾波算法的參數,設置狀態轉移矩陣A,控制矩陣B,觀測矩陣H的值和X0,P0的初始值。
3)使用卡爾曼濾波算法對采樣數據進行迭代運算,得到數據融合的結果。
選取南方2月份一個學校內的教室進行為期一天的室內溫度數據采集,每隔三分鐘進行一次采樣,一小時會得到20個室內溫度數據,24小時可以得到480個采樣數據,分別使用平均值法,傳統的卡爾曼數據融合算法和改進的卡爾曼數據融合算法按小時對480個室內溫度數據進行融合,融合成為24個數據。
使用平均值法[18]、傳統的卡爾曼數據融合算法以及改進的卡爾曼數據融合算法對采樣數據進行了融合。如圖6所示,融合結果反映了一天內室內氣溫的變化趨勢。在下午2點到3點期間,室內溫度達到最高點。3種方法在融合趨勢方面大致相同,但都存在微小的突變。然而,與平均值算法和傳統的卡爾曼數據融合算法相比,改進的卡爾曼數據融合算法的突變程度更低,更加符合室內溫度緩慢變化的客觀規律。這表明改進的算法在數據融合方面具有更好的性能,能夠更準確地反映室內氣溫的變化。

圖6 3種方法的原始數據融合曲線
為了驗證改進的卡爾曼數據融合算法的性能,在原始的室內溫度采集數據中添加了擾動樣本和畸變數據[19-21]。擾動樣本是指對原始數據進行隨機增加或減少的操作,以模擬真實世界中可能出現的干擾情況。而畸變數據則是通過將原始數據設置為最大或最小值,來產生異常數據。這些異常數據的具體設置如表1所示,旨在考察算法在面對不同程度的干擾和異常數據時的魯棒性和性能表現。通過這些實驗,能更全面地評估改進的卡爾曼數據融合算法的性能。

表1 設置的異常數據
將設置的8個異常數據替換原始數據,將帶有異常值的480個數據帶入孤立森林算法進行判別,異常數據均被識別成功并賦予了新的值,并且估計值與原始數據的誤差控制在-0.47~0.44,如表2所示。

表2 異常數據的估計值
對添加了擾動樣本和畸變數據的采樣數據分別采用平均值法、傳統的卡爾曼濾波算法和改進的卡爾曼濾波算法進行融合結果的比較,帶有擾動樣本的融合結果對比如圖7所示,同時對3種方法的融合誤差也進行比較,如表3所示。帶有畸變數據的融合結果對比如圖8所示,3種方法的融合誤差如表4所示。

表3 3種融合方法帶有擾動樣本的誤差

表4 3種融合方法帶有畸變數據的誤差

圖7 3種方法帶有擾動樣本的融合曲線

圖8 3種方法帶有畸變數據的融合曲線
由圖7和表3可得,在4個時間點設置的擾動樣本,平均值法均有較大程度的波動,平均值法的誤差在-0.6~0.29的大范圍變化,傳統的卡爾曼數據融合算法在-0.17~0.56之間波動,相較于平均值法,波動范圍已經縮小,而改進的卡爾曼數據融合算法波動范圍控制在-0.12~0.1之間,基本上不受擾動樣本的干擾。
通過觀察圖8和表4可以得出,畸變數據對數據融合結果的影響遠大于擾動樣本的影響。在12點和17點,平均值法和傳統的卡爾曼數據融合算法都出現了較大程度的變化。然而,通過改進后的卡爾曼濾波算法處理畸變數據,由于孤立森林算法能夠準確地識別和替換畸變數據,融合誤差范圍在-0.03至0.14之間。相比之下,平均值法的誤差范圍在-0.99至0.95之間,傳統的卡爾曼濾波算法的誤差范圍在-1.11至0.36之間。
綜合以上實驗結果,可以得出改進的卡爾曼數據融合算法在處理類似于擾動樣本和畸變數據等異常數據時,不會出現融合值的突變,能夠獲得較為平滑的融合效果,融合曲線也更加平緩。因此,改進后的卡爾曼數據融合算法具有較強的魯棒性,能夠更加穩定和可靠的處理異常數據。
本研究采用了LoRa無線通信模塊和傳感器組成了室內環境數據采集系統來監測室內溫度數據的變化。由于室內溫度數據變化緩慢,并且是在同一空間下的基于時間序列的數據,所以提出了一種應用在一維線性空間中的改進的卡爾曼濾波算法。經過實驗驗證,該算法可以規避擾動樣本和畸變數據帶來的影響,提高了融合算法的魯棒性,能夠更加準確的掌握室內溫度的變化。