前言
阅读硕士论文《GPS/INS组合导航系统研究及实现》,该论文第5章为时间同步系统设计,为GPS/INS系统设计的时间同步系统部分内容非常丰富,非常值得参考。
在数据融合中如果融合的数据是来自两个不同的时间点的数据,即INS数据和GPS数据存在时间偏差,这样会对组合导航数据造成很大的影响,所以时间同步对于组合导航来说是非常重要的。
主要内容
首先有一个认识是GPS接收机输出的数据,是带有精确的时间戳的,以北云科技的GNSS板卡为例,其pps脉冲精度在20ns,在默认5Hz的输出频率下,GPRMC中的UTC的毫秒依次输出00,20,40,80,此UTC时间即为GNSS的精确的时间戳。总结来说就是GNSS的UTC时间代表了自身的非常精准的时间戳,pps脉冲是向外输出的,实现和其他传感器的数据同步,pps脉冲的上升沿(也可能是下降沿,可以配置)。
文中推导得到的由于时间不同步误差造成的状态变量误差为:
δ
k
=
∫
(
∫
a
′
(
t
)
Δ
t
d
t
)
d
t
\delta_{k}=\int\left(\int a^{\prime}(t) \Delta t d t\right) d t
δk=∫(∫a′(t)Δtdt)dt
从上公式可以看到:状态误差量不仅和不同步时间有关,还和机器人运动状态有关,过大的加加速度,也会造成状态变量误差增大,并且是三次方的关系。当载体在做圆周运动或者S形运动时,由于其向心加速度的方向在不变变化,导致加加速度也在不断变化,这时候对时间同步精度要求高。
时间同步原理图如下所示:
文中对于PPS脉冲描述的原话:1PPS秒脉冲信号和UTC(世界协调时)秒点是精确对齐的,GPS接收机严格地在每一个1PPS脉冲的边沿时刻进行一次伪距、伪距变化率、载波相位测量、GPS标准授时、定位等测量。在整个时间同步系统中,利用1PPS信号作为两个分系统的共同时间同步信号。
pps对于INS时间戳校准作用原理
假设pps脉冲的频率为1Hz,INS数据输出频率为100Hz,并且初始时刻两者之间的时间戳是对齐的,那么在最开始的1s前,新的pps脉冲没有到来之前,时钟精度全靠嵌入式板卡(MCU,FPGA,或者DSP)提供的计数器来扛,计数器的计数精度和其使用的时钟有关,一般用晶振。假设晶振的时钟误差为xppm,那么在这1s,时钟最大误差为xus。当新的pps脉冲到来之时,计数器清零,整秒计数器加1,在不考虑pps脉冲误差时,pps脉冲到来时的时间误差为0,所以就达到了对INS时间戳校准的效果,这样无论时间多长,时间戳的最大误差不超过xus。
有一点需要注意,就是添加时间戳的时间。在接收到IMU和GPS接收机的数据后,需要对其进行字头判断,如果字头判断通过,进行相应的时间标签提取、添加工作,而不是在解析完成后添加。
如下图显示的,IMU数据,GPS数据和PPS脉冲出现的先后顺序有多种情况。在软件设计中需要一一考虑。文中分了3种情况,详细的叙述可以阅读原文。
测试结果
我是通过引入GNSS和INS以及DR做时间同步,硬件同步用的STM32,晶振为普通的8M晶振,误差大概在20ppm。实测1个小时的时钟误差在0.08s,这样算误差大约22ppm,和标称值相差不大。把北云A1的pps频率配置为5Hz后,整体的时间同步精度不超过5us。
参考文献
- GPS/INS组合导航系统研究及实现 上海交通大学 李倩