基於信號強度的測距收到環境的影響很大,一般誤差會比較大,也很少在真實系統中使用。在實際系統中,較為常用的時基於信號傳播時間來進行測距。
信號傳播時間或者叫飛行時間(ToF,Time of Flight),指信號在介質內傳播時間。已知信號在介質中傳播速度的情況下,使用飛行時間可以估算出信號經過的距離。
ToF測距原理
同步測量方法
如果發送端和接收端的精確時間同步,從發送方發送一個數據包到達接收方,如果能夠准確記錄發送和接收時間的話,是可以准備測量信號飛行時間的。即在發送端和接收端時間同步的前提下,接收端就可以記錄發送端在哪一時刻開始傳輸;隨后,在收到信號的第一時間,接收端記錄信號到達時刻的時間戳;最后,利用接收時間戳減去發送時刻即可得到信號飛行時間。 使用d表示發送端到接收端的距離,c表示信號的傳播速度(例如聲速),t表示測量得到的飛行時間,那么可以得到:
因此如何解決時鍾同步問題,是飛行時間測距工作的一個重點,也是難點。傳統網絡工作中提出了多種網絡時間同步機制,例如網絡時間協議(Network Time Protocol, NTP),它也是互聯網的時間同步機制。此外,全球定位系統(GPS)技術也能為不同設備提供全局時間同步,它的原理是在GPS衛星上運行一個高精度的銫原子鍾,GPS客戶機通過接收衛星發送的偽隨機序列,實現與衛星時鍾的同步。
現有的時間同步方法在實際使用中仍存在較大的局限性。例如NTP協議主要針對靜態網絡,並且需要頻繁交換消息來不斷校准時鍾頻率偏移帶來的誤差。此外,NTP協議毫秒級的精度無法滿足高精度測距等應用場景的需求。GPS能達到納秒級精度的同步,但GPS受環境遮擋影響大,只適用於室外空曠無遮擋的環境,無法適用於室內低功耗物聯網節點。
利用信號反射實現
由於直接ToF測距,同步發送端和接收端時間存在困難,因此有方法提出令接收端和發送端為同一設備,從而在計算飛行時間時避免收發機的時間同步。
-
第一種常見的做法是令測距對象作為反射體,直接反射傳輸的信號。這種方法要求反射體具有一定的體積,並且收發機能在全雙工模式工作,即發送信號的同時能接收來自目標對象反射的信號。
使用FMCW測量ToF:
FMCW(Frequency Modulated Continuous Wave,調頻連續波)是一種在高精度雷達測距中使用的技術,FMCW是頻率隨着時間線性增長的信號。FMCW技術有很長的使用歷史,使用范圍非常廣泛。近些年來,FMCW在物聯網的定位和感知的場景里面使用很多。很多前沿的研究工作,利用基於電磁波或者聲波的FMCW信號,來進行定位和感知的應用。 FMCW最直接的一個應用是利用反射信號與發射信號混頻得到的頻率偏移來進行ToF的測量。
如下圖實線所示,FMCW雷達將信號調制為一種特制的FMCW信號,其頻率周期性地隨時間遞增(從\(f_{min}\)到\(f_{max}\))或遞減(從\(f_{max}\)到\(f_{min}\))。一個頻率變換周期為T的遞增FMCW信號R(t)可以表示為:
\[R(t)=\cos \left(2 \pi\left(f_{\min }+\frac{B}{2 T} t\right) t\right) \]其中\(B=f_{max}–f_{min}\)表示頻率變化的帶寬。
FMCW雷達在掃頻周期內發射頻率變化的連續波,發射出去的信號被物體反射后的回波與發射信號疊加在一起被接收到。實際收到的信號會呈現上圖的特點,反射信號與發射信號存在着時間差。這個時間差在實際系統中不太好直接精確地測量出來(雖然也有一些研究工作試圖這么來做)。為了解決這一問題,這個時間差可以轉化為對應的頻率差,通過測量頻率差可以獲得目標與雷達之間的距離信息,這也是FMCW好用的主要原因。
差頻信號頻率較低,一般為KHz,因此硬件處理相對簡單、適合數據采集並進行數字信號處理。FMCW雷達具有容易實現、結構相對簡單、尺寸小、重量輕以及成本低等優點,有廣泛的應用前景。
由於反射回來的信號和原始信號的頻率差值Δf,和信號的傳輸時間Δt有線性變化關系,因此可以將對ToF的測量轉換為對信號頻率變化的測量。假設接收端和發送端之間的距離為d,因為傳輸時間Δt是往返的總時間,那么可以得到:
\[d=\frac{c\Delta t }{2} \]同時,根據圖中的三角函數關系,可以得到:
\[\Delta t=\frac TB\Delta f \]綜上計算出距離的為:
\[d=\frac{cT}{2B}\Delta f \]至於\(\Delta f\)的計算,需要計算出信號的起始頻率,實際上我們給定一個包含了多個FMCW信號的解碼窗口,如果我們能夠算出每個信號的起始頻率,也就能算出兩個信號的頻率差了。
此外,補充一些關於FMCW測距的知識點:
-
發射信號和反射信號同時收到的時候,兩個信號經過混頻器,產生IF信號。混頻器的性質為:
輸入\(x_1=sin[\omega_1 t+\phi_1]\),
輸入\(x_2=sin[\omega_2 t+\phi_2]\),
輸出\(x_{out}=sin[(\omega_1-\omega_2)t+\phi_1-\phi_2]\)
因此IF信號為與距離成正比的一個單頻正弦信號。
-
對於多物體,不同的距離可以導致不同的頻率差,即通過混頻器產生不同的單頻信號。但是觀測窗口長度有限,當觀測窗口較小時,在頻域上不足以區分兩個波峰,即不足以區分兩個距離相近的物體。
通過增加觀測窗口的時間可以使兩種頻率的信號的差距變大,以至於能夠在頻域區分不同的波形。
當觀測窗口變大時,帶寬B同比例放大,預示着更大的帶寬可能具有更好的距離分辨率。
由於觀測窗口T一般可以分隔頻率之差高於\(\frac1T\)Hz的信號頻率分量。
\[\Delta f=\frac{2\Delta dB}{cT_c}=\frac{S2\Delta d}{c}>\frac{1}{T_c},記S=\frac{B}{T_c} \]其中的\(T_c\)為IF信號的持續時間,也即觀測窗口的時間。
只需要滿足
\[\Delta d>\frac{c}{2B} \]即最小分辨距離為\(\frac{c}{2B}\),意味着提高帶寬B可以提高分辨精度。
-
對於B相同的兩組線性調頻脈沖,顯然它們的最小分辨距離是相同的,但是它們可能有不同的\(T_c\)(這里的\(T_c\)表示掃頻周期),我們接下來討論由此帶來的差異。
當我們獲得不同頻率的IF信號時,我們首先讓其通過一個低通濾波器,然后由ADC進行數字化,接着被發送到合適的處理器,如DSP。
當我們對信號進行數字化時,我們需要知道目標帶寬,以便適當地設置低通濾波器和ADC采樣率。
低通濾波器的截止頻率應大於等於IF的最大頻率。ADC采樣率也應大於該值。不過確切地說,為了信號重建,根據奈奎斯特采樣定理,這里的\(F_s\)應該大於二倍的IF最大頻率。
\[F_s\ge\ 2f_{IF_{max}}=\frac{S4d_{max}}{c}=\frac{B4d_{max}}{T_c} \]\[d_{max}=\frac{F_sc}{4S}=\frac{T_cF_sc}{4B} \]也就是說,為了達到相同的最大可測量距離,當B相同時,越大的掃頻周期可以使用更小的ADC采樣頻率,對ADC的采樣頻率限制將更寬松。
-
-
第二種方法是利用兩個設備分別作為發送端和接收端:發送端於時刻t0發送信號,接收端收到信號后,等待時間Δt后返回同樣的波,發送端記錄收到回復的時刻t1,從而得到距離:\(d=(v(t1−t0−Δt))/2\)。這種方法既不要求接收端和發送端時鍾同步,也不需要設備具有全雙工功能。
-
單邊雙向測距(Single-Sided Two-Way Ranging)
如上圖所示,通信由設備A發起。在\(t_1\)時刻,A發送Poll包給B,B在\(t_2\)時刻收到Poll包,然后在\(t_3\)時刻發送Resp包給A,最后A在\(t_4\)時刻收到Resp數據包。
\[T_f=\frac{(t_4-t_1)-(t_3-t_2)}{2} \]誤差分析:我們假設誤差來自於硬件的時鍾漂移,因此我們對設備A,B的時鍾進行如下建模:
\[\begin{array}{ll} \hat{t}_{a}=\left(1+e_{a}\right) t_{a} & (a=1,4) \\ \hat{t}_{b}=\left(1+e_{b}\right) t_{b} & (b=2,3) \end{array} \]其中\(e_a\),\(e_b\)分別為設備A,B的時鍾誤差。我們將\(t^a,t^b\)代入\(T_f\),得到考慮時鍾偏移后的結果:
\[\hat{T}_{f} &=\frac{\left(\hat{t}_{4}-\hat{t}_{1}\right)-\left(\hat{t}_{3}-\hat{t}_{2}\right)}{2} \\ \]因此誤差為:
\[\begin{aligned} e r r &=\hat{T}_{f}-T_{f} \\ &=e_{a} T_{f}+\frac{t_{3}-t_{2}}{2}\left(e_{a}-e_{b}\right) \end{aligned} \]不妨假設\(T_f\)=100ns, 則\(t_3−t_2≈1ms\),設備的時鍾漂移為20ppm,那么我們可以計算得到誤差約為20ns,對應6m的測距誤差。從上面分析,我們可以知道單邊雙向測距方法的主要誤差來自於兩個設備時鍾的漂移。所以我們如果在此基礎上采用一些常見的同步方法,可以有效的消除誤差。而接下來要介紹的雙邊雙向測距的方法,就是一種基於單邊雙向測距的可行的同步策略。
-
雙邊雙向測距(Double-Sided Two-way Ranging)
簡而言之就是比上述的單邊雙向測距多傳一次數據。
\[T_{f}=\frac{\left(\left(t_{4}-t_{1}\right)-\left(t_{3}-t_{2}\right)\right)+\left(\left(t_{6}-t_{3}\right)-\left(t_{5}-t_{4}\right)\right)}{4} \]\[\begin{array}{ll} \hat{t}_{a}=\left(1+e_{a}\right) t_{a} & (a=1,4,5) \\ \hat{t}_{b}=\left(1+e_{b}\right) t_{b} & (b=2,3,6) \end{array} \]\[\hat{T}_{f}=\frac{\left(\left(\hat{t}_{4}-\hat{t}_{1}\right)-\left(\hat{t}_{3}-\hat{t}_{2}\right)\right)+\left(\left(\hat{t}_{6}-\hat{t}_{3}\right)-\left(\hat{t}_{5}-\hat{t}_{4}\right)\right)}{4} \]
\[ \]\begin{aligned}
e r r &=\hat{T}{f}-T \
&=\frac{1}{2} T_{f}\left(e_{a}+e_{b}\right)+\frac{1}{4}\left(e_{a}-e_{b}\right)\left(\left(t_{3}-t_{2}\right)-\left(t_{5}-t_{4}\right)\right)
\end{aligned}\[ **相較於單邊雙向測距,誤差從主要是B設備從接收到發送的時間跨度轉向為上述跨度之差。** 不妨假設$T_f$=100ns, 例如如果我們使用的是Decawave發布的DW1000芯片,那么$((t3−t2)−(t5−t4))\in (0ns,8ns)$,這里我們取最壞的情況8ns,設備的時鍾漂移為20ppm,那么我們可以計算得到誤差約為2ps,對應0.6mm的測距誤差。可以看到,雙邊雙向測距在理論上的精度遠優於單邊雙向測距的方法。 \] -
上述的過程中兩個設備之間實際上通過了數據交換實現了同步的效果。但實際實現時,由於設備軟硬件調度、延遲等不確定因素,接收端很難控制等待時間恰好為Δt,很難做到精准的時間控制,因此實際測得的距離也存在較大誤差。
利用波速差實現
如果可以利用兩種不同的信號的話,兩種信號之間的波速差也可以被用來作為測距。
例如我們可以令發送端同時發送一道電磁波和聲波,然后在接收端記錄電磁波的到達時刻\(t_r\)和聲波的到達時刻\(t_s\)。則根據這兩個不同的到達時刻,可以計算出發送端與接收端之間的距離:
由於\(v_r=3×10^8m/s\)遠大於\(v_s=340m/s\),因此距離計算式可簡化為: