崔兆文,王 武
(貴州大學 電氣工程學院,貴陽 550025)
近幾年,智能家居系統以及機器人不斷進入人們的日常生活,對室內的精確定位要求越來越高,而常規民用的GPS定位系統,定位精度不高,不能滿足人們對精度的需求。超聲波定位、藍牙定位、激光定位以及WiFi定位技術,雖然在一定程度上能夠滿足定位的需求,但是定位精度并不理想,一般定位級別在米的量級。超管帶定位技術UWB(Ultra Wideband),可以達到厘米級別,在一定程度上解決了定位精度的問題,同時可以通過算法的改進提高精確度[1]。
二十世紀六十年代,人們首次開發出UWB。后來,該技術經過調整,用作正交頻分復用(OFDM)技術。用于定位和測距的UWB脈沖,在6.5~8 GHz的頻率范圍內工作,不會干擾頻譜其他頻段發生的無線傳輸。UWB可以方便地對監控場所進行部署,并將定位網絡協同在一個實時、高精度的狀態下獲取定位的性能,能將場景實時動態地虛擬出來。UWB設計的系統穩定可靠,定位功能完整,實時性能好,管理功能健全,系統安裝方便,集成方式簡單,使用簡單,易于二次開發等擴展特點。目前在智慧工廠、司法監獄、隧道管廊、智慧電廠、智慧工地等方面應用。
本文將UWB模塊用于室內定位,同時對算法進行優化,使得定位系統能夠在家庭中有較好的應用。
本系統以STM32F407單片機為核心,控制電路由語音控制模塊、UWB模塊、液晶顯示等模塊組成。STM32F407最大工作頻率168MHZ,滿足系統設計的需求。系統采用平面定位設計,需要3個基站和一個標簽,通過標簽與基站之間的距離,計算相對坐標。系統總體框架如圖1所示。

圖1 系統整體框架設計圖Fig.1 The overall framework design of the system
通過撥碼開關控制UWB模塊的狀態(標簽/基站),如果是基站,通過撥碼開關可以設計基站的地址,系統設計時最多允許8個基站的存在。通過撥碼開關還可對UWB的通信頻率等參數進行設置,使其滿足UWB通信的需求。
語音識別模塊使用LD3320芯片,只需把待識別的關鍵詞語以字符串的形式傳送進芯片,即可通過音響進行播報。例如,通過一級指令“定位系統”,二級指令“播報位置”,就可以通過音響知道標簽所在位置。
系統使用液晶屏OLED對標簽到基站的距離,以及標簽的坐標進行顯示,方便相關數據的觀測。使用充電寶作為電源模塊,LED小燈顯示UWB模塊的工作狀態(相當于對撥碼開關的狀態進行顯示)。
程序設計流程如圖2所示。首先對單片機的引腳功能進行初始化操作,使得各個模塊能夠正常運行。通過撥碼開關對UWB模塊的功能進行設置,使得UWB模塊處于不同的狀態,并利用LED顯示撥碼開關的狀態。液晶屏需要對距離與定位值進行實時顯示。語音模塊判斷的實質,是判斷是否有一級指令“定位系統”,若沒有接收到一級指令,語音相關程序將繼續循環進行判斷,直到有一級指令收到后,才會進行后面語音的判斷,執行相關程序。

圖2 程序設計流程圖Fig.2 Program design flow chart
本系統利用基站與標簽的距離,完成室內定位的任務。基站與標簽的距離通過電磁波在空氣中傳播的時間確定。為了減少同步通信的額外環節,采用異步通信的方式完成通信內容。本文選用雙邊測距算法,作為基站與標簽數據傳輸時間的基本算法。同時利用三邊定位算法實現坐標的計算。
UWB模塊之間的通信方式如圖3所示。

圖3 雙邊測距算法時序圖Fig.3 Sequence diagram of bilateral ranging algorithm
其中,T表示兩個UWB模塊傳輸數據的時間;R1表示UWBA發送數據到其接收數據的時間;D1表示UWBA接收數據到其發送數據的時間;R2表示UWBB發送數據到其接收數據的時間;D2表示UWBB接收數據到其發送數據的時間,按照時序圖,單次發送或接收數據的時間如式(1)和式(2)所示:

將式(1)和式(2)分別移相,得到D1和D2的表達式:

將式(3)、式(4)中計算結果D1與D2相乘可得式(5):

將式(5)變形可得式(6),同時將式(3)、式(4)帶入:

將式(6)整理可得兩個UWB模塊傳輸一次數據所需時間:

由于單片機的固有屬性,執行完某條指令才會進入下一條指令。利用單片機中的定時器就會出現系統時鐘誤差,而這種系統帶來的誤差是不可控,只有盡可能的減少系統誤差帶來的影響。其誤差計算公式如式(8)所示。

其中,ka表示RX通道的實際傳輸速率與理論傳輸速率的比值;kb表示TX通道的實際傳輸速率與理論傳輸速率的比值;ka、kb值一般在1附近浮動。
實際傳輸速率受硬件電路以及軟件設計的影響。假如以數據發送的前一時刻相對時間,作為發送數據的第一個時間戳T1。則首先發送數據單片機內部裝載,將發送數據以UWB的方式進行傳輸等操作,都會影響實際傳輸與理論傳輸的比值。由于數據傳輸是以光速傳播的,所以細微的差別反映到距離上面就會很大[2]。
UWB通信采用單脈沖通信,不需要調制和解調電路,在一定程度上,減少了損耗時間和功率,使距離的計算更加準確。
目前,有兩種方式來實現UWB通信。一是標簽和3個基站,按照上述方式分別進行通信。這樣做的優勢是,獨立通信互不影響,而缺點是耗時時間長,功率消耗大。其二是標簽只發送一次開始和截止信號,利用3個基站的不同回復完成通信的需求。具體通信流程如圖4所示。

圖4 UWB通信示意圖Fig.4 Schematic diagram of UWB communication
結合上訴的特點,本文采用第二種通訊方式,基站僅發送Poll和Final數據,其余均為接受數據,可以大大減少通信時間,減少功耗。具體流程如下:
(1)標簽向各個基站發送Poll,等待標簽的回復。
假設A標簽收到了消息,標簽A回復RespA,而后等待基站收到標簽A的回復;
B標簽收到消息,回復RespB后等到基站收到標簽B的回復;C標簽收到消息,回復RespC后等到基站收到標簽C的回復;……
(2)標簽收到A、B、C基站的消息后,發送Final給各個基站。基站收到信息后,每個部分可按照下式進行求解。

利用電磁波在空氣中傳播距離公式S=c T,即可得到基站與標簽之間的距離。其中,S表示距離;c表示電磁波傳輸的速度;T表示數據傳輸的時間。
按照上述計算方式可得到標簽與三點坐標的距離。三角定位系統示意如圖5所示。在理想狀態下可以得到圖5(a)的形式。但是實際過程中還是會有偏差,一般會出現圖5(b)、圖5(c)的形式。

圖5 三角定位系統示意圖Fig.5 Schematic diagram of the triangulation system
途中陰影部分即為計算位置的有效范圍,本文采用牛頓迭代確定最優位置[3]。設3個基站點的坐標分別為:A(x1,y1),B(x2,y2),C(x3,y3);標簽坐標T(x,y);d1、d2、d3表示標簽與基站A、B、C的距離。利用基站的坐標可以得到公式(9)[4]:

可以利用牛頓迭代法確定obj的最小值。當obj最小時,得到的(x,y)即為最優坐標。其中初始T(x,y)是隨機取值的。基本迭代原理如下:
(1)求目標函數對x,y的一階偏導數;
(2)求目標函數對x,y的二階偏導數;
(3)帶入牛頓迭代公式;
(4)若本次obj和上次obj相減的絕對值小于設定偏差值,則本次obj就是所求的坐標值。
本文通過UWB模塊之間通信來獲取標簽與基站的距離,利用牛頓迭代法來實現最優點的求解。基站A1的坐標為(0,0),基站A2的坐標為(3,0),基站A3的坐標為(0,3)。最終試驗數據見表1。
由表中的數據可以看出,最終坐標計算結果與測量距離的準確度有很大的關系。整體來看在基站圍成的內部準確度較好,外圍準確度較差;距離基站遠的地方較好,距離某一基站近的地方較差。
本文利用UWB模塊進行定位系統的設計。實驗最終數據表明,基本實現了對標簽的精準定位。本系統可以應用在居家生活需要定位的系統中,可以和小車等設備結合,節省人們的體力。由實驗數據結果也可以看出,距離計算的算法還有待提高。若要使數據更加準確,可以采用同步通信的方式,減少異步通信帶來的時間偏差。如在時間上要求更高,可以采取專用硬件計時的方式,或者采用時鐘頻率更高的芯片,減少數據傳輸時間的誤差。也可以改進算法,通過預設值和數據處理的方式,減少時間偏差。