地图采集车的那些事 | 时间同步

简介: 地图采集车上有相机、激光、惯导等多种传感器设备,采集的数据为图像、激光点云、轨迹等,生成地图数据的流程中,需要将这些数据关联起来,但是这些设备都是各自独立运行的,而能完成这个任务的就是时间同步系统。

1. 概述


地图采集车上有相机、激光、惯导等多种传感器设备,采集的数据为图像、激光点云、轨迹等,生成地图数据的流程中,需要将这些数据关联起来,但是这些设备都是各自独立运行的,而能完成这个任务的就是时间同步系统


时间同步系统是以GPS(Global Positioning System,全球定位系统)的时间信息为基础进行时间授时的。本文主要讲述时间系统中GPS授时原理、授时方法、授时过程以及授时中的异常情况。


系列文章回顾

地图采集车的那些事 | 硬件质量篇

地图采集车的那些事 | 载车篇


2. GPS 授时原理


GPS卫星上搭载有高精度原子钟(铯原子),它能够让各个卫星之间保持高精度的时间同步,并且各自的时间起始时刻也能够对的很准。由于用户接收机与卫星存在钟差,对零点做时间参考系至少需要四颗卫星才能实现导航定位。


当用户解算出自己和卫星的钟差之后就可以校正自己本地的时钟,将其和卫星精准的时钟同步到同一个时刻,这个过程就叫授时


原子钟的原理:原子中的电子从一个能级跃迁到另一个能级的时候,频率非常稳定,以此为钟摆就能得到非常精准的时间。


GPS授时原理是GPS接收机在任意时刻能同时接收其视野范围内>=4颗卫星信号,经解码和处理后从中提取并输出两种时间信号:


(1)时间间隔为1S的同步脉冲信号PPS( Pulse Per Second,秒脉冲),其脉冲前沿与国际标准时间的同步误差<1us.

image.png


image.gif

(2)串行口输出的信息是与PPS前沿对应的国际标准时间和日期,应用最为广泛的是NMEA-0183协议,如$GPGGA,$GPRMC等。


GPRMC:Recommended Minimum SpeGPS / TRANSIT Data(RMC)推荐定位信息。


协议格式:

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>


样例数据:

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,*10


image.gif

image.png

3. GPS授时方法


3.1 PPS与NMEA关系

要讲述GPS的授时方法,要先了解PPS与NMEA的关系及作用,如下图所示,在GPS定位的情况下,PPS会先到,NMEA数据后到,但是不同GPS厂商设置的两者之间的时间间隔不尽相同,有的几毫秒,而有的几百毫秒。

image.png

image.gif

PPS与NMEA


黄色:PPS,上升沿为整秒零时刻。

蓝色:NMEA,GPS时间信息,包含年月日、时分秒。

 

3.2 GPS授时过程详解


image.gifimage.png

GPS授时系统结构图


如上图所示的GPS授时系统结构图:


(1)GPS接收机在定位的情况下产生输出PPS脉冲信号,以及有效的GPS时间信息,此信息以串行通信输出,TTL/RS232信号类型,ASCII码,波特率9600bps~460800bps,可配置,遵循的是NMEA-0183协议,此协议的数据信息有十几种之多,而提取GPS时间信息的语句,通常RMC足以满足要求。


(2)晶振可以为MCU(Microcontroller Unit,微控制单元或者单片机)提供精确的时钟源,维持系统运行,受环境影响较大,特别是温度变化。可选用OCXO—恒温晶振,温度特性达到3ppb。


(3)具体的做法如下:


  • 通过提取RMC中的GPS时间信息,得到时分秒、年月日,并赋值给以晶振为时钟源的系统时间,使MCU的系统时间校正为UTC时间。

  • MCU利用IO的中断机制得到PPS的脉冲时刻,以此为基础将毫秒及以下时间清零,从而校正系统时间的整秒零时刻。

  • Check时间,等3秒后,再取GPS时间与系统时间对比,是否吻合,验证PPS授时整秒时可能出现的+1秒或-1秒的情况。


image.gifimage.png


如上图所示,是授时后测试的数据样例。利用GPS接收机的EVENT功能和MCU同时记录同一个信号脉冲,然后做时间对比,测试的路段有高架桥、商场、环线、街道等多场景。测试时长为5小时38分钟,对比结果为:秒差值=0,微秒差值<=4us。


3.3 时间同步系统的应用之相机同步

图像数据来源是采集车上的传感器——相机,我们的采集车上安装有多个相机,分布在车顶平台的不同位置,朝向各个方向,采集道路标识、POI等,这些图像信息要与位置轨迹信息匹配才能作为地图数据,时间同步系统就可以将这些数据进行唯一匹配。


image.gifimage.png

时间同步系统之相机时间同步结构图


如上图所示,时间同步系统的应用之一相机时间同步结构图,在时间系统已授时的情况下,简单讲述相机时间同步方法:


(1)相机工作在外触发模式,MCU提供触发源,也就是脉冲信号,并记录脉冲序号。


(2)相机拍照时,曝光时刻会产生脉冲对外输出,由MCU捕获,并记录此时刻时间及序号。


(3)记录的时间信息及序号会存储起来,照片的存储会一一对应序号,时间信息也可以与位置轨迹匹配起来,这样就完成了照片与位置的关联。


4. GPS授时异常处理


上面介绍了GPS的授时原理、方法及过程,即可完成时间的授时,但是实际的应用情景是复杂且随机的,由于GPS接收机从失锁到定位的过程不是固定的时间,设备、环境因素都有影响。以晶振为时钟源的MCU的系统时间在授时之前是自由运行状态。这些因素都对GPS授时带了未知的情况,在此列举一些异常情况;

4.1 PPS与晶振

image.pngimage.gif


如上图所示,PPS与晶振时钟的对齐存在三种情况:


(1)PPS上升沿与晶振时钟对齐,此为理想状态,是晶振经分频、倍频后为MCU系统时间提供了完美的1秒时长,但这种情况几乎不存在。


(2)MCU的系统时长慢于1秒,PPS到来进入下1秒,而系统时间还未结束当前秒,此时要做特殊处理,提前结束系统时间的整秒,立即进入下1秒的零时刻,时间信息的秒及以上单位对应“+1”。


(3)MCU的系统时长快于1秒,在PPS到来之前,系统时间已经进入下1秒,并运行一段时长,此时要将系统时间重新归到此秒的零时刻,时间信息的秒无需“+1”或者“-1”。


4.2 PPS与GPS时间信息

image.png

image.gif


通常PPS与GPS时间信息NMEA数据是相对时间间隔稳定的,但是也有特殊情况。如上图所示:“GNRMC”语句的输出时间是变化的。


此情况会带来时间“回跳”的现象:当时间信息在0.999秒到的时候,它所包含的时间信息为当前秒,在时间信息传输与解析完成之前,下1秒的PPS到来,时间进入下1秒零时刻,再经过若干时间(一般100ms内),时间信息授时系统时间,此时秒信息是上1秒的时间,这样就出现了秒回跳的情况。


处理的方法是多种的,可自行思考。


5. 小结

了解GPS的授时原理与方法,更能设计出稳定、高精度的时间同步系统。在此基础上,可尝试使用不同厂家的GPS设备,在复杂环境下试验,差异补缺,完善授时方法。


6. 附录

image.png

image.gif

PPS信号处理:抗干扰,滤除杂波干扰


image.gifimage.png

GPS时间信号电平转换


image.gifimage.png

晶振处理信号:控制时钟电压幅度,隔直流滤波


相关文章
|
4月前
|
机器学习/深度学习 数据采集 监控
量化交易机器人开发风控模型对比分析与落地要点
本文系统对比规则止损、统计模型、机器学习及组合式风控方案,从成本、鲁棒性、可解释性等维度评估其在合约量化场景的适用性,结合落地实操建议,为不同阶段的交易系统提供选型参考。
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
|
机器学习/深度学习 搜索推荐 关系型数据库
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
号称Elasticsearch 10倍性能搜索引擎到底有多强悍
939 0
|
自然语言处理 算法 搜索推荐
给全文搜索引擎Manticore (Sphinx) search 增加中文分词
Sphinx search 是一款非常棒的开源全文搜索引擎,它使用C++开发,索引和搜索的速度非常快,我使用sphinx的时间也有好多年了。最初使用的是coreseek,一个国人在sphinxsearch基础上添加了mmseg分词的搜索引擎,可惜后来不再更新,sphinxsearch的版本太低,bug也会出现;后来也使用最新的sphinxsearch,它可以支持几乎所有语言,通过其内置的ngram tokenizer对中文进行索引和搜索。
4373 0
|
存储 JSON Java
1688订单接口获取指南
在电子商务中,订单数据的获取和管理至关重要。1688作为中国领先的B2B平台,提供了订单详情接口,允许开发者通过订单号获取详细信息,包括订单状态、收货地址、商品列表等。本文介绍如何使用该接口,涵盖注册账号、获取API密钥、安装必要库、构造请求URL、发送HTTP请求、解析响应数据及异常处理等内容,并提供Java示例代码。注意事项包括合规使用、数据安全和高效利用。
|
Oracle Java 关系型数据库
实时计算 Flink版操作报错合集之本地打成jar包,运行报错,idea运行不报错,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
321 6
|
机器学习/深度学习 搜索推荐 PyTorch
特征交互(Feature Interaction)
特征交互(Feature Interaction)
1400 3
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之在flush操作中报错:"context deadline exceeded (Client.Timeout exceeded while awaiting headers)",该如何解决
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
1423 2
|
存储 安全 API
请解释Android的推送服务,如Firebase Cloud Messaging(FCM)。
Firebase Cloud Messaging (FCM)是Google的跨平台推送服务,支持Android、iOS和Web,提供实时、高效、安全的消息传递。它利用WebSocket实现低延迟通信,可发送纯文本、富媒体和自定义数据。FCM还支持离线消息存储和安全传输,并提供统计分析功能。要集成FCM,需在Android项目中添加Firebase库和权限设置,通过Firebase API管理消息。
1775 0
|
设计模式 安全 测试技术
经验总结 | 重构让你的代码更优美和简洁
最近,笔者有幸对高德打车订单Push项目进行了重构,与大家分享一下代码重构相关的工作经验,希望对大家有所启发。
527 1
经验总结 | 重构让你的代码更优美和简洁

热门文章

最新文章