[讀論文]ArrayTrack: A Fine-Grained Indoor Location System
這篇文章描述的是一種基於WiFi的室內定位系統,稱為ArrayTrack。從作者對系統的命名中就能看出這種定位系統必然跟天線陣列有關。雖然從2000年的RADAR開始,室內定位的文章層出不窮,但這篇2013年的文章仍然能夠發表在NSDI 2013上,還是有其突出的地方的。
由於我不是學通訊出身,所以對其中許多問題只知道個大概,那麼也只能是在high level去描述一下ArrayTrack這個系統。首先,從定位的基本原理上說ArrayTrack是基於Arrival of Angle (AoA)的,也就是說在待定位的區域先部署一系列節點(論文中即是帶有天線陣列的AP),其中每一個節點都能測量出待定位裝置(比如手機,稱為client)的方向。一旦待定位裝置能夠被兩個或更多的節點觀測到,就能定出其具體位置了。比如下面的例子裡,如果兩個AP能夠測量出帶定位裝置對應的夾角a和b,那麼在假設知道AP1和AP2的座標情況下,可以計算出待定位裝置的座標。
基於AoA的定位系統中最核心的部分是如何測量待定位裝置的入射角,這也是這篇論文的重點。下圖是從論文中摘出來的,左圖描述了每個AP節點的結構,而右圖說明了測量角度的基本原理。在完全理想的情況下,即client與AP之間無遮擋,訊號傳播也不受環境的反射、折射等影響,那麼只需要兩根天線就能測量出client與AP的相對角度。假設兩根天線之間的距離是lambda/2,其中lambda表示client發出訊號的波長,那麼client與兩根天線的距離差為1/2*lambda*sin(theta),其中theta表示client與AP的相對角度。由於這個距離差,導致兩根天線收到的訊號波的相位有一定差異,這個差異為pi*sin(theta)。這樣只要能測量出兩根天線接收訊號的相位差就能反算出theta。
這只是角度測量的基本方法,現實中的情況比這要複雜的多,其中最大的麻煩就是多路徑效應,也就是說由client發出的訊號最終是從多條路徑傳輸到接收天線的,所以關鍵問題是判斷那路訊號是從client端直接傳輸到天線的。於是,ArrayTrack裡採用了一些關鍵的機制,具體來說,包括:
- Spatial smoothing 2.3.2:先將M根天線分為N組,進行N次測量後將結果平均,這樣做有利於降低多路徑效應帶來的噪聲;
- Array geometry weighting 2.3.3:測量得到的角度在某個範圍內比較靠譜,而超出這個範圍後就很可能受到噪聲的嚴重影響,所以給予不同測試結果不同大小的權重;
- Array symmetry removal 2.3.4:不要將天線排成一排,這樣會導致鏡面效果,無法區分究竟client在哪邊;
- Multipath suppression 2.4:來自直接路徑的訊號相對其它路徑更加穩定(不一定更強),利用這個特點可以突出直接路徑的訊號;
- AoA spectra synthesis 2.5:在有多個AP觀測到client的情況下,綜合考慮多個AP的測量結果最終確定client的位置。
作者最後用6個AP進行了測量,定位精度在1米以下。
總結:這篇論文之所以被NSDI收錄,應該有以下一些原因:
- 測量角度的基本原理雖然簡單,但要在現有的硬體平臺實現是有一定挑戰的,尤其對純做networking的人來說,評審通常喜歡看一些自己不那麼懂的東西,從中學到一些知識;
- 作者在基本原理的基礎上進行了一些優化,特別是前面列舉的一些關鍵機制,雖然說每個點都比較heuristic,但直觀也有直觀的好處,並且簡單的機制可靠性往往較高,也容易被人接受;
- 作者的實驗相對充分,由於硬體做出來了,比那些只通過軟體模擬的要可靠的多,這也是當前所有文章必備的一點;
- 定位效能不錯,在目前情況下能真正做到1米以下是非常困難的,這對真正做過定位的人來說,結果相對可信。