system: [SYSTEM]

user: 3. 交叉验证的时钟同步 3.1. 时钟误差模型 考虑两个基站间的单收单发过程，进而建立时钟误差模型(图1)。 图1. 单次收发通讯过程示意图 假定在初始时刻，基站i和基站j的时间戳寄存器值分别为 N i 0 和 N j 0 ，则在经过时间t后，时间戳寄存器的值满足 N i = N i 0 + t f i (12) N j = N j 0 + t f j (13) 其中， f i 和 f j 分别为基站i和基站j的实际时钟频率，一般情况下，由于芯片晶振的抖动误差， f i ≠ f j ，从而产生了时钟频率漂移问题。 对于距初始时刻时间t后的一次发送过程，基站 记录下的发送时间戳 N i s 与基站j记录下的接收时间戳 N j r 满足如下关系 N i s = N i 0 + t f i (14) N j r = N j 0 + ( t + d i j c + τ ) f j (15) 其中， d i j 为基站i和基站j之间的距离，c为光速(即信号在空间中传播速度)， τ 为发送与接收时延。为简化分析，假设所有模块的收发时延均相同。 整理后可得 N j r f j − N i s f i − ε i j − τ = d i j c (16) ε i j = N i 0 f i − N j 0 f j (17) 其中， ε i j 定义为基站i和基站j之间的时钟偏移量。 3.2. 时钟同步过程 根据模块手册，我们可以发现模块在处理完接收到的信号之前，会拒绝其它信号的接收，即同一时间内模块只能接收并处理一条信号。同时，由于模块中的天线为半双工工作模式，模块在某一时刻只能发送一条信号或接收一条信号，无法同时进行。模块的收发特性限制了工作效率，如果按照常用思路进行同步，每个时隙都有绝大多数的模块处于闲置状态，并且时钟同步过程与TDOA定位过程需要设计不同的协议，增加了协议设计的复杂度。此外，若基站数目继续增长，每次时钟同步的周期过长，导致在此时间内用户标签产生了较大的位置变动，影响定位精度。 基于以上特性，交叉互验的时钟同步方法如下。 此方法将时钟同步过程与TDOA定位过程作为整体，每个完整的工作周期包括三种通信任务类型：激活信号、TDOA信号、反馈信号。激活信号由主基站发送，标志一个工作周期的开始，主基站发送激活信号后进入全接收状态。用户标签接收到主基站发送的激活信号后，开始向所有基站发送TDOA信号，此后进入全接收状态，在接收到下一个激活信号之前不对接收到的信号进行任何处理。从基站在接收到主基站发送的激活信号后，等待用户标签发送的TDOA信号，此后进入休眠状态，并按照激活信号中的指令逐一醒来，向主基站和其它未处于休眠状态的从基站发送反馈信号，其数据包中包含TDOA信息与时钟同步信息。 该方法的时序逻辑如图2所示。 在本方法中，主基站决定了整个系统的工作时序，该决定作用主要表现在激活信号的数据包中包含了各个从基站的休眠时长、反馈信号数目及目的地等信息，各从基站在接收到激活信号的数据包后按照其指示开始后续工作，完成整个系统的时钟同步与标签定位功能。 在这种设计下，模块间的丢包情况可以分为两种情况。若丢失了一条从基站之间的反馈信号，根据方法设计，线性方程组的系数矩阵冗余，即方程数目大于未知数数目，所以从基站之间反馈信号的丢包对于结果不产生明显影响。但若从基站丢失了主基站的激活信号，或主基站丢失了最后一个从基站发送的反馈信号，则会使主基站在一次激活信号发送后一直处于全接收状态，造成时序混乱。为此，该方法为主基站设置了接收超时处理机制，将根据理想中的时序安排设定超时时限，若主基站接收超时，则抛弃本轮工作周期接收到的所有信号，重置相关状态，立即进入下一工作周期。由于设计的超时时限将大于工作周期时长，在主基站接收超时后，从基站和用户标签均已处于初始状态，可以直接进入下一工作周期。 图2. 时序逻辑 3.3. 通信协议设计 该方法与过去软时钟同步的基本思路不同，充分利用了模块的收发特性，提高了整个工作周期的效率。而与此同时，模块间的通讯过程也相较于基本思路复杂了许多。所以，模块间的通讯协议设计就显得尤为重要。 该方法中的通讯协议中主要包含信号基本信息、定位数据与同步数据三部分，其中信号基本信息部分包括本条信号发送模块编号、信号接收模块编号、信号类型、从基站延迟时长及信号发送时间戳；定位数据包括从基站接收到TDOA信号的时间戳，由从基站反馈得到；同步数据则包括方法中反馈信号的发送模块编号、接收模块编号、发送与接收时间戳等信息，用于整个系统的时钟同步。协议所需寄存器的大小与位数视系统大小而定，协议整体内容如图3所示。 其中，协议各字段的说明如表1所述。 每个模块拥有自己的编号，其编号方式需要区分用户标签与定位基站，协议中模块编号字段的长度限制了用户标签和基站个数存在的上限，在系统的实际用户数目超过此上限时，协议字段的长度需要重新设计。在设置接收模块编号时，包括四种接收模式：将全部用户标签作为接收模块、将全部基站作为接收模块、将全部模块作为接收模块、将指定基站作为接收模块。 结合上述通讯协议，本方法可具体描述如下： 主基站将数据包中Rx_Buffer[ 1 ]设定为将全部模块作为接收模块，并在Rx_Buffer[ 2 ]中设定信号类型为激活信号，同时，为安排整个系统给的工作时序，在Rx_Buffer[ 3 ]中设定从基站发送反馈信号的延时时长，最后发送激活信号。 用户标签接收到主基站发送的信号后，从接收信号的Rx_Buffer[ 2 ]位读取信号类型，确认为激活信号后，在本地数据包的Rx_Buffer[ 1 ]设定为将全部基站作为接收模块，并在Rx_Buffer[ 2 ]中设定信号类型为TDOA信号后发送此信号。 从基站在接收到用户的TDOA信号后，将自身的接收时间戳写入数据包的Rx_Buffer[8:11]，同时，将本地数据包的Rx_Buffer[ 1 ]设定为将全部基站作为接收模块，并在Rx_Buffer[ 2 ]中设定信号类型为反馈信号，最后，发送此信号。除此之外，从基站在接收到其它从基站发送的反馈信号后，读取该信号中的发送模块编号与发送时间戳，将本地的接收模块编号与接收时间戳一同写入自身反馈信号数据包，作为时钟同步数据。并且，每当从基站接收到其它从基站发送的反馈信号并记录时，将自身反馈信号数据包中的Rx_Buffer[ 12 ]数据增加1，使得最后时钟同步的主基站可以明确数据包中有效数据的数目。 通讯协议中，发送模块编号、接收模块编号、信号类型、信号发送时间戳均由发送模块在发送前完成设定，供接收模块进行相关数据的提取。 需要注意的是，在DW1000芯片中，发送时间戳定义为数据帧内的PHR段被发送的时刻对应的时间戳。因此，只有将信号已经封装好并进行发送之后才能确定本次发送的发送时间戳。也就是说，通讯协议中的信号发送时间戳均为此模块上一次信号的发送时间戳，在实际的数据处理过程中需要进行调整。 图3. 通讯协议 Table 1 Description of the protocol fiel 字段名称 字段位置 长度 说明 发送模块编号 0 1 本条信号的发送模块编号 接收模块编号 1 1 本条信号的接收模块编号 信号类型 2 1 本条信号的信号类型 从基站延迟时长 3 1 本轮工作周期的发送延迟时长 信号发送时间戳 4:7 4 上一次发出信号的发送时间戳 定位数据 8:11 4 本轮工作周期中得到的定位数据 数据记录条数 12 1 上一工作周期中记录的信号数据条数 记录1 发送模块编号 13 1 上一工作周期中的第一条信号的发送模块编号 记录1 接收模块编号 14 1 上一工作周期中的第一条信号的接收模块编号 记录1 信号类型 15 1 上一工作周期中的第一条信号的信号类型 记录1 信号发送时间戳 16:19 4 上一工作周期中的第一条信号的发送时间戳 记录1 信号接收时间戳 20:23 4 上一工作周期中的第一条信号的接收时间戳 …… …… …… …… 表1. 协议字段说明 3.4. LS同步 考虑完整的时钟同步方法设计，主基站与其它所有从基站均进行过两次单收单发通讯(激活信号、反馈信号)，产生2n条独立方程，其中n为从基站个数。第i个从基站与其它未处于休眠状态的从基站发送反馈信号，此时未处于休眠状态中的从基站数目为 i − 1 个，即产生 i − 1 条独立方程。所以，每个工作周期产生的独立方程总数为 F n = 2 n + ∑ i = 1 n ( i − 1 ) = n 2 ( n + 3 ) (18) 由于时钟频率漂移的影响，每个模块的时钟频率均有差异，即时钟频率产生了 n + 1 个独立未知量。同时注意到 ε i j = ε i p + ε p j ，即偏移量仅产生n个独立未知量。由于在模型中，我们假设所有模块的收发时延均相同，所以收发时延产生1个独立未知量。综上所述，独立未知量的个数为 V n = ( n + 1 ) + n + 1 = 2 n + 2 (19) 若要在一个工作周期内计算出全部的独立未知量，则要求 ，解得 n ≥ 3，即至少需要3个从基站。在TDOA定位系统中，若要解算得到用户标签的三维坐标，也至少需要3个从基站。由此可见，该方法可以很好的应用到TDOA实时定位系统中。 将线性方程组表示为矩阵形式 N F n × V n Φ V n × 1 = 1 c d (20) 其中，矩阵 N F n × V n 的行向量 n 1 × V n i j 表示基站i和基站j之间的一次单收单发的通讯过程，向量 d 则表示与矩阵 N F n × V n 的行向量对应的通讯基站间的物理距离。 n 1 × V n i j = [ 0 ， ⋯ ， 0 ， N j r ， 0 ， ⋯ ， 0 ， − N i s ， 0 ， ⋯ ， 0 ， − 1 ， 0 ， ⋯ ， 0 ， 1 ， 0 ， ⋯ ， 0 ， − 1 ] (21) Φ V n × 1 = [ 1 f 0 ， ⋯ ， 1 f j ， ⋯ ， 1 f i ， ⋯ ， 1 f n ， ε 01 ， ⋯ ， ε 0 i ， ⋯ ， ε 0 j ， ⋯ ， ε 0 n ， τ ] T (22) 该线性方程组的最小二乘解为 Φ V n × 1 = 1 c [ N F n × V n T N F n × V n ] − 1 N F n × V n T d (23) 结合用户标签向所有基站发送的TDOA信号过程，可以发现接收TDOA信号的真实时间差满足 δ i j = t j − t i ，其中， t i 和 t j 分别为基站i和基站j接收到TDOA信号的真实时间。基于公式(12)和(13)，我们可以得到 δ i j = N j r − N j 0 f j − N i r − N i 0 f i = N j r f j − N i r f i − ε i j (24) 由于 δ i j = δ i p + δ p j ，因此我们只需要得到 δ = [ δ 01 ， δ 02 ， ⋯ ， δ 0 n ] T ，根据公式(24)，有 (25) 其中，与式(21)类似，矩阵 N TDOA 的行向量 n TDOA 0 i 表示主基站和基站i收发TDOA信号过程的系数向量 n TDOA 0 i = [ N 0 r ， 0 ， ⋯ ， 0 ， − N i r ， 0 ， ⋯ ， 0 ， − 1 ， 0 ， ⋯ ， 0 ， 1 ， 0 ， ⋯ ， 0 ] (26) 至此，可以将交叉互验同步方法描述如下。 在每一轮工作周期结束后，通过式(23)解算出时钟同步向量 Φ V n × 1 ，将解算到的时钟同步向量代入式(25)，得到各基站接收到TDOA信号的真实时间差向量，最终将真实时间差向量代入前述TDOA算法，解算用户标签的三维坐标。