UWB测距 方法,双向双边测距法(DS-TWR)(四)

1 单边双向测距(SS-TWR)

单边双向测距(SS-TWR)涉及简单地测量单个消息从一个节点到另一个节点的往返延迟以及返回原始节点的响应。
如图所示,设备 A 发送 P 给 B ,设备 B 收到 P 后 回复 R ,设备 A 收到 R 后 过程结束。Tround 的时间是设备 A 从开始发送到接收到回复的时间,Treply 的时间是设备 B 从 接收到 P 到发送 R 的时间。
则设备 A 到 设备 B 所需要的时间 : Tprop = 1/2 (Tround − Treply) 。
因为设备A和设备B使用各自的本地时钟计数,它们的时钟偏移误差是不一样的,因此得出的飞行时间会有误差,随着计数时间增加,误差会不断增大。光速很快,一点点时间误差都能导致距离误差很大,所以不能用该方案测距。

2 双边双向测距(DS-TWR)

双面双向测距(DS-TWR)是基本的单面双向测距的扩展,其中使用两个往返时间测量并结合给出飞行时间结果,即使在相当长的响应延迟情况下也能减少误差。
DS-TWR的操作如图所示,设备A发起第一次往返测量,设备B响应,之后设备B发起第二次往返测量,设备A响应完成完整的DS-TWR交换。每个设备都精确地标明了信息的传输和接收时间。

通过使用第一个往返测量的应答作为第二个往返测量的发起者,DS-TWR的四条消息(如图所示)可以减少为三条消息。
如图所示,设备A发P,设备B收到P后发R,设备A收到R后再发F,设备B收到F后结束。
T𝑞𝑟𝑝𝑞 = (Tround1 × Tround2 − Treply1 × Treply2 ) / (Tround1 + Tround2 + Treply1 + Treply2)
这样就算出了T,而且减小了因为不同设备的不同晶振震荡偏移误差造成的影响。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
UWB测距在MATLAB中的实现: UWB测距是通过UWB信号在空气中的传播时间来计算距离的。MATLAB提供了一些工具,可以方便地实现UWB测距。 一般来说,UWB测距有两种方法:TOF(Time of Flight)和TDOA(Time Difference of Arrival)。下面分别介绍它们的MATLAB实现方法。 1. TOF测距 TOF测距是通过计算信号发射时间和接收时间之差来得出距离的。 MATLAB中可以使用PulseGenerator和Channel组件来实现TOF测距。PulseGenerator用于产生UWB脉冲信号,Channel用于模拟UWB信号在空气中的传播。可以使用以下代码实现: ```matlab % 产生UWB脉冲信号 pulse = phased.RectangularWaveform('PulseWidth',2e-9,'PRF',200e6); pulses = pulse(); % 创建Channel channel = phased.FreeSpace('PropagationSpeed',3e8,'OperatingFrequency',4e9,'TwoWayPropagation',true); % UWB信号传播 [txsignal,txpos] = channel(pulses,srcpos,rcvpos,txvel,rxvel); ``` 这里的srcpos和rcvpos是发送和接收位置,txvel和rxvel是发送和接收速度。 2. TDOA测距 TDOA测距是通过计算信号到达多个接收器的时间差来得出距离的。MATLAB中可以使用TDOAToAngl和AnglToTDOA组件来实现TDOA测距。 TDOAToAngl将TDOA信息转换为角度信息,AnglToTDOA将角度信息转换回TDOA信息。 以下是TDOA测距的MATLAB实现代码: ```matlab % 创建TDOAToAngl和AnglToTDOA组件 TDOAToAnglComp = phased.TDOAToAngl('SensorArray',array,'OperatingFrequency',Frequency); AnglToTDOAComp = phased.AnglToTDOA('SensorArray',array,'OperatingFrequency',Frequency); % 计算相对距离 relDist = range(rcvpos(:,2:4)-srcpos(:,2:4)); % 计算相对时差 relTimeDelay = relDist/SpeedOfLight; % 将相对时差转换为角度信息 azimuth = TDOAToAnglComp([0,relTimeDelay(:)]','two'); % 将角度信息转换为相对时差信息 relTimeDelay1 = AnglToTDOAComp(azimuth); % 得到距离信息 distMeasured = relTimeDelay1(2:end)-relTimeDelay1(1); ``` 这里的array是接收器阵列。distMeasured是UWB的测量距离,可以用来计算位置。 以上是UWB测距在MATLAB中的实现方法。总体来说,MATLAB提供了丰富的函数和工具来实现UWB测距,使用起来相对简单方便。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值