UWB芯片DW3000之双边双向测距法
Posted TD程序员
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UWB芯片DW3000之双边双向测距法相关的知识,希望对你有一定的参考价值。
目录
双边双向测距
使用四个信息
双边双向测距(DS-TWR)是基本的单边双向测距的扩展,其中使用两次往返时间测量并结合给出飞行时间结果,即使在相当长的响应延迟情况下也能减少误差。
DS-TWR的操作如上图所示,设备A发起第一次往返测量,设备B响应,之后设备B发起第二次往返测量,设备A响应完成完整的DS-TWR交换。每个设备都精确地标明了信息的传输和接收时间。
原始的DS-TWR测距过程中测距双方A,B需要交换4条测距消息,即A发送测距请求消息,B返回相应的测距响应消息,然后B发送测距请求消息,A返回相应的测距相应消息。在整个测距过程中,A,B都是测距请求的发起方,也同时时测距响应的应答方。在这种测距模式下,测距双方是一种地位对等的关系,从而可减小由于A,B的时钟频率偏差导致的测距误差。
使用三个信息
上图所示的DS-TWR的四条信息,交互信息次数较多,这增加了收发端的设备功耗,可以通过使用第一个往返测量的应答作为第二个往返测量的发起者,可以将消息减少到三个,如下图所示
-
SDS-TWR:为充分利用测距双方的对称性来抑制双方时钟频率偏差对测距结果的影响,这种方法要求A,B双方返回测距响应消息的延迟尽可能相等,即TBR≃TAR,距离计算如下:
-
AltDS-TWR:该方法无需TBR≃TAR,但计算量相对SDS-TWR较大,距离计算如下:
于是得到在三个和四个消息的情况下,得到的飞行时间估计Tprop都可以使用表达式计算
Tround1:表示设备A前后发送给设备B的时间戳间隔
Tround2:表示设备B发送给设备A的时间戳与收到设备A响应的时间戳的间隔
Treply1:表示设备B收到第一帧来自设备A的时间戳与发送给设备A的时间戳的时间间隔
Treply2:表示设备A收到来自设备B应答帧的时间戳与并发送给设备B的时间戳的时间间隔
此方案被称为非对称方案,因为它不要求来自每个设备的应答时间相同。使用这种方案,典型的时钟诱导误差是在低皮秒范围内,即使是20 ppm的晶体。
非对称方法允许使用少量消息实现复杂的测距方案。
例如,从一个标签到三个锚,可以实现如下图所示,其中标签可以在仅发送2条消息和接收3条消息后定位。
该方案大大节省了消息流量,从而节省了电池电量和设备之间的交互时间。这假设锚点是联网的,并将范围测量数据集中在某个集中的位置引擎功能中,该功能可以计算标签位置的估计。
Final消息传递标签的信息到锚点的Tround和Treply次数,每个都计算到标签的范围,如下所示。
上图范围为3个锚点,只有5条消息,其中每个锚点计算自己的范围结果
TOF方案在DW1000上的实现:DS-TWR方案
说明
在由DW1000芯片的制造原厂提供的示例代码中,同样提供了DS-TWR方案的实现示例:
Example 5a: double-sided two-way ranging (DS TWR) initiator
Example 5b: double-sided two-way ranging respond
该示例以C代码形式,演示了一个简单的双边双向测距的实现过程,本质上双边双向测距和单边单向测距没有太大的不同。
DS比SS方案多发了一次数据,并且测距结果变为了由responded来计算。
流程
测距流程如下,其中有六个关键的时间参数
poll_tx:initiator发送第一帧数据的时间点
poll_rx:responder接收第一帧数据的时间点
resp_tx:responder发送第二帧数据的时间点
resp_rx:initiator接收第二帧数据的时间点
final_tx:initiator发送第三帧数据的时间点
final_rx:responder接收第三章数据的时间点
通过三次收发数据,便算出两个设备之间的距离,公式如下:
代码分析
DS和SS代码类似,上一个博客已经对SS方案代码流程分析过一遍,这里就不作过多分析了
以上是关于UWB芯片DW3000之双边双向测距法的主要内容,如果未能解决你的问题,请参考以下文章