我们推算出信从寄出到收到一共花8天,假设邮差寄信的平均速度是200km每天,因此我们得出,朋友家距我们家的路程大约为1600km,这就是时间戳差值法测量距离。
UWB测距原理是使用时间戳差值法计算电磁波飞行时间,从而计算距离。UWB测距应用中有两种实体:
1、基站,固定安装在某处用于计算距离和输出数据。
2、标签,安装在被测目标物体上。
基站和标签采用UWB通讯,在通讯过程中带有时间戳,因此基站可以根据时间戳计算标签距离基站的距离。UWB时间戳实现原理框图如下:
标签发起通讯,在通讯数据中带有发送数据的时间信息T1,基站收到数据时先记录下接收时间t2,然后在从接受信息中提取发送时间(假设基站和标签时间是同步的),根据发送时间戳和接收时间戳计算飞行时间t=t2-t1,由此计算出标签到基站的距离d= (c * t )/2 ,其中c为光速。
上述描述只是简单的介绍UWB通过使用时间戳的方法测量距离的基本原理,但是实际应用中并不是如上图所示这么简单,在实际应用中UWB测距算法分为:双向测距(TWR)和双边双向测距(ADSTWR)。
双向测距(TWR)
双向测距又称为TWR(Two-Way-Ranging),基站发起测距请求并记下时间t1,标签收到请求之后记录接收时间t2,然后标签再回复一个响应,回复的响应信息中包含t2(接收请求时间)和t3(响应请求时间)这两个时间,基站接收到响应时记录接收时间t4,此时基站拥有4个时间:t1,t2,t3,t4,因此飞行时间T=( (t4 - t1) - (t3 - t2) )/ 2 ,计算基站和标签之间的距离D= T*c 。算法原理框图如下:
问题1:飞行时间为什么不直接用t2 - t1 或者t4 - t3 ?
因为基站和标签这两个设备的时间不同步,两个设备想要时间同步难度非常大!
问题2:如何解决时间同步问题?
我们仔细观察t1,t2,t3,t4这4个时间,不难发现t1和t4是基站的记录的时间,这两个时间是同步的;t2和t3是标签的记录的时间,这两个时间是同步的。因此我们使用(t4 - t1) - (t3 - t2)得出飞行时间,这样就不要求基站和标签这两个设备时间同步。
TWR算法完美解决问题?事实上不是这样,我们以基站记录的时间差(t4 - t1)为例,这个时间差存在误差吗?我们假设MCU的工作主频为10Mhz,每个时钟周期计时器中的计数器都会加一,我们根据计数器来得知时间,例如计数器的值为800,此时我们认为时间为80us。
但是MCU真正工作主频绝对为10Mhz吗?想要每个MCU工作主频都绝对10Mhz是不可能的!没个MCU的工作主频都存在误差,假设MCU主频误差为1%,那么计数器的值为800时对应的真实时间为79.2us(80 * 0.99),时间误差为0.8us,距离误差为120m!