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_Flagif(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时间网格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于营销的一些总结

多用图,少用点。(要关联其他文章、平台,做流量引导) 持续更新,欢迎关注。

npm的使用,为什么要用

标题:使用npm管理前端项目依赖 介绍: 在现代前端开发中,项目往往会依赖大量的第三方库和工具。而npm(Node Package Manager)作为JavaScript生态系统中最流行的包管理工具,提供了便捷的方式来管理和安装这些…

C语言第三十二弹---打印整数二进制的奇数位和偶数位

使用C语言打印整数二进制的奇数位和偶数位。 思路:分别实现奇数位和偶数位,那么二进制只有0 和 1 那么如何判断一个数的二进制位是0还是1呢?那我们就可以使用位操作符&与1比较,都是1证明该二进制位是1,为0证明该二进制位是0…

2016年五一杯数学建模C题二孩政策问题解题全过程文档及程序

2016年五一杯数学建模 C题 二孩政策问题 原题再现 多年来实施的严、紧计划生育政策对控制人口增长起到关键作用。在优生优育政策的指引下,我国人口质量显著提高,但也带来了不利影响,生育率偏低、男女比例失衡、人口老龄化情况严重等问题。2…

BetaFlight模块设计之三十六:SoftSerial

BetaFlight模块设计之三十六:SoftSerial 1. 源由2. API接口2.1 openSoftSerial2.2 onSerialRxPinChange2.3 onSerialTimerOverflow2.4 processTxState2.5 processRxState 3. 辅助函数3.1 applyChangedBits3.2 extractAndStoreRxByte3.3 prepareForNextRxByte 4. 总结…

老师组织课外活动的好处有哪些

亲爱的小伙伴们,不知道你们有没有注意到,老师除了在课堂上教学之外,还会在课外组织各种各样的活动呢?这些活动不仅好玩,而且对我们有很多好处哦!今天我就来给大家分享一下老师组织课外活动的好处吧&#xf…

geemap学习笔记014:加载本地的tif文件

前言 Colab中似乎没法直接加载云盘中的数据,但是可以先上传到GEE中的assets中,再加载本地的数据。下面是以这个数据为例进行展示。 1 上传数据 首先将本地的tif数据上传到Asset中,得到独一的Image ID。 2 加载数据 使用ee.Image加载数据 …

你听说过彩虹猫病毒吗?

你听说过彩虹猫病毒吗?虽然名字听起来很可爱,但他的威力可一点不逊于熊猫烧香,我们就来看看彩虹猫的运行过程吧。当病毒运行后,首先,他会警告你“你的电脑将被杀死并且不能再次启动,请最后再看他一眼吧”&a…

【腾讯云云上实验室】用向量数据库在金融信用数据库分析中的实战运用

一、前言 这篇文章将带领读者探索数据库的多样化解决方案及其演进历程,特别关注向量数据库的重要性和在实际项目中的应用。 通过深入剖析腾讯云向量数据库及其在金融信用数据库分析中的实战运用,为读者提供全面而实用的指南,帮助他们理解、…

【QML】StackView控制其他页面的组件

1. 应用场景 StackView当前页面的按键被触发,需要控制其他页面(前面的页面)的组件。 2. 方法 _homePage(首页)_cameraSetPage(当前页面) // 页面管理 StackView{id: _mStackViewinitialItem…

【挑战业余一周拿证】一、亚马逊云科技简介 - 第 3 节 - 云计算

第 3 节 - 云计算 在深入了解亚马逊云科技的各个部分之前,让我们先缩小视野,对云进行一个合理的定义。云计算就是通过互联网按需提供 IT 资源并采用按需付费定价模式,下面,我们将进行详细说明。 按需提供表示的是亚马逊云科技会在…

箱型图 Box Plot 数据分析的法宝

文章目录 一、箱形图的介绍二、六大因数三、Box plot的应用四、箱形图的优劣势五、图形拓展 一、箱形图的介绍 箱形图又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因型状如箱子而得名。 在各种领域也经常被使用&#xff0…

PHP中的常见的超全局变量

PHP是一种广泛使用的服务器端脚本语言,它被用于开发各种Web应用程序。在PHP中,有一些特殊的全局变量,被称为超全局变量。超全局变量在整个脚本中都是可用的,无需使用global关键字来访问它们。在本文中,我们将深入了解P…

基于springboot实现医院信管系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现医院信管系统演示 摘要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生&#x…

C语言做一个恶作剧关机程序

一、项目介绍 C语言实现一个简单的"流氓软件"&#xff0c;一个可以强制关机恶作剧关机程序&#xff0c;输入指定指令可以解除 二、运行截图 然后当你输入“n”才可以解锁关机。 三、完整源码 #include <stdlib.h> #include <stdio.h> #include <s…

Java核心知识点整理大全17-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

编译器设计01-入门概述

编译器作用概述 源代码 → 编译器 目标代码 源代码\xrightarrow{\ \ \ 编译器\ \ \ }目标代码 源代码 编译器 ​目标代码 编译阶段概述 编译处理包括两个阶段&#xff1a;前端处理和后端处理&#xff0c;中间过程生成语法树。 编译处理&#xff1a;源代码 → 语法树 …

debian 12设置静态ip、dns

debian 12设置静态ip、dns 1、设置静态ip2、设置dns 1、设置静态ip 查看网卡名称是ens33 ip address编辑网卡配置文件 vi /etc/network/interfaces默认是这样的 在最后面添加下面内容 其中 ens33是上步中查询到的网卡名称address 192.168.2.157 是ip地址netmask 255.255.…

uniapp上传图片 前端以及java后端代码实现

最近在做uniapp相关的开发&#xff0c;在上传图片的时候遇到了一些问题&#xff0c;所幸经过一些努力&#xff0c;解决开发过程中遇到的困难&#xff0c;记录一下uniapp上传图片的实现过程 1、前端代码 setPic1: function() {var me this;var serverUrl this.serverUrl;uni…

【nlp】4.3 nlp中常用的预训练模型(BERT及其变体)

nlp中常用的预训练模型 1 当下NLP中流行的预训练模型1.1 BERT及其变体1.2 GPT1.3 GPT-2及其变体1.4 Transformer-XL1.5 XLNet及其变体1.6 XLM1.7 RoBERTa及其变体1.8 DistilBERT及其变体1.9 ALBERT1.10 T5及其变体1.11 XLM-RoBERTa及其变体2 预训练模型说明3 预训练模型的分类1…