【導讀】無線電定位系統(tǒng)已成為幾乎所有類型的移動設備和相關應用的標配功能。在眾多無線電定位方法中,基于超寬帶 (UWB) 射頻通信的實時定位系統(tǒng) (RTLS) 扮演了中樞角色,確保在 GPS 等更為人熟悉的技術無法提供覆蓋時,也能獲取定位信息。
隨著更高精度 RTLS 需求的日益增長,開發(fā)人員發(fā)現(xiàn)自己被困在雙向測距或到達時間差 (TDOA) 定位等復雜的高精度方法之中。
Decawave 的集成式模塊和軟件為開發(fā)人員提供了一種更簡單的 RTLS 解決方案,能夠輕而易舉地提供更精確的定位結(jié)果。
本文將回顧包括雙向測距和 TDOA 在內(nèi)的 RTLS 應用及算法,并討論不同 RTLS 方法的相關實現(xiàn)權(quán)衡。之后,本文將介紹一種 Decawave UWB 收發(fā)器,重點說明使用該器件進行設計的具體要求。最后,本文將探討 Decawave 軟件架構(gòu)和配套的固件開發(fā),說明在 Decawave 平臺上開發(fā)用戶應用的具體方法。
RTLS 系統(tǒng)的作用
精密 RTLS 已成為在辦公大樓、倉庫、制造廠和裝配線中用于確定或跟蹤人員及移動資產(chǎn)位置的有效方法。依據(jù)此方法,一個移動對象(標簽)使用低速率無線個人局域網(wǎng) (LR-WPAN) 標準 IEEE 802.15.4-2011 中規(guī)定的標準格式和 UWB 技術,與固定位置的設備(定位點)交換信息。通過確定標簽與多個定位點之間的距離,相關應用可以確定標簽相對這些已知定位點的位置,進而確定標簽的絕對位置。
RTLS 方法
RTLS 應用使用多種方法確定距離。在最簡單的方法中,應用或標簽可以使用大多數(shù)收發(fā)器提供的接收信號強度指示器 (RSSI) 參數(shù),來評估標簽相對發(fā)射定位點的位置。由于存在多種可能影響鏈路預算的因素,此方法最多只能提供粗略的位置估計。相比之下,許多基于 RTLS 的新興應用要求將絕對位置確定到幾厘米的精度。
高精度 RTLS 使用飛行時間方法,而這類方法幾乎不受射頻信號強度大幅變動的影響。依據(jù)此方法,可通過測量射頻信號從標簽傳遞到多個定位點所需的時間,來確定標簽的位置。利用射頻信號通過空氣傳播時的已知傳播延遲,RTLS 應用可以將飛行時間轉(zhuǎn)換為距離。
例如,如果標簽到所有三個定位點之間的飛行時間完全相同,那么按理說,這種情況僅在標簽與這些定位點等距時才會出現(xiàn)。由于應用知道各個定位點的確切位置,因此它能確定標簽的絕對位置。
但是,要測量標簽發(fā)射器的傳播時間,定位點接收器需要使用與標簽相同的時基,才能正確評估標簽消息中內(nèi)嵌的時間信息。如果定位點的時基滯后或領先于標簽的時基,則計算的距離將會分別比實際距離更近或更遠。
一種 RTLS 方法采取簡單的方式應對這一問題,即對標簽發(fā)射器和定位點接收器進行時間同步,確保每個定位點接收消息的時基與標簽相同。即使在最佳情況下,實現(xiàn)時間同步也很有挑戰(zhàn),而在無線標簽四處移動的 RTLS 應用中,這根本就不切實際。
另一種方法 TDOA 僅對定位點進行同步,從而消除了與移動標簽同步相關的難點。為確定位置,RTLS 應用使用跨多個定位點測得的標簽信號到達時間之差。例如,考慮之前三個定位點(A1、A2 和 A3)圍繞一個標簽等距離分布的示例。在標簽移動后,如果各個定位點的 TDOA 被發(fā)現(xiàn)分別為 0、1 納秒 (ns) 和 0,則表示該標簽在遠離定位點 A2 的直線方向上移動了約 30 厘米 (cm)(假設射頻傳播的速度為光速)。TDOA 的定位點同步要求與嘗試同步定位點和標簽相比,難度要小得多。但即便如此,此方法的精度仍取決于高度精確的同步。即便是一納秒的同步差,也可能導致位置測量出現(xiàn)幾厘米的差別。
雙向測距
雙向測距 RTLS 方法完全不需要精確的時間同步,但在標簽中引入了傳輸能力要求。這種方法通過支持標簽和定位點彼此交換定時信息,來規(guī)避不同時基帶來的不確定性。標簽和定位點無需同步它們的時基,而是使用一種簡短的雙向信息傳輸協(xié)議,實現(xiàn)精確地確定飛行時間和準確地計算標簽位置。
依據(jù)此方法,標簽發(fā)射簡短的標識信號,向周圍的定位點“亮明身份”。每個收到標簽的初始標識信息的定位點隨即與標簽合作進行簡短的雙向數(shù)據(jù)交換,用于確定飛行時間,而無需考慮定位點與標簽之間存在的時基差。
Decawave 在其雙向測距 RTLS 協(xié)議中,從發(fā)現(xiàn)階段和測距階段的角度定義了此過程(圖 1)。在發(fā)現(xiàn)期間,標簽定期傳送簡短的標識信號(即眨眼信號),并等待來自定位點的響應。在標簽和定位點彼此識別后,配對的標簽和定位點使用簡短的雙向信息交換,其中包含了測距所需的信息。
圖 1:在 Decawave 的雙向測距協(xié)議中,標簽和定位點交換一系列消息,以完成發(fā)現(xiàn)并提供測距信息。(圖片來源:Decawave)
對于開發(fā)人員而言,實現(xiàn)這些精確設計的消息交換協(xié)議及其底層 UWB 無線電子系統(tǒng)帶來的挑戰(zhàn)可能令人生畏。但憑借 Decawave DWM1001 模塊,開發(fā)人員只需很少的額外工作,就能快速向其應用中添加精確的 RTLS 功能。
集成式 RTLS 模塊
Decawave DWM1001 模塊可完整實現(xiàn) RTLS,將 Decawave DW1000 UWB 收發(fā)器與一個 Nordic Semiconductor NRF52832 無線 MCU 和一個 STMicroelectronics LIS2DH12 3 軸運動傳感器集成在一起。盡管 DW1000 提供符合 IEEE 802.15.4-2011 標準的射頻信號發(fā)送功能,但 NRF52832 MCU 仍針對 RTLS 應用執(zhí)行其內(nèi)嵌的固件。LIS2DH12 傳感器在電源管理中扮演著重要的角色。
在任何復雜的射頻應用中,射頻設計往往都會帶來一些最艱巨的挑戰(zhàn),尤其在要求極小封裝和極低功耗的移動應用中。DWM1001 模塊通過充分利用 DW1000 收發(fā)器提供的集成式射頻設計(圖 2)解決了這些問題。
圖 2:Decawave DW1000 收發(fā)器集成了無線電信號路徑和數(shù)字控制邏輯,以提供一個完整的符合 IEEE802.15.4-2011 標準的系統(tǒng)。(圖片來源:Decawave)
DW1000 提供集成了射頻前端的完整 UWB 收發(fā)器,能夠支持六個從 3.5 GHz 到 6.5 GHz 的 IEEE802.15.4-2011 通道,標準比特率為 110 Kb/s、850 Kb/s 和 6.81 Mb/s。該器件的集成數(shù)字控制子系統(tǒng)用于管理收發(fā)器,并支持雙向測距和 TDOA RTLS 系統(tǒng),定位精度可達 10 厘米。利用集成的一次性可編程存儲器 (OTP),開發(fā)人員可以存儲用于校準和糾錯的數(shù)據(jù),同時器件的可配置不間斷存儲器 (AON) 會在器件處于下文所述的低功耗狀態(tài)期間保留配置數(shù)據(jù)。
在工作期間,該設備發(fā)送和接收標準 IEEE802.15.4-2011 幀,其中包含同步標頭 (SHR)、物理層標頭 (PHR),以及構(gòu)成總體物理層服務數(shù)據(jù)單元 (PSDU) 的多達 127 字節(jié)的數(shù)據(jù)。除了標準幀以外,該設備還支持專有幀格式,該幀格式為需要發(fā)送更大數(shù)據(jù)有效載荷、但不要求符合 IEEE802.15.4-2011 標準的應用提供了多達 1023 個數(shù)據(jù)字節(jié)。
對于符合標準的應用,開發(fā)人員可以從一系列工作模式中進行選擇,以滿足特定的雙向測距和 TDOA 操作使用實例。這些工作模式預先組合了數(shù)據(jù)速率、有效載荷大小和預先配置的前導碼長度。例如,適用于遠程應用的模式組合了較低的數(shù)據(jù)速率以及有利于在干擾或較弱信號中完成發(fā)現(xiàn)和測距的較長前導碼。反之,具有較高數(shù)據(jù)速率和較短前導碼的模式則支持短程應用。其他模式以不同大小的數(shù)據(jù)有效載荷支持這類遠程和短程應用的特征。
功耗最小化
在實踐中,開發(fā)人員會選擇幀大小盡可能短的工作模式,以最大限度減小總體功耗,并讓器件快速恢復低功耗狀態(tài)。DW1000 提供了多種低功耗模式。在非活動期內(nèi),可以將器件置于待機模式,此模式的電流消耗僅為 19 毫安 (mA)。如果需要長期保持非活動狀態(tài),開發(fā)人員可將器件置于低功耗休眠模式,此時的電流消耗僅約 1 微安 (μA),而深度睡眠模式的電流消耗更是不超過 100 納安 (nA)(典型值 50 nA)。
但與任何射頻設計一樣,收發(fā)器工作期間的功耗會顯著增大。例如,要傳輸符合 IEEE802.15.4-2011 標準的幀,同步標頭和數(shù)據(jù)包等較長的幀組件消耗了大部分功耗(圖 3)。
圖 3:Decawave DW1000 的 RTLS 幀傳輸會導致各個幀組件的功耗顯著增大,這促使設計人員開始尋求具有最短的有用同步標頭和數(shù)據(jù)有效載荷的工作模式。(圖片來源:Decawave)
與接收器操作相關的功耗甚至更大,這給功耗受限型設計帶來了更艱巨的挑戰(zhàn)(圖 4)。開發(fā)人員可以將 DW1000 設定為在發(fā)送或接收操作后恢復其中一種低功耗狀態(tài)。即便如此,標準協(xié)議和幀的性質(zhì)使得用于降低幀操作期間功耗的選擇很少。
圖 4:由于前導碼查尋階段的持續(xù)時間較長,因此接收幀所需的功耗要求甚至高于傳輸操作。(圖片來源:Decawave)
DW1000 提供了獨特的節(jié)能功能來降低前導碼 RX 階段的功耗。開發(fā)人員可以為器件編制專門的前導碼嗅探模式,而不是讓接收器一直保持工作狀態(tài)。這種情況下,DW1000 定期為接收器通電,查找前導碼,如果未找到前導碼則恢復待機狀態(tài)(圖 5)。
圖 5:開發(fā)人員可通過使用 DW1000 的嗅探功能來降低與接收器操作相關的功耗,使得器件在待機模式與接收器活動模式之間交替變化。(圖片來源:Decawave)
前導碼嗅探等功能對于電池供電型標簽而言尤其重要。開發(fā)人員可在 RTLS 操作期間應用多種節(jié)能方法。其中一種方法利用的是圖 1 所示雙向測距協(xié)議中存在的不同已知延遲。
例如,在發(fā)現(xiàn)階段,定位點對標簽“眨眼信號”的測距初始化應答會在一定的延遲后發(fā)生。開發(fā)人員可基于幀率和其他參數(shù)估算此延遲,在其定位點設計中測量其實際值,甚至在其定位點設計中構(gòu)建特定的響應延遲時間。然后,開發(fā)人員可以在預期的延遲時間內(nèi)安全地將標簽接收器保持關閉狀態(tài),要搜尋響應則將接收器開啟,如果測距初始化應答未在合理的窗口內(nèi)到達,則將接收器再次關閉。
類似地,開發(fā)人員可以采取措施來限制在測距過程中需要將無線電保持開啟狀態(tài)的時間。例如,開發(fā)人員可以在設備中預加載所有需要的數(shù)據(jù),并使用直接存儲器訪問來加快 DW1000 與主機內(nèi)存之間的數(shù)據(jù)傳輸。
雖然這些低級優(yōu)化可以提高增量節(jié)能,但開發(fā)人員還可通過動態(tài)更改位置更新速率進一步改善節(jié)能效果。標簽停止移動后,便沒有必要繼續(xù)執(zhí)行高能耗的發(fā)現(xiàn)和測距階段。標簽可以安全地進入低功耗休眠狀態(tài),并在其開始移動后喚醒,繼續(xù)以標稱速率進行更新。
通過集成 LIS2DH12 運動傳感器,DWM1001 模塊支持動態(tài)速率調(diào)整,并且支持兩種運動相關的工作模式:低功耗和響應模式。開發(fā)人員可以對該模塊進行配置,在 LIS2DH12 感應到模塊處于靜止狀態(tài)時,DW1000 收發(fā)器以低功耗模式運行。當 LIS2DH12 檢測到移動時,收發(fā)器可以恢復為響應模式,這時 DW1000 收發(fā)器將恢復正常的更新速率。
開發(fā)人員還可以進一步優(yōu)化其 RTLS 應用,基于對象的速度和加速度來控制更新速率。例如,緩慢移動的標簽可能只需較低的更新頻率便可保持必要的定位精度。隨著標簽速度的增加,應用可通過提高位置更新速率進行響應。
RTLS 開發(fā)
除了能夠支持動態(tài)更新速率等 RTLS 特性之外,該模塊還提供了基本的 RTLS 開發(fā)優(yōu)勢。例如,DW1000 收發(fā)器針對電源去耦、天線網(wǎng)絡匹配、基準振蕩器和其他元器件采行了多種特定的接口要求(圖 6)。類似地,NRF52832 無線 MCU 和 LIS2DH12 運動傳感器也存在自己的接口設計需求。
圖 6:Decawave DW1000 收發(fā)器采用嚴格的接口要求,從而確??煽康碾娫础⑸漕l和定時信號。(圖片來源:Decawave)
盡管類似這樣的高級器件采用了高度簡化的設計,但在要求以最低功耗實現(xiàn)最高性能的設計中,設計人員要想優(yōu)化集成,仍可能面臨嚴峻的挑戰(zhàn)。DWM1001 模塊將集成要求降低至少數(shù)幾個電源、接地和數(shù)字接口的連接(圖 7)。
圖 7:Decawave DWM1001 模塊通過提供完全集成的設計(集成了 DW1000 收發(fā)器與無線 MCU 和運動傳感器)簡化了 RTLS 開發(fā)。(圖片來源:Decawave)
軟件模型
類似地,該模塊還利用其預裝的 Decawave 定位和網(wǎng)絡堆棧 (PANS) 庫固件大幅簡化了軟件開發(fā)與集成。PANS 庫基于 MCU 的片載低功耗藍牙 (BLE) 堆棧而構(gòu)建,包含開源 eCos 實時操作系統(tǒng) (RTOS)、一個網(wǎng)絡層,以及支持 BLE 服務、RTLS 管理服務和雙向測距 (TWR) 定位引擎的若干應用層(圖 8)。
圖 8:Decawave 定位和網(wǎng)絡堆棧 (PANS) 庫組合了藍牙堆棧、RTOS、網(wǎng)絡層和應用服務層,提供了一個功能豐富的 RTLS 應用平臺。(圖片來源:Decawave)
在構(gòu)建于 DWM1001 的 MCU 上運行的固件應用時,開發(fā)人員通過綜合應用編程接口 (API) 訪問 PANS 庫,該接口提供了各個 PANS 模塊的相應入口點,從而對該模塊進行配置和控制。PANS API 包含多個適用單獨模塊的 API 集,其中包括開發(fā)人員 C 代碼、串行接口庫(CPI 和 UART)以及 BLE 庫(圖 9)。
應用直接與這四個高級 API 連接,進而通過一個通用 API 解析器將這些調(diào)用轉(zhuǎn)換為對 PANS 庫的通用 API 調(diào)用,來實現(xiàn)對 PANS 庫的訪問。在此角色中,通用層提供了對 PANS 庫的通用接口。
圖 9:Decawave 通過廣泛的 API 提供 PANS 庫訪問,每個 API 提供對底層線程化執(zhí)行模型的簡單訪問。(圖片來源:Decawave)
線程化架構(gòu)
在此架構(gòu)中,DWM1001 固件軟件使用線程化模型,基本上為堆棧中的每個模塊和庫都提供了單獨的線程。堆棧頂部四個模塊各自的線程將解析請求傳遞到通用 API 解析器線程,該線程則驗證每條請求并調(diào)用 PANS 庫,從而生成相應的響應。通用 API 線程進而使用發(fā)起調(diào)用時提供的回調(diào)函數(shù),將結(jié)果返回到位于堆棧頂部的調(diào)用模塊。
盡管這一多層系統(tǒng)看似非常復雜,但從開發(fā)人員的編程模型看卻相對簡單。將 API 調(diào)用與獨立線程回調(diào)配合使用,有助于優(yōu)化資源利用率和總體應用性能。
與此同時,底層復雜性也被一系列 API 屏蔽,這些 API 將面向應用的高級調(diào)用轉(zhuǎn)換為經(jīng)優(yōu)化的與 DWM1001 硬件進行交互的特定線程化操作。DWM1001 編程模型則進一步簡化了開發(fā)人員與此系統(tǒng)的交互。開發(fā)人員使用系統(tǒng)內(nèi)建的用戶專用應用線程,而不需要與多個線程和 API 交互。
如列表 1 所示,開發(fā)人員使用一個簡單的 API 調(diào)用 (dwm_thread_create) 來調(diào)用注冊了用戶應用線程函數(shù) (app_thread_entry) 的用戶應用線程。
副本
/* Create thread */
rv = dwm_thread_create(THREAD_APP_PRIO, app_thread_entry, (void*)NULL, "app", THREAD_APP_STACK_SIZE, &hndl);
APP_ERR_CHECK(rv);
/* Start the thread */
dwm_thread_resume(hndl);
列表 1:利用 Decawave 線程模型,開發(fā)人員只需一對簡單的 API 調(diào)用便可注冊并啟動其用戶應用線程。(代碼來源:Decawave)
Decawave 提供了用戶應用線程和回調(diào)示例代碼。該示例代碼捆綁在一個 Oracle Virtual Box 虛擬機映像中,其中包含了完整的工具鏈、庫和簡單的示例應用。該軟件包設計為與連接到 Windows PC 的 Decawave DWM1001-DEV 開發(fā)板配合使用,提供了一個用于創(chuàng)建定制 RTLS 應用軟件的框架。
包含在該軟件包中的示例代碼演示了關鍵的用戶線程函數(shù)設計模式(列表 2)。在此示例中,用戶線程函數(shù) (app_thread_entry) 設置了應用特定的配置參數(shù)(例如更新速率),并使用 API 函數(shù) dwm_evt_cb_register 及其回調(diào)函數(shù)名稱 (on_dwm_evt) 注冊了回調(diào)。注冊回調(diào)后,示例線程進入主循環(huán) – 在此實例中為一系列延遲函數(shù)調(diào)用,用于減少資源利用。
副本
void app_thread_entry(uint32_t data)
{
.
.
.
/* Update rate set to 1 second, stationary update rate set to 5 seconds */
APP_ERR_CHECK(dwm_upd_rate_set(10, 50));
/* Register event callback */
dwm_evt_cb_register(on_dwm_evt, 0);
.
.
.
while (1) {
/* Thread loop */
dwm_thread_delay(100);
}
}
列表 2:在 Decawave 固件開發(fā)包的這個片段中,示例代碼展示了用于在用戶應用線程例程中注冊回調(diào)和執(zhí)行主循環(huán)的基本設計模式。(代碼來源:Decawave)
示例回調(diào)函數(shù) (on_dwm_evt) 演示了在發(fā)生事件時調(diào)用的基本事件處理程序(列表 3)。在此代碼示例中,唯一的有效事件是有可用的新位置信息 (DWM_EVT_NEW_LOC_DATA)。在該事件的處理程序中,代碼演示了檢索可用定位點生成的位置數(shù)據(jù)所需的簡單調(diào)用集。完成其事件處理任務后,回調(diào)直接進入休眠狀態(tài)。
副本
/**
* Event callback
*
* @param[in] p_evt Pointer to event structure
* @param[in] p_data Pointer to user data
*/
void on_dwm_evt(dwm_evt_t *p_evt, void *p_data)
{
int i;
switch (p_evt->header.id) {
/* New location data */
case DWM_EVT_NEW_LOC_DATA:
/* Process the data */
printf("nT:%lu ", dwm_systime_us_get());
if (p_evt->data.loc.p_pos == 0) {
/* Location engine is disabled */
} else {
printf("POS:[%ld,%ld,%ld,%u] ", p_evt->data.loc.p_pos->x,
p_evt->data.loc.p_pos->y, p_evt->data.loc.p_pos->z,
p_evt->data.loc.p_pos->qf);
}
for (i = 0; i < p_evt->data.loc.anchors.dist.cnt; ++i) {
printf("DIST%d:", i);
printf("0x%04X", (unsigned int)(p_evt->data.loc.anchors.dist.addr[i] & 0xffff));
if (i < p_evt->data.loc.anchors.an_pos.cnt) {
printf("[%ld,%ld,%ld]",
p_evt->data.loc.anchors.an_pos.pos[i].x,
p_evt->data.loc.anchors.an_pos.pos[i].y,
p_evt->data.loc.anchors.an_pos.pos[i].z);
}
printf("=[%lu,%u] ", p_evt->data.loc.anchors.dist.dist[i],
p_evt->data.loc.anchors.dist.qf[i]);
}
printf("n");
break;
default:
break;
}
/* Indicate the application has finished the tasks and can now */
dwm_sleep();
}
列表 3:此 Decawave 示例應用片段演示的回調(diào)提供了用于訪問新位置數(shù)據(jù)的基本事件處理程序。(代碼來源:Decawave)
例如,在一個完整的物聯(lián)網(wǎng) (IoT) RTLS 應用中,標簽和定位點會通過鏈接到連接互聯(lián)網(wǎng)的網(wǎng)關系統(tǒng)的路由定位點進行通信。Decawave 即將推出其第二版固件包,將通過基于 Linux 的軟件包提供網(wǎng)關支持,并會使用熟悉的 IoT 信息傳輸協(xié)議,包括 HTTP、WebSockets、MQTT 和 AMQP。
總結(jié)
RTLS 在廣泛的應用中扮演越來越重要的角色。盡管 RTLS 方法基于相對簡單的原理,但這些方法的實現(xiàn)需要復雜的射頻/模擬設計、系統(tǒng)設計以及軟件開發(fā),以確保使用最小的功耗獲得最高的精度。
Decawave DWM1001 模塊提供了完整的 RTLS 系統(tǒng),其中結(jié)合了 Decawave 的集成式 DW1000 UWB 收發(fā)器以及無線 MCU 和運動傳感器。利用此模塊和配套的軟件包,開發(fā)人員可以快速實現(xiàn)高精度的電池供電型 RTLS 系統(tǒng)。
推薦閱讀: