背景
TDoA是根据时间差来计算标签位置。在TDoA定位的情况下,需要保证基站的时间对齐,也即在同一个基准下比较,这样才能准确求解标签的位置。如果基站的起始时间不一样,或者变化快慢不一样,比如A走得慢,B走得快,那么在不做同步的情况下,将无法完成定位功能。因此,时间同步有两层含义:一是起始时间一致,二是快慢也一样,这样才算完全同步。
解决方法
以一个时钟源为基准。当时钟源0s发送时间戳到基站A/B, 假设A本地时间戳为120, B本地为1020;8s之后时钟源再发一次时间戳,A/B本地分别为131/1035,从而根据本地时间戳和收到的时间戳,可以计算A, B与时钟源的差异率。
比如A与时钟源的差异率为(11-8)/11 = 3/11。当A本地时间戳为142,对应时钟源的时间戳为0 +(142-120)*(1-3/11)=16s,也就是说A,B在两次收到时钟源数据后,就能根据差异率计算出时钟源的时间戳(没有考虑时间距离)。
如果考虑时间距离,若A距离S为1s, B距离S为10s,那么A, B在统一时钟源的情况下,时间差应该为多少呢?例如表格第三/四行,假设A,B收到同一标签的信号,本地时间戳分别为142s和1065s,统一到时钟源,算出A, B时间戳分别为16s和24s,若不考虑时间距离,则时间差为8s,这显然不正确。考虑时间差之后, A, B的时间差为(16-1)-(24-10)= 1s.
这里怎么理解?显然16和24的计算是根据A, B本地时间戳计算的,也就是,16减去1之后,才能对齐到S所在的基准线。另一个角度试想,在时间快慢一致的情况,S为0s,则A, B应该为1s和10s,这样才算时间基准对齐,因此应该在算出来的基础上分别减去1和10。就像伦敦时间,巴黎时间和北京时间,如果要比较北京(UTC+8, 23点)和巴黎(UTC+1,13点)的时间差(统一到伦敦UTC时间),应该为(23-8)-(13-1)= 3小时。
通过以上方法,则以时钟源为基准完成了不同基站的时间同步。