CCC联盟数字车钥匙(三)——UWB MAC时间网格同步及Hopping

本文继续上一篇UWB MAC时间网格继续介绍UWB MAC中关于时间同步相关内容。

3、MAC时间网格同步

每个测距会话的定义都基于相对的指定时钟参考 U W B t i m e 0 k UWB^k_{time0} UWBtime0k,相对于发起者的内部时钟定义。

时钟参考 U W B t i m e 0 k UWB^k_{time0} UWBtime0k为第k个测距会话建立MAC层时间网格。

假设在发起者和响应者之间没有非常严格的时钟级同步,则应在每个应答器(响应者设备)建立MAC层时钟网格,基于相对合理的精度范围。这允许每个responder(响应者设备上)确定何时期望从发起者接收Pre-Poll消息,何时需要发送其应答消息给发起者,以及何时期望从发起者接收Final以及Final_Data消息。

每个Responder的大致MAC层时间网格的建立按照如下操作:

  • 在每个测距会话的协商阶段,发起者需要发送 U W B t i m e 0 k UWB^k_{time0} UWBtime0k到需要连接到第k次测距会话的响应者设备。
  • 每个响应者通过以下方法估计发起者的MAC层时间网格:
    • 响应者使用专用的out-of-band(OOB,带外数据)时钟同步(例如通过BLE控制信道)。通过使用OOB时钟同步方法,发起者告知响应设备何时测距会话开始,估计协调器的参考MAC时钟网格 U W B t i m e 0 _ R e s p o n d e r # l k UWB^k_{time0\_Responder\#l} UWBtime0_Responder#lk。对于第(l+1)个Responder的参考时钟,时刻到达后,响应者打开UWB接收机,开始搜寻、等待第一帧UWB包。
    • 接收到UWB包之后 ,响应者进一步使用从发起者收到的UWB包持续改善,更加精细化估计MAC时间网格,假设在其专用时隙(dedicated slot)开始之前,每个传入的数据包不是由发起方启动的。
    • 飞行时间的计算应不受MAC时间网格的影响。(时间戳信息从UWB来获得,不影响飞行时间计算。从接收到发送,再到收到Final帧,通过来回测量时间戳信息,可以一定程度上消除UWB时钟偏差带来的影响)

在测距会话建立以及同步的过程中,协调器告知所有应答者设备,会话将要开启的时刻,即从多久之后整个测距会话正式启动,协调器将开始发送第一个UWB包。

MAC层时间网络,以发起者为参考,同步也以发起者为基准。其他Responder的数据包,不用于同步。此外,对于车辆等应用而言,也无需接收其他Responder的数据。

对于第k个测距会话,近似MAC网格和时间参考的建立,在第l个responder被标记为,与发起者的时钟参考的关系为:
U W B t i m e 0 _ R e s p o n d e r # l k = U W B t i m e 0 k + ϵ ( k , l ) UWB^k_{time0\Responder\#l} = UWB^k{time0} + \epsilon(k,l) UWBtime0_Responder#lk=UWBtime0k+ϵ(k,l)

其中,误差依赖于采用接收的UWB数据包 ϵ ( k , l ) = ϵ U W B ( k , l ) \epsilon(k,l)=\epsilon_{UWB}(k,l) ϵ(k,l)=ϵUWB(k,l)还是OOB时钟同步协议( ϵ ( k , l ) = ϵ O O B ( k , l ) \epsilon(k,l)=\epsilon_{OOB}(k,l) ϵ(k,l)=ϵOOB(k,l)),用于估计近似MAC层时间网格。此误差的特征以及最小化误差超过了CCC规范的范围,所以并没有在其规范中进行详细的描述,需要在实现时去考虑。

在底层块时间同步处理流程参考示意如下图:

对于Responder设备,会基于预估的同步时钟,提前开启接收机,等待第一帧信号(Pre-Poll信号),进而完成这一轮的测距操作。

4/多跳标记与轮次索引

对于给定RAN的第k个测距会话中的发起者将默认地在第一测距块(Ranging Block 0)的第一个测距轮(Ranging Round 0)中启动UWB测距流程。这假设响应方设备已经通过OOB方法实现了块同步,如果没有,则永久地监听Pre-Poll消息帧。

在发起者端,假设没有资源冲突发生,将根据在测距会话设置中的hopping模式,来确定下一个测距块(i+1)的 H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)、 R o u n d _ I d x k ( i + 1 ) Round\_Idx^k(i+1) Round_Idxk(i+1):

  • 若多跳模式设置为"no hopping",发起者可以继续使用相同与测距块k相同的测距round 编号。

R o u n d _ I d x k ( i + 1 ) = R o u n d _ I d x k ( i ) = 0 Round\_Idx^k(i+1)=Round\_Idx^k(i)=0 Round_Idxk(i+1)=Round_Idxk(i)=0

H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)设置为0。在这种情况下, H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)与接收机无关,应该被忽略。相应的,即使在测距工作过程中,由于冲突、干扰等原因导致无法正常进行测距,那也没有办法避免。

  • 若多跳模式设置为"continuous hopping",发起者将使用第 S i + 1 k S^k_{i+1} Si+1k测距轮(Ranging Round),
    R o u n d _ I d x k ( i + 1 ) = S k ( i + 1 ) Round\_Idx^k(i+1)=S^k(i+1) Round_Idxk(i+1)=Sk(i+1)

此时Hop_Flag设置为1,同样, H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)与接收机无关,需要被忽略。(为固定值)

  • 若多跳模式设置为"adaptive hopping",那么在发起者,针对下一个测距块(i+1)的 H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)和 R o u n d _ I d x k ( i + 1 ) Round\_Idx^k(i+1) Round_Idxk(i+1)按照以下方式计算:

    • 若发起者决定round是干净,即没有冲突的且当前的测距轮次测距成功,发起者应停留在当前的测距轮,同时设置: H o p _ F l a g k ( i + 1 ) = 0 Hop\_Flag^k(i+1)=0 Hop_Flagk(i+1)=0, R o u n d _ I d x k ( i + 1 ) = R o u n d _ I d x k ( i ) Round\_Idx^k(i+1)=Round\_Idx^k(i) Round_Idxk(i+1)=Round_Idxk(i)。即,暂时不再往hopping的下一个序列去跳。
    • 若发起者发现在当前的round有干扰,或测距不成功,发起者就应该跳到下一个不同的round(已知的Hopping序列,在发起者和接收者两端一致)。

H o p _ F l a g k ( i + 1 ) = 1 Hop\_Flag^k(i+1)=1 Hop_Flagk(i+1)=1
R o u n d _ I d x k ( i + 1 ) = S k ( i + 1 ) Round\_Idx^k(i+1)=S^k(i+1) Round_Idxk(i+1)=Sk(i+1)

此时,发起者需要发送下一次测距块的 H o p _ F l a g k ( i + 1 ) Hop\_Flag^k(i+1) Hop_Flagk(i+1)和 R o u n d _ I d x k ( i + 1 ) Round\_Idx^k(i+1) Round_Idxk(i+1)到响应者设备。该数据作为包含在当前测距序列最后的Final_Data的数据包内。

在响应者设备,针对随后的测距轮次的多跳标记与轮次号,需要按照如下伪代码进行设置:

复制代码
if Final_Data packet is received
{
    Hop_Flag_k(i+1) = Final_Data.Hop_Flag
    if(Hop_Flag_k(i+1)=0)
    {
        set Round_Idx_k(i+1) = Round_Idx_k(i)
    }
    elseif (Hop_Flag_k(i+1)=1)
    {
        set Round_Idx_k(i+1) = S_k(i+1)
    }
}
else
{
    set Round_Idx_k(i+1) = S_k(i+1)
}

处理思路解析:

1、没有收到Final_Data,假设测距是失败的,需要跳到Hopping序列的下一个测距轮。

2、收到Final_Data,按照数据段的Hop_Flag信息判断是否Hopping,若要Hopping,则跳到对应的测距轮次的索引,否则在下一个测距块中保持当前的测距轮索引。

注意:发起者基于干扰等级或数据包的冲突概率来决定是否触发多跳(即Hop_Flag =1)。决策的数据可以通过当前的数据交换,或一系列从应答设备接收到的应答帧来获取(历史数据)。在发起者端,触发多跳的具体标准超出了本规范的范围,有设备供应商来自行决定实现机制。但是,对于所有标准而言都需要满足的是,若没有接收到任何的相应,设备就应该触发多跳。


持续更新,系列教程,收藏关注吧!

1、CCC联盟------UWB PHY

2、CCC联盟(一)------UWB MAC概述

3、CCC联盟数字车钥匙(二)------UWB MAC时间网格

相关推荐
神一样的老师10 小时前
【兆易创新GD32VW553开发板试用】天气时钟设计与调试实战
单片机·嵌入式硬件·物联网
sheji10516 小时前
泳池机器人行业市场分析报告
人工智能·机器人·智能硬件
怎么就重名了17 小时前
mosquitto在windows上的安装和测试
物联网
sheji10519 小时前
割草机器人实物拆解报告
人工智能·机器人·智能硬件
sheji10519 小时前
泳池机器人产品设计方案
人工智能·机器人·智能硬件
搜佛说1 天前
sfsEdgeStore用极致轻量化打破工业物联网网关的硬件瓶颈 重新定义边缘存储新标准
物联网
HiWooiot20181 天前
工厂局域网远程监测:制造企业轻量化数字化转型解决方案
物联网
电子科技圈2 天前
芯科科技在蓝牙亚洲大会展示汽车与边缘AI前沿蓝牙创新技术, 解锁车用、家居、健康及工商业等应用场景
人工智能·科技·嵌入式硬件·mcu·物联网·网络安全·汽车
三佛科技-134163842122 天前
PD65W快充电源方案LP8841SD+LP35118N(高频QR反激、BOM简洁,小体积,过认证)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
sheji1052 天前
人形机器人行业市场分析报告
人工智能·机器人·智能硬件