
Paper Reading系列的第一篇我選了Widar2.0。做這個決定沒有猶豫在WiFi感知這條技術路線上這篇工作幾乎是所有后來者繞不開的里程碑。它的目標一句話就能講明白——只用一條Wi-Fi鏈路也就是一臺發(fā)射機加一臺接收機在目標人不攜帶任何設備的前提下利用人體對WiFi信號的反射把他在室內的行走軌跡實時畫出來。不是判斷有沒有人而是輸出一條連續(xù)的二維軌跡論文匯報的中位誤差做到了亞米級。對于做無線感知、CSI信號處理、室內定位相關工作的朋友這篇是必讀對于剛入門的同學它也像一個單鏈路物理極限在哪的參照系。下面這篇筆記不打算照抄論文章節(jié)而是按我自己的理解把最核心的三塊技術拆開講清楚CSI比值模型、多普勒MUSIC與身體速度輪廓BVP、以及從速度估計到軌跡恢復的完整鏈路。1. 為什么第一輪Paper Reading要從Widar2.0開始1.1 它解決的是一個不好賣但相當要命的問題室內人員跟蹤這件事說大不大說小不小。攝像頭方案依賴光照且天然有隱私爭議毫米波雷達成本高、對部署位置敏感讓用戶戴標簽或者拿手機又不算被動感知。WiFi的吸引力在于基礎設施早就鋪好了信號穿墻不用額外供電被測人也完全沒有感知。但把WiFi信號變成位置遠比想象中難。早期基于RSSI的方案精度只能到米級甚至更差后來的研究轉向CSI——信道狀態(tài)信息每個子載波都有獨立的幅度和相位信息量一下子大了好幾個量級。不過大多數(shù)CSI定位工作都默認需要一個前提多個WiFi鏈路同時觀測。因為單條鏈路上你最多知道目標距離這條鏈路在某一個幾何關系上的投影而二維坐標至少需要兩個約束。前代的Widar系統(tǒng)走的就是這條路用三條鏈路各自提取多普勒速度再交叉得到位置。而Widar2.0這篇工作最抓人的地方就是它把鏈路數(shù)砍到一條精度不僅沒掉還做到了亞米級。這在當時是一個相當反直覺的結論。1.2 這篇論文適合誰讀以及你需要的最低配置如果你剛開始接觸無線感知我的建議是先補三樣東西CSI到底是什么、多普勒頻移是怎么產生的、以及最基礎的譜估計概念FFT和相關性。有這三樣讀Widar2.0的大部分推導不會太吃力。至于MUSIC這類子空間方法論文里用得很克制理解其超分辨直覺就夠了不一定要從頭推矩陣分解。如果你是做系統(tǒng)的人這篇文章的工程價值同樣不少它證明了商用WiFi網卡、Linux下開源采集工具、幾個簡單的信號處理模塊就能搭出一套能跑的人體追蹤原型。我讀完最大的感受是這篇論文沒有堆砌花哨的深度學習模塊全靠物理模型和精巧的信號處理把性能頂上去——這種擰螺絲式的系統(tǒng)論文今天讀起來反而比很多刷榜的神經網絡工作更耐看。2. 單鏈路被動跟蹤難點到底在哪個環(huán)節(jié)2.1 多鏈路方案為什么讓人又愛又恨多鏈路方案思路直接三臺接收機分布在房間不同位置人走動時每條鏈路都產生多普勒頻移把三個方向上的速度分量測出來交匯就是位置。原理清晰實現(xiàn)也不算復雜但落地時全是坑。首先是部署一個房間擺三四個節(jié)點供電、擺放、遮擋都要考慮其次是同步不同網卡之間時鐘不同步相位處理很容易被噪聲淹沒最后是穩(wěn)定性某條鏈路信號弱了或者被家具擋住整個交匯結果就廢了。Widar2.0想回答的問題是如果只有一條鏈路物理上還有沒有足夠信息恢復二維軌跡答案是有的但要看你敢不敢把人體當成一個分布式目標來處理而不是一個質點。2.2 一條鏈路上到底能擠出什么物理量單條鏈路能拿到的原始量就三個幅度、相位、以及多個天線之間的相對相位差。幅度受環(huán)境反射影響太大不夠穩(wěn)單天線相位又因為收發(fā)時鐘不同步在包間隨機跳變不能直接用。真正有價值的可觀測物理量有兩個——多普勒頻移和到達角AoA。多普勒頻移本質上是相位隨時間的旋轉速率人體移動導致反射路徑長度變化路徑長度每變化一個波長相位就轉一圈。AoA可以用接收端的兩根天線做干涉測量給出一條反射路徑的來波方向。有意思的是這兩個量不是獨立的多普勒大小取決于人的速度在特定方向上的投影而這個投影方向和AoA、以及收發(fā)端的幾何位置綁定在一起。所以理論上從一對多普勒AoA里可以反解出人的速度向量。Widar2.0的整個算法鏈本質上是把這條反解路徑做扎實了。難點在于反射信號太弱了。人體反射的路徑比直射路徑弱二三十個分貝淹沒在靜態(tài)分量里商用WiFi的相位隨機跳變又遠大于你要測的相位旋轉。所以論文的第一步必須先解決怎么把干凈的相位變化提出來。3. 關鍵預處理CSI比值模型如何把隨機相位洗干凈3.1 原始CSI相位為什么不能直接用先把信號模型擺出來。接收端拿到的CSI可以寫成兩部分的疊加靜態(tài)分量包含直射路徑和墻壁、家具上的靜態(tài)反射它隨時間基本不變動態(tài)分量來自人身上各個散射點隨著人體運動路徑長度不斷變化所以這一項帶有一個隨時間旋轉的相位旋轉速率就是多普勒頻移。理想情況下我們只需要觀測動態(tài)分量的相位旋轉。問題在于商用WiFi網卡給出的CSI相位里混著一堆莫名其妙的項載波頻率偏移CFO、采樣頻率偏移SFO、包檢測時延PDD每一項都會在包與包之間隨機抖動。這些抖動疊加起來相位噪聲的幅度遠大于多普勒引起的相位旋轉直接看原始相位曲線基本就是一團亂麻。3.2 比值而不是差值一次共模對消Widar2.0的處理辦法干凈利落接收端用兩根天線取兩個CSI的比值。關鍵原因是兩根天線共用同一個射頻前端、同一個本振那些隨機的CFO、SFO、PDD相位項在兩根天線上是共同出現(xiàn)的。做除法之后共模誤差精確抵消剩下的比值只反映兩條信道響應本身的相對關系。比值模型在復平面上有一個非常漂亮的幾何解釋當人移動時動態(tài)分量繞靜態(tài)分量旋轉比值的軌跡畫出來是一個圓弧。圓弧旋轉的角速度恰好就是多普勒頻移。換句話說原本作為干擾的強靜態(tài)路徑在這里變成了一個天然的本振把微弱的動態(tài)反射信號通過混頻效應搬移到了可觀測的頻段。這就像收音機里的超外差結構載波信號雖然強但有用的調制信息正是通過與本地振蕩器混頻才解出來的。提示如果你后面要復現(xiàn)這段記住比值模型的前提條件是兩個天線的靜態(tài)分量有可比性。如果其中一根天線被遮擋到幾乎收不到直射信號圓弧會退化多普勒峰值也就跟著糊掉。3.3 這個模型為什么能成為后續(xù)工作的標準件我覺得CSI比值模型是整篇論文里最值得偷走的模塊。它的前提條件很寬松接收端雙天線、收發(fā)端不需要同步、不需要額外校準。后來的很多工作——呼吸檢測、心率估計、手勢識別、人群計數(shù)——都直接沿用了這個預處理模塊??梢哉fWidar2.0不只是做了一個追蹤系統(tǒng)它還順帶定義了一種通用的CSI相位清理范式。在讀這篇論文之前我一直以為CSI相位是廢的讀完才明白相位不是廢是缺一個正確的參考系。4. 多普勒譜的凈化與身體速度輪廓BVP如何成為方向指紋4.1 為什么短時FFT不夠要上MUSIC拿到干凈的比值序列后下一步是對一個短時間窗求多普勒譜。時間窗不能太長因為人體運動是非平穩(wěn)的窗太長會把不同的速度糊在一起但窗短了FFT的頻率分辨率又不夠——分辨率大概是1/窗長一個200毫秒的窗對應的頻率分辨率只有5赫茲換算成速度分辨率在5GHz頻段大約是每秒零點幾米根本不夠用。所以論文用了MUSIC算法做超分辨譜估計。MUSIC的思路本質上是對信號自相關矩陣做特征分解把空間分成信號子空間和噪聲子空間然后用噪聲子空間的正交性去掃描頻率得到一個尖銳的譜峰。更重要的是Widar2.0的多普勒MUSIC把多普勒和到達角放在一起做一個二維網格搜索同時估計出能量峰在多普勒AoA這個二維平面上的位置。這一步從工程角度看很重但從原理上理解很簡單它把原本在頻譜上重疊的多條反射路徑在角度維度上分開來。4.2 BVP到底是什么人體不是質點而是一團速度云走路的時候人體不是一個點。軀干以行走速度整體平移手臂和腿做周期擺動各個散射點的瞬時速度完全不同。每個散射點對WiFi信號產生一個多普勒貢獻貢獻大小取決于該點速度在鏈路幾何方向上的投影。如果把一個時間窗內所有散射點的多普勒AoA能量峰收集起來再變換到速度域你會得到一張能量分布圖——橫縱軸是速度向量的兩個分量顏色深淺代表這個速度分量有多強。這就是BVPBody Velocity Profile身體速度輪廓。BVP最有價值的地方在于它的形狀和人的行走方向強相關。朝鏈路方向走軀干的多普勒投影最大能量峰集中在高速區(qū)橫著走投影接近零能量峰塌到低頻區(qū)斜著走還會出現(xiàn)左右不對稱的展寬。可以說BVP把人往哪個方向走這個信息編碼成了一張可匹配的二維模式。4.3 離線模板與在線匹配的工程細節(jié)論文采用的是一種典型的指紋匹配流程。離線階段在目標環(huán)境里讓人沿著若干已知方向行走例如每15度一個方向共24個方向每個方向采集并保存一條BVP模板。在線階段把當前時間窗計算出的BVP和模板庫做匹配得出最可能的行走方向。速度則從軀干對應的主導多普勒峰反推——多普勒頻率等于行走速度乘以幾何投影系數(shù)系數(shù)由AoA和收發(fā)端坐標算出。這個設計其實很有工程巧思它把方向估計降維成了一個模板匹配問題避免了復雜的多普勒幾何解算。代價是需要在新環(huán)境做一次標定采集這個我們在后面討論局限時再說。5. 從一系列速度估計到一條干凈軌跡5.1 為什么不能直接把速度積分成軌跡既然每個時間窗都能估計出速度向量貌似直接把速度乘上時間間隔累加就行了。實際做起來會一塌糊涂原因有三個初始位置未知——WiFi感知只能測速度相對變化測不出絕對坐標方向歧義——在鏈路幾何下速度向量的某些鏡像配置會產生幾乎相同的多普勒AoA觀測積分漂移——速度估計有噪聲誤差會隨著積分不斷積累走幾步就飄出房間了。所以論文把軌跡恢復當成一個序列決策問題來處理而不是單純的數(shù)值積分。我記得的核心思路是枚舉若干可能的初始狀態(tài)在候選軌跡集合上施加連續(xù)性約束和先驗知識最后選出一條最自洽的軌跡。形式上非常像一個在候選狀態(tài)網格上的隱馬爾可夫解碼動態(tài)規(guī)劃在這里承擔了主要的搜索任務。5.2 時間連續(xù)性如何消解空間歧義單看一個時間窗左右鏡像的速度估計無法區(qū)分。但人走路是連續(xù)的相鄰時間窗的速度變化不會突變尤其是方向角走直線時基本不變轉彎時平緩過渡。利用這個連續(xù)性窗口之間的模糊模糊自然就消掉了——如果上一幀選的是右側解這一幀強行選左側解會導致一個不自然的急轉彎連續(xù)性得分就會懲罰它。所以很多看似困難的方向歧義問題在序列層面上根本不成立。這也是我對這個系統(tǒng)最服氣的地方它沒有試圖在單幀內解決所有歧義而是把時間維度當成一個隱式的消歧工具。5.3 計算量與實時性的權衡二維MUSIC的網格搜索在計算上不便宜。論文的做法我記得是把可搜索的多普勒AoA網格事先定好配合預計算的矩陣分解在線階段每個時間窗的開銷被壓到可接受范圍。如果你想復現(xiàn)并做實時系統(tǒng)這塊大概率是第一個性能瓶頸。一個務實的做法是降低到達角方向的網格密度畢竟AoA的物理分辨率受天線間距限制掃得再密也提不了真實分辨率。6. 實驗效果與邊界條件6.1 我記憶里的實驗配置具體參數(shù)請以原文為準論文的實驗用的是典型的商用WiFi網卡接收方案發(fā)射端一臺筆記本接收端一臺筆記本配三根天線工作在5GHz頻段、802.11n協(xié)議。追蹤區(qū)域是普通的室內環(huán)境包含直視LOS和非直視NLOS兩種場景地面真值我記得是通過攝像頭式動捕系統(tǒng)標定的。需要強調一下單鏈路指的是單條發(fā)射-接收鏈路接收端仍然保有多根天線這并不違背論文的核心賣點——畢竟目前隨便一個商用AP都至少有兩根天線。6.2 精度數(shù)字與對比如果我沒記錯論文報告的中位跟蹤誤差在0.7米上下90分位大約在1.5米左右。這個數(shù)字放在今天看也許不算驚艷但放在當時的環(huán)境下很能說明問題前代Widar要三條鏈路才能達到的精度Widar2.0用一條鏈路就拿到了。論文里還有不少對比實驗包括不同行走路線、不同房間、LOS/NLOS切換這里不一一列舉。下面這張類比表格是我自己整理的用來理解不同方案的本質差異方案鏈路/設備典型精度參考主要約束多鏈路CSI追蹤3條WiFi鏈路米級到亞米級部署節(jié)點多、同步復雜單鏈路CSI追蹤Widar2.0類1條WiFi鏈路多天線接收亞米級需要離線方向模板、限單人攝像頭動捕多個相機毫米級布置昂貴、隱私敏感6.3 它的邊界哪些場景會露餡第一人必須保持正常步態(tài)的行走。站立不動、原地踏步、爬行這類低速非周期運動多普勒信息太弱BVP匹配基本失效。這也決定了Widar2.0定位在追蹤而不是存在感知。第二只支持單人。兩個人的BVP在速度域疊加在一起模板匹配會直接錯亂后續(xù)第三代系統(tǒng)才把多目標問題撿起來做。第三存在多普勒盲區(qū)。移動方向恰好垂直于鏈路角平分線時速度投影趨近于零速度估計的置信度會明顯下降軌跡在那一片區(qū)域會抖動。第四依賴環(huán)境離線標定。搬動家具、改變房間布局后靜態(tài)分量變了BVP模板需要重新采集這是所有指紋方案的通病。7. 讀完之后我的實操體會與這條線的后續(xù)7.1 如果要復現(xiàn)我覺得最容易踩的幾個坑第一個坑在數(shù)據(jù)采集階段發(fā)射端和接收端必須保持物理靜止。哪怕接收網卡被碰到一毫米靜態(tài)分量也會變比值模型里那個固定圓心就不成立了。第二個坑在天線選擇上比值模型需要兩根天線同時看到相近強度的靜態(tài)路徑選天線時最好看一下兩個CSI的幅度基線差異過大就得換一對。第三個坑在時間窗長度窗太短MUSIC分辨不出低頻成分窗太長轉彎這種快速變化會被平滑掉。我當時用大概0.3秒的窗長試下來效果不錯但最優(yōu)值還得根據(jù)你的具體場景調。第四個坑是離線模板的采集質量采集時要勻速直線走不要刻意放慢或者邊走邊停否則模板里會混入異常速度分布匹配時反而干擾方向判斷。如果一開始就在真實房間里連續(xù)走各種復雜路徑調試出了問題很難定位是預處理、譜估計還是匹配環(huán)節(jié)的鍋。更穩(wěn)妥的做法是先在可控場景里復現(xiàn)論文的最簡實驗——讓目標在鏈路正前方沿已知方向直線往返把每一步的中間輸出比值相位、多普勒譜、BVP全部打印出來檢查。哪一步和理論對不上就在哪一步修。7.2 從這篇往后看一條研究路線的延伸Widar2.0的影響不止于追蹤本身。它建立的速度輪廓這一中間表示后來被廣泛挪用到了WiFi手勢識別、身份識別等方向——本質上都是讓人體運動在速度域留下可區(qū)分的痕跡。它的Ratio模型更是成了WiFi感知社區(qū)的一種標準預處理模塊。再往后同一系列的后續(xù)工作把研究對象從單目標擴展到多人、從走路擴展到細粒度手勢還引入了跨環(huán)境泛化的問題但細看的話核心模塊還是當年那套相位清理高分辨譜估計模式匹配的組合。我覺得這篇論文最值得學習的地方不是某一個算法的精度數(shù)字而是它看問題的角度不要把被追蹤者當成一個點目標去定位而是把他當成一個持續(xù)產生速度信號的一團散射體先恢復速度場再通過積分和約束把軌跡找回來。這個先測速度再定位置的框架比直接用深度學習做端到端回歸要有解釋力得多。7.3 一個讀論文的小建議最后分享一個我自己用下來的習慣讀這類信號處理系統(tǒng)論文拿到文章先別急著看實驗花二十分鐘把第3章的幾何圖親手畫一遍——把發(fā)射機、接收機、人的散射區(qū)域畫在紙上然后自己寫出多普勒頻率的表達式。畫完你就會發(fā)現(xiàn)后面所有算法模塊都是為了解決這張圖上暴露出來的某一個具體問題。這個過程比通讀十遍正文都管用我也建議你試試。