CCC规范中要求采用DS-TWR(三信息交互)来进行UWB测距,在章节20.5.1有详细说明UWB测距交互的过程,本文主要针对该章节展开一些解析,并做了一些实际测距流程示例,以方便理解。
一、CCC规范的UWB测距流程
下图是UWB测距的整体流程,我们从这张图开始逐步展开解析。
图1
上图可解析为4个部分:
1、设备角色类型
UWB测距涉及两种角色类型:
(1)Initiator:即手机或其他智能设备。如上图所示,首个UWB测距帧是由该角色发出的,它扮演的是一个UWB测距的启动角色。
(2)Responder:即车端的锚点。为了实现对Initiator的定位,车端的锚点一般会有多个。
2、帧类型
UWB测距两种帧类型:
(1)SP0:该帧类型带数据内容,帧格式如下图。
(2)SP3:该帧类型不带数据内容,帧格式如下图。
3、Slot时隙:
UWB数据帧有比较严格的发送时序,每个数据必须在规定的slot时隙中发出。TSlot取值如下表:
如何算出上表的呢?有如下公式,具体可详见CCC规范20.2章节。
而N取值为3、4、6、8、9、12、24。
4、数据交互内容:
(1)Pre-Poll:开始UWB测距前,交互双方的一些UWB配置参数。共包含5个参数:UWB_Session_ID,Poll_STS_Index,Ranging_Block,Hop_Flag,Round_Index。具体以后再详细展开解析。(SP0帧)
之后的三个步骤(Poll、Response0-N、Final),即为DS-TWR过程的三次交互。(对于DS-TWR不了解的,可看下之前的文章:UWB测距原理)
图2
(2)Poll:手机启动UWB测距,发出一个RF帧(SP3帧)
(3)Response0-N:每个锚点,按各自索引顺序发出响应的RF帧(SP3帧)
(4)Final:手机返回最后的RF帧(SP3帧)
(5)Final-Data:结束测距,手机端将相关参数及测距的相关时间戳发送给各大锚点。(SP0帧)
共包含如下参数:UWB_Session_ID,Ranging_Block,Hop_Flag,Round_Index,Final_STS_Index,Ranging_Timestamp_FINAL_TX,Number_Ranging_Responders,Responder_Index,Ranging_Timestamp_Responder_l,Ranging_Timestamp_Uncertainty_Responder_l,Ranging_Status_Responder_l
即手机采集到的各个锚点的Tround1, Treply2(如图2)返回去给车端的各个锚点,车端各锚点收到后,结合自己本身各自的Treply1,Tround2(如图2),即可计算出各自与Initiator的距离。
二、UWB测距流程示例
假设车端共有6个锚点,如下图:
UWB测距需经过如下数据交互过程:
1、Pre-Poll
手机发出Pre-Poll,车端各锚点各自接收该数据帧。(SP0帧)
2、Poll
手机发出Poll帧,车端各锚点各自接收该数据帧。(SP3帧)
3、Response
车端各锚点按顺序分时发出响应,即UWB-A1先发出响应,接下来UWB-A2发出响应,直到UWB-A6。(SP3帧)
4、Final
手机发出Final帧,车端各锚点各自接收该数据帧。(SP3帧)
5、Final-Data
手机发出Final-Data帧,车端各锚点各自接收该数据帧。(SP0帧)
6、各锚点计算与手机距离
手机端在Final-Data里将采集到的各个锚点的Tround1, Treply2(如图2)返回去给车端的各个锚点,车端各锚点收到后,结合自己本身各自的Treply1,Tround2(如图2),即可计算出各自与Initiator的距离。
即UWB-A1~UWB-A6等6个锚点分别算出自己与手机的距离,并通过CAN/LIN总线发出来,之后负责定位的ECU便可根据这6个锚点的测距值,通过算法进行手机的定位。