多传感器组合导航系统时间同步及实时数据采集方法与流程

文档序号:15398956发布日期:2018-09-11 17:00阅读:631来源:国知局

本发明属于多传感器组合导航领域,具体为实时多传感器组合导航的时间同步与数据采集方法。



背景技术:

在城市峡谷等地面复杂环境下,gnss信号由于易受遮挡和多路径的影响而无法提供高精度可靠的定位导航服务,在这种情况下,集成多传感器的组合导航成为解决地面复杂环境下导航的首选方案。由于各传感器数据采样时刻有所差异而导致的数据时标不一致会对组合导航的数据融合引入误差甚至导致融合错误,因此,解决多传感器数据的时间同步问题,特别是在实时条件下,是实现多传感器优化融合的关键。

目前实时多传感器数据的时间同步分为两种方案,一是采用外接fpga芯片作为数据采集的统一时钟源,现有的多传感器组合系统一般采用这种时间同步方式,这种时间同步方式同步精度高,但需要单独增加芯片,且传感器扩展维护需单独编程实现;二是直接采用计算载体(例如arm开发板)的本地时钟作为时间同步的时钟源进行软同步,这种方式扩展性好,无需专门的芯片支持且编程实现简单,但在同步精度上相对较低。采用软件同步要想使时间同步精度满足要求,往往需要使操作系统达到硬实时要求,现有的研究多采用基于rtai,xenomai等单独实时内核的linux进行时间同步,但这种方式往往只能针对某一特定的芯片类型,且其编程由于基于单独的实时内核,在实际应用中实现难度大,通用性不佳。



技术实现要素:

本发明的目的是克服现有的技术缺点,提供一种实现简单,通用性好,能满足实时组合导航需求的组合导航多传感器数据采集与时间同步方法。

为达到上述目的,本发明的技术方案如下:

一种多传感器组合导航系统时间同步方法,基于linux本地时钟实现时间同步,实现如下,

进行标准linux系统的实时性改造,使运行在计算载体上的操作系统满足硬实时要求;实现数据采集与时间同步,使各传感器采集的数据的时标与标准gps时保持一致,然后进入缓冲区,为组合导航数据融合做准备;

所述数据采集与时间同步,实现方式为以gps接收机输出的pps信号作为基准,校正计算载体的本地时钟,然后利用计算载体的本地时钟为其它传感器标注时标。

而且,所述标准linux系统的实时性改造,包括利用preempt-rt补丁对标准linux内核进行改写,使linux内核变为完全可抢占内核。

而且,linux内核实现完全可抢占后,在新的内核框架下重新生成gpio中断驱动、串口驱动及usb驱动,其中gpio驱动用于处理输入的pps秒脉冲信号,串口驱动及usb驱动用于接收多传感器数据。

而且,在完全可抢占内核下,对pps信号的采集线程的优先级置于最高,其它多传感器数据的采集线程的优先级略低于pps信号采集线程,但高于其他linux内核线程。

而且,以gps接收机输出的pps信号作为基准,校正计算载体的本地时钟的实现方式为,pps信号采集线程进入中断后,记录pps信号到达时刻的本地时间,然后与随后接收的pps信号对应的gps时间数据包中的标准gps时做差,得到当前时刻本地时钟与gps时的差异dt;通过在多传感器数据采集中断触发时,记录该时刻的本地时间,然后利用dt对时标进行校正,得到各传感器在gps时标系统下的数据,实现将各传感器数据归算到gps时框架下。

而且,对校正所得各传感器在gps时标系统下的数据,采用从传感器端口到计算载体的时延进行改正,得到精确同步的多传感器数据。

本发明还基于上述多传感器组合导航系统时间同步方法,提出一种多传感器组合导航系统数据采集方法。

而且,为每一个传感器分配一个fifo队列,将经过时标校正的多传感器数据加入到各自的队列中,然后以采样率最高的传感器为基准进行轮询,查找最接近当前时刻的多传感器数据并进行插值,归算到统一的时间点并打包进入新的数据队列中。

本发明在标准linux系统的基础上,对广泛运行于各类arm开发板、pc机等计算载体设备上的linux操作系统进行完全可抢占的改造,使之满足硬实时的要求;在此基础上,利用pps秒脉冲信号提供的高精度标准时标实时地对本地时钟进行校对,使本地时钟维持较高的精度。其关键在于硬实时条件下,各类数据,特别是pps信号,传输的延迟可以严格保证并事先标定,从而使本发明中的软时间同步能达到10ms以内的同步精度,满足了多传感器数据融合的要求,且实现简单、适用广泛、便于移植。并且,对每一类传感器采用队列方式进行缓冲存储,并以最高采样率的传感器数据对所有数据进行插值、打包,为后续多传感器数据融合提供了极大方便,具有重要的市场价值。

附图说明

图1为本发明实施例的整体框架图。

图2为本发明实施例的时间同步示意图。

图3为本发明实施例的数据缓存区设计示意图。

具体实施方式

以下将结合附图及实施例对本发明的具体技术方案进行详细说明。

本发明提出标准linux系统的实时性改造在于使运行在计算载体(例如arm开发板)上的操作系统满足硬实时要求;数据采集与时间同步在于使imu、里程计等传感器采集的数据的时标与标准gps时保持一致,然后进入设计好的缓冲区,为组合导航数据融合做准备,具体为:以gps接收机输出的pps信号作为基准,校正计算载体的本地时钟,然后利用计算载体的本地时钟为其它传感器标注时标。

本发明实施例实现如下:

首先对标准linux内核利用preempt-rt补丁进行改写,使内核成为完全可抢占,满足硬实时操作系统的要求。同时对gpio驱动,usb驱动,串口驱动在完全可抢占内核框架下进行重写,其中gpio驱动用于接收gnss输出的pps秒脉冲信号,串口驱动和usb驱动用于接收多传感器数据。

然后在经过改造的linux系统框架下,为每一类传感器创建一个单独的线程用于接收传感器数据,并将pps秒脉冲接收线程的线程优先级置为最高,其它传感器数据接收线程略低,但均高于一般linux内核线程。

接收到pps秒脉冲信号后,pps秒脉冲信号采集线程进入中断,记录pps秒脉冲信号到达时刻的本地时间,然后与随后接收的该pps秒脉冲信号对应的gps时间数据包中的标准gps时做差,得到当前本地时钟与gps时的差异dt;同时,在多传感器数据采集中断触发时,记录该时刻的本地时间,然后利用dt对记录的多传感器数据到达时刻的本地时间进行校正。

为每一类传感器维持一个单独的fifo队列,经过时间标定后的传感器数据进入各自的队列后,以采样率最高的传感器为基准进行轮询,查找最接近当前时刻的多传感器数据并进行插值,归算到统一的时间点并打包进入新的数据队列中,为数据融合做准备。

通过以上方案,采用preempt-rt补丁对标准linux内核进行实时改造,使linux满足硬实时的要求,并且直接在linux驱动层采用中断的方式接收gps接收机输出的pps秒脉冲信号,最大限度降低由于系统调度引入的延迟;通过不断比对pps信号在本地时钟系统和标准gps时系统下的差异,从而不断地对本地时钟进行校准;同时利用本地时钟在pps间隔内短期稳定性较高的特点,对多传感器数据标注高精度的时标,从而实现实时条件下组合导航多传感器数据时标的统一;根据实时条件下多传感器组合导航数据融合的特点,采用fifo队列对时标统一后的各传感器数据进行存储,并以采样率最高的传感器作为基准,对多传感器数据进行插值处理归算到统一时间点,为多传感器数据融合提供了便利。

如图1所示,本发明的实施分两步分别在linux的驱动层和应用层实现。首先,在驱动层,通过运行在计算载体上的经过实时性改造的linux系统的gpio驱动和usb口(或串口)驱动接收pps秒脉冲信号、pps信号的时间数据包及其它传感器的数据包;当对应驱动检测到信号时,记录信号到达时刻的linux本地时间并传递到应用层;然后,在应用层,将pps信号对应的linux本地时间和gps标准时作差即可对linux本地时钟进行校正,从而将各传感器数据统一到标准gps时框架下,并存入对应的缓存区,供算法接口和文件存储线程读取。

本发明的改进主要包括标准linux系统的实时性改造,数据采集与时间同步,数据缓冲区设计,以下详细说明各部分的实现:

一、标准linux内核的实时改造

标准linux内核只具备软实时的能力,通过preempt-rt补丁包可以使内核变为完全可抢占。对于标准内核部分,通过bzcat../patch-x.x.xx-rtxx.patch.bz2|patch-p1命令进行preempt-rt补丁的安装,然后对内核的编译选项进行配置,将抢占模式(preemptmodel)配置为完全可抢占(fullypreemptiblekernel(rt))。对于传感器的串口、usb驱动等,主要涉及两种类型:第一种类型是spin_lock类,需要用spin_lock_t代替,从而保证使用spin_lock类型的函数行为能被调度,不禁用抢占;第二种类型是spin_lock_irqsave需要用raw_local_irq_save代替,以应对在preempt-rt环境下,spin_lock_irqsave并不会禁用中断和抢占及local_irq_save也不会禁用中断,只会禁用抢占的情况。

对于gpio驱动,直接在驱动中实现pps的接收中断,最大程度地减小pps秒脉冲信号在系统调度中的延迟,保证时间同步的精度,具体为:将对应gpio口注册为miscdevice设备,按标准miscdevice设备的模式提供“打开”“关闭”“监听”“读”四种接口供应用层调用;在中断服务函数中保存pps信号到达时刻的本地时间并存储,同时设置中断标志并且唤醒等待队列。gpio驱动单独编译之后,直接挂载在操作系统中即可。

相关符号是linux系统中的术语,本发明不予赘述。

二、时间同步方案

gps接收机输出的pps秒脉冲信号与标准gps时之间的差异通常在几十纳秒以内,可以作为多传感器时间同步的高精度绝对时间源。图2为本发明的时间同步方案。pps秒脉冲信号按1hz的频率发送给计算载体,计算载体同时会记录信号到达时刻的linux本地时间,经过短暂延迟后,包含该pps信号对应的标准gps时的数据包被接收,将该信号在本地时钟和标准gps时下的时间作差,利用该差值对linux本地时钟进行校准;校准后,利用linux本地时钟记录时标的传感器数据即归算到标准gps时框架下,然后利用计算的传感器数据包的传输时延加以修正,即可得到传感器数据包对应的精确gps时标。

由于gps接收机输出的pps信号为方波电信号,因此可以直接输入开发板的gpio口。此外,在应用层单独开辟一个监听线程,专门监听接收pps信号的gpio口,以获取驱动层上传的数据。在此监听线程中,打开设备节点后,该线程中的读取函数即与驱动中对应的接口相匹配,只需在死循环中反复调用读取函数即可;一旦线程运行到读取函数,则会进去驱动中等待中断,该线程便会进入休眠状态,直到接收到pps信号进入中断后被唤醒。

上述pps信号到达本地的时间获取后,该pps信号对应的pps时间数据包(该信号的标准gps时)经过短暂延迟后即可通过串口中断获取,将该pps信号的两种时标做差得到差值后,即可用于对本地时钟进行标定:

其中,上标g和l分别表示gps时和本地时,下标sensor和pps分别表示多传感器数据和pps信号,即分别表示记录的本地时标下的传感器数据和pps信号的时间,可得到当前本地时钟与gps时的差异为pps信号的标准gps时间,为校正得到的传感器数据的标准gps时。通过上式,即可得到各传感器在gps时标系统下的数据,实现将各传感器数据归算到gps时框架下。

此外,因为pps信号本质上为电信号,其传输时延可以忽略,其时延只取决于系统的响应时间,经过本发明所述的linux实时改造后,系统响应时间可以保证在10ms以内。另一方面,串口、usb口接收传感器数据的时延由于数据传输率及数据量的影响,其时延往往不可忽略。这部分时延分为两部分:一是传感器内部从采样到输出端口的时延;二是从传感器端口到计算载体的时延。对于第一部分时延,一般可直接采用传感器给出的标定结果;对于第二部分时延,以串口通信为例,可采用如下公式进行估计:

δt=nbytes×nbits/b

其中,δt表示传输时延,nbytes表示传感器数据包的字节数,nbits为串口传输单字节的数据位数(例如,对于一般串口配置,数据位为8,以及1个起始位和1个停止位,则nbits为10),b表示串口配置的波特率。

各传感器数据归算到gps时框架下后,经过上述传输时延的改正即可得到精确同步的多传感器数据。具体实施时,可用校正得到的传感器数据的标准gps时直接减去传输时延δt,得到精确同步的多传感器数据。

三、数据采集与存储

数据采集与存储模块位于linux系统的应用层,可直接链接至数据处理程序。数据采集时,每类传感器单独开辟一个线程,线程优先级设置为高于一般linux内核线程,但略低于pps信号接收线程。此外,本发明还提出设置主缓存区线程,用于查询各队列是否有新的数据可以出队,并将当前所有出队的数据进行打包,存入缓存队列。在各数据采集线程中,采用poll轮询机制在应用层进行监听,一旦匹配到各传感器的数据头,即记录当前时刻的本地时间作为当前数据包的时标,然后进入解码等步骤。

各传感器的一包数据接收完毕后,将各数据打包进入对应的数据队列。图3是本发明的缓冲区设计示意图。其中,主缓存区是指操作所有传感器数据的缓存区。子缓存区是指操作某一传感器数据的缓存区,每一个传感器对应一个子缓存区。且每一个传感器对应一个采集线程和一个队列,例如采集线程1、队列1是采集某一传感器数据采集线程以及存取采集的数据的队列,采集线程2、队列2是采集另一传感器数据采集线程以及存取采集的数据的队列…具体实施时,在多传感器组合导航系统中,可为具体传感器分别设置相应采集线程和队列。

每一个数据采集线程对应一个fifo缓存队列,当数据打包完毕后,即进行入队操作。在主缓冲区内,以采样率最高的数据队列作为基准,当该队列出现新的数据时,对该数据包进行出队操作,然后查找其它队列中是否存在未出队的数据,如果存在则进行出队操作。所有队列查找完毕后,对出队的传感器数据进行插值,统一到采样率最高的数据的时间点上。然后对统一到同一时间点上的数据进行打包并入队主缓存队列(即主缓存区的缓存队列),暴露给写文件的线程和算法层,在算法层只需要读取缓存队列即可。

需要注意的是,上述步骤中的队列需要进行加锁(读写锁)操作,以避免同一数据包的读写冲突。

具体实施时,本领域技术人员可采用软件技术实现以上流程的自动运行。

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1