文章目录
前言
TOF(Time Of Fight)是指直接完成对飞行时间的测量,UWB定位系统中的TOF测距方式是指通过双向通信完成两个节点间的距离测量,即。该测距方式直接完成节点间距离测量,并进而可以实现节点间的时钟同步,是UWB定位系统中常用的一种测距方案。和TDOA相比,该方案可以直接测量两个节点间的距离,而不是通过搭建基站实现的位置解算。
1. 单边双向测距(SS-TWR, Single Side - Two Way Ranging)
1.1 测距方式
SS-TWR的过程如下图所示。
过程描述如下:
- 节点A发送poll消息,并记录发送时刻 TMARK p o l l A \text{TMARK}_{poll}^A TMARKpollA
- 节点B接收到poll消息,并记录接收时刻 RMARK p o l l B \text{RMARK}_{poll}^B RMARKpollB
- 节点B发送response消息,并记录发送时刻 TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB,消息中包含 RMARK p o l l B \text{RMARK}_{poll}^B RMARKpollB和 TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB,这里, TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB消息包含在消息内容中可以通过UWB芯片的延时发送功能来实现
- 节点A接收到response消息,并记录接收时刻 RMARK r e s p A \text{RMARK}_{resp}^A RMARKrespA
- 节点A可以通过上述过程计算出两节点之间的距离(即传输时间
T
^
p
r
o
p
\hat{T}_{prop}
T^prop),计算方式如下:
T ^ p r o p = T r o u n d − T r e p l y 2 \hat{T}_{prop} = \frac{T_{round}-T_{reply}}{2} T^prop=2Tround−Treply
其中: - T r o u n d = RMARK r e s p A − TMARK p o l l A T_{round} = \text{RMARK}_{resp}^A - \text{TMARK}_{poll}^A Tround=RMARKrespA−TMARKpollA
- T r e p l y = TMARK r e s p B − RMARK p o l l B T_{reply} = \text{TMARK}_{resp}^B - \text{RMARK}_{poll}^B Treply=TMARKrespB−RMARKpollB
1.2 误差分析
设节点A的钟差为 τ A \tau_A τA,钟漂为 δ A \delta_A δA,节点B的钟差为 τ B \tau_B τB,钟漂为 δ B \delta_B δB。因此有:
- TMARK p o l l A = τ A + t t m a r k p o l l , A × ( 1 + δ A ) \text{TMARK}_{poll}^A = \tau_A + t_{tmark}^{poll,A} \times (1+\delta_A) TMARKpollA=τA+ttmarkpoll,A×(1+δA)
- RMARK p o l l B = τ B + t r m a r k p o l l , B × ( 1 + δ B ) \text{RMARK}_{poll}^B = \tau_B + t_{rmark}^{poll,B} \times (1+\delta_B) RMARKpollB=τB+trmarkpoll,B×(1+δB)
- TMARK r e s p B = τ B + t t m a r k r e s p , B × ( 1 + δ B ) \text{TMARK}_{resp}^B = \tau_B + t_{tmark}^{resp,B} \times (1+\delta_B) TMARKrespB=τB+ttmarkresp,B×(1+δB)
- RMARK r e s p A = τ A + t r m a r k r e s p , A × ( 1 + δ A ) \text{RMARK}_{resp}^A = \tau_A + t_{rmark}^{resp,A} \times (1+\delta_A) RMARKrespA=τA+trmarkresp,A×(1+δA)
将上述四个公司带入两节点之间的传输时间的测量值计算公式,有:
T
^
p
r
o
p
=
T
r
o
u
n
d
−
T
r
e
p
l
y
2
=
(
t
r
m
a
r
k
r
e
s
p
,
A
×
(
1
+
δ
A
)
−
t
t
m
a
r
k
p
o
l
l
,
A
×
(
1
+
δ
A
)
)
−
(
t
t
m
a
r
k
r
e
s
p
,
B
×
(
1
+
δ
B
)
−
t
r
m
a
r
k
p
o
l
l
,
B
×
(
1
+
δ
B
)
)
2
=
t
r
o
u
n
d
−
t
r
e
p
l
y
2
+
t
r
o
u
n
d
δ
A
−
t
r
e
p
l
y
δ
B
2
=
T
p
r
o
p
+
δ
B
T
p
r
o
p
+
(
δ
A
−
δ
B
)
t
r
o
u
n
d
\begin{aligned} \hat{T}_{prop} &= \frac{T_{round}-T_{reply}}{2} \\ &= \frac{(t_{rmark}^{resp,A} \times (1+\delta_A) - t_{tmark}^{poll,A} \times (1+\delta_A)) - ( t_{tmark}^{resp,B} \times (1+\delta_B) - t_{rmark}^{poll,B} \times (1+\delta_B))}{2} \\ &= \frac{t_{round} - t_{reply}}{2} + \frac{t_{round}\delta_A - t_{reply}\delta_B}{2} \\ &= T_{prop} + \delta_B T_{prop} + (\delta_A - \delta_B) t_{round} \end{aligned}
T^prop=2Tround−Treply=2(trmarkresp,A×(1+δA)−ttmarkpoll,A×(1+δA))−(ttmarkresp,B×(1+δB)−trmarkpoll,B×(1+δB))=2tround−treply+2troundδA−treplyδB=Tprop+δBTprop+(δA−δB)tround
其中:
- T p r o p = t r o u n d − t r e p l y 2 T_{prop} = \frac{t_{round} - t_{reply}}{2} Tprop=2tround−treply为两个节点间的实际传输时间
- t r o u n d t_{round} tround为节点A的实际round trip时间
- t r e p l y t_{reply} treply为节点B的实际reply时间
从上述公式可知,单边双向测距的测距误差项为 δ B T p r o p + ( δ A − δ B ) t r o u n d \delta_B T_{prop} + (\delta_A - \delta_B) t_{round} δBTprop+(δA−δB)tround,所以:
- 节点间距离越远,误差越大,一般 δ A \delta_A δA的量级在 1 0 − 6 10^{-6} 10−6,因此该项误差可以忽略
- 一次测量的round trip时间越长,误差越大,这一项是单边双向测距的主要误差源。实际应用中,可以测得两节点之间的钟漂差值 δ A − δ B \delta_A - \delta_B δA−δB(也就是多普勒频率),则可以将这一项补偿掉,从而降低误差。另一方面,还需要尽量加快单次测量的round trip时间以降低误差。
2 双边双向测距(DS-TWR, Double Side - Two Way Ranging)
2.1 测距方式
DS-TWR相比SS-TWR多了一次传输,好处是测距精度与收发之间的切换延迟(即
T
r
e
p
l
y
T_{reply}
Treply)无关。该过程如下图所示。
过程描述如下:
- 节点A发送poll消息,并记录发送时刻 TMARK p o l l A \text{TMARK}_{poll}^A TMARKpollA
- 节点B接收到poll消息,并记录接收时刻 RMARK p o l l B \text{RMARK}_{poll}^B RMARKpollB
- 节点B发送response消息,并记录发送时刻 TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB,消息中包含 RMARK p o l l B \text{RMARK}_{poll}^B RMARKpollB和 TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB,这里, TMARK r e s p B \text{TMARK}_{resp}^B TMARKrespB消息包含在消息内容中可以通过UWB芯片的延时发送功能来实现
- 节点A接收到response消息,并记录接收时刻 RMARK r e s p A \text{RMARK}_{resp}^A RMARKrespA
- 节点A发送acknowledge消息,并记录发送时刻 TMARK a c k A \text{TMARK}_{ack}^A TMARKackA
- 节点B接收到acknowledge消息,并记录接收时刻 RMARK a c k B \text{RMARK}_{ack}^B RMARKackB
- 节点B可以通过上述过程计算出两节点之间的距离(即传输时间
T
^
p
r
o
p
\hat{T}_{prop}
T^prop),计算方式如下:
T ^ p r o p = T r o u n d 1 × T r o u n d 2 − T r e p l y 1 × T r e p l y 2 T r o u n d 1 + T r o u n d 2 + T r e p l y 1 + T r e p l y 2 \hat{T}_{prop} = \frac{T_{round1} \times T_{round2} - T_{reply1} \times T_{reply2}}{T_{round1} + T_{round2} + T_{reply1} + T_{reply2}} T^prop=Tround1+Tround2+Treply1+Treply2Tround1×Tround2−Treply1×Treply2
其中: - T r o u n d 1 = RMARK r e s p A − TMARK p o l l A T_{round1} = \text{RMARK}_{resp}^A - \text{TMARK}_{poll}^A Tround1=RMARKrespA−TMARKpollA
- T r e p l y 1 = TMARK r e s p B − RMARK p o l l B T_{reply1} = \text{TMARK}_{resp}^B - \text{RMARK}_{poll}^B Treply1=TMARKrespB−RMARKpollB
- T r o u n d 2 = RMARK a c k B − TMARK r e s p B T_{round2} = \text{RMARK}_{ack}^B - \text{TMARK}_{resp}^B Tround2=RMARKackB−TMARKrespB
- T r e p l y 2 = TMARK a c k A − RMARK r e s p A T_{reply2} = \text{TMARK}_{ack}^A - \text{RMARK}_{resp}^A Treply2=TMARKackA−RMARKrespA
2.2 误差分析
双边双向测距的误差可以由下式给出:
error
=
T
p
r
o
p
δ
A
+
δ
B
2
\text{error} = T_{prop} \frac{\delta_A + \delta_B}{2}
error=Tprop2δA+δB
即误差不受测量时间的影响,仅和两节点间的距离成正比。由于
δ
A
\delta_A
δA和
δ
B
\delta_B
δB都在
1
0
−
6
10^{-6}
10−6,所以DS-TWR测距的误差基本可以忽略。
参考文献
- IEEE Standard for Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Peer Aware Communications (PAC), IEEE 802.15.8-2017