UBX协议格式的GPS原始数据解码与转换

2016-02-21 06:55刘毅科郭承军吴衡
全球定位系统 2016年6期
关键词:格式文件解码接收机

刘毅科,郭承军,吴衡

(电子科技大学 电子科学技术研究院,成都 611731)

UBX协议格式的GPS原始数据解码与转换

刘毅科,郭承军,吴衡

(电子科技大学 电子科学技术研究院,成都 611731)

GPS定位是以卫星导航数据和接收机观测数据为解算基础,解码GPS接收机原始观测数据是解算的前提。为了统一不同接收机的观测数据进行联合处理,将专有协议下的数据格式转为标准化数据格式是一个必要的步骤。文章介绍了UBX协议下的接收机原始观测数据解码和转换为与接收机无关的数据交换格式(RINEX)的方法,以及具体操作中的注意事项。简述了UBX协议和RINEX格式各自的特点。通过对U-Blox NEO M8T接收机获得的UBX格式原始数据的解码和转换为RINEX格式数据文件,证明了解码和转码方法的正确性与有效性。

GPS原始数据;解码;转换;UBX;RINEX;U-Blox

0 引 言

全球卫星定位系统GPS作为当今世界上最成熟的卫星定位系统,在全世界的各行各业都受到广泛的应用。对于工程人员来说,对GPS观测数据的事后处理很多时候是必不可少的。作为定位的基本硬件单位——卫星导航接收机,不同的生产厂家一般都有自己专有的数据存储格式,有时甚至同一厂家的不同型号设备的专有格式也不尽相同。为了能够在不同的接收机下进行数据处理,一个无关接收机的、统一的、标准的数据存储格式对于科研工程人员来说就变得至关重要。

RINEX是一种与接收机无关的数据交换格式,是由瑞士伯尔尼大学天文学院的Gurtner于1989年提出的。当时也是为了能够综合不同厂家GPS接收机所采集的GPS数据,现在RINEX格式已经成为了GPS测量应用等的标准数据格式[1]。

几乎所有的测量型接收机厂商都提供将其专有格式文件转为RINEX格式文件的工具,但是对于某些类型的接收机依然需要工程人员自己编程转换。比如本文将要应用的U-Blox GPS接收机,其原始观测数据以专有的UBX协议格式进行存储,虽然有其专有的数据采集软件u-center进行处理,但是却不能转为RINEX格式文件,或者直接输出原始观测、导航数据等,故数据处理时需要先将其解码。若是多类型接收机综合处理,则需要进一步将其解码数据转为通用RINEX格式数据。本文以U-Blox8接收机为例,介绍其原始观测数据格式和解码过程,并利用MATLAB进行解码和转换为RINEX格式文件,与u-center中的采集数据进行比较,验证了原始观测数据的正确性,与IGS数据中心的星历进行比较,验证了解码星历的正确性。

1 UBX和RINEX

1.1 UBX协议的星历和观测数据

u-blox品牌的所有接收机使用UBX协议,也只有该品牌使用此协议。UBX协议输出的消息类型的区分关键在于其CLASS,早期的版本和后来的版本相比较,是CLASS和下层的ID的扩充,即接收机输出消息的内容更加丰富。比如u-blox5协议的RXM(0x02)下只有ID(0x20)SVSI(卫星健康信息),发展到最新的u-blox8协议,u-blox5协议的RXM(0x02)下ID总共有ALM/EPH/RAW/SFRB/PMREQ/RAWX/SFRBX/SVSI.其中原先的RAW只规定了GPS的原始观测数据的输出,而最新扩展的RAWX则规定了所有GNSS卫星的原始观测数据输出。

u-blox接收机log文件以.ubx为后缀的格式来存储。并不是所有的u-blox接收机都输出原始观测数据(Raw Data),比如伪距测量值、载波相位观测值、载波多普勒观测值等等,所以需要选择带有原始观测数据输出的接收机,比如本文所选用的u-blox NEO M8T型号;也不是接收机的输出数据中一定包含Raw Data,具体输出内容按照需求在u-blox的PC端软件u-center中进行配置[2]。

u-blox GNSS接收机使用专有协议(UBX)与主机进行通信,协议有以下几个特点[3]:

1) 简洁性;全部使用8 bit二进制数据存储。

2) 校验和保护;使用低开销的校验和算法。

3) 模块化;使用二阶的消息标识符。

UBX协议的数据包结构如图1所示,由图可以看出,每一个消息都有三部分来组成:头部,数据部,校验部。头部的前两个字节:0xB5 0x62,由此识别为UBX协议下传输的数据开始;CLASS的一个字节表示测量数据消息的类别。ID的一个字节则表示在一个CLASS下的具体参数项输出。LENGTH表示数据部的长度(字节)。CK-A和CK-B是两个校验和字节。具体在u-blox NEO M8T接收机中,需要GPS卫星的星历和原始观测值,故选择RXM-EPH和RXM-RAWX进行输出和解析。星历数据(EPH)的UBX协议消息结构如表1所示。

图1 UBX协议数据包结构

表1 UBX协议星历消息结构

Payload部分内容为星历数据,关于其地址偏移和存储类型详细内容参考相应说明书[3]。

一个观测历元的RAWX数据UBX协议消息结构如表2所示。

表2 UBX协议Raw Data消息结构

Payload部分的内容为各项观测参数的数据块,关于其地址偏移和存储类型详细内容参考相应说明书[4]。

1.2 RINEX协议的nav和obs简介

主要介绍RINEX 2.10版本的导航电文和观测文件格式。RINEX格式的文件主要包括两部分:文件头和数据体。

导航电文的文件头内容主要包含:

1) 文件版本信息,接收机信息,注释等。

2) 历书中的电离层参数,UTC时间参数,跳秒等。导航电文的数据记录,按照卫星和参考时刻存放各颗卫星的时钟和轨道参数。

观测文件的文件头内容主要包含:

1) 文件的属性进行说明,比如文件类型,观测员信息,观测位置等。

2) 是观测接收机的一些参数进行说明,比如接收机的型号、序列号和版本号,天线的类型和序号、天线的参数等。

3) 观测数据的信息;比如观测数据的参数类型,起始时间,历元间隔等。

观测文件的数据记录,按照文件头给出的观测数据信息和格式标准,逐个历元依次记录在文件中。

导航电文和观测数据具体文件头和数据记录的格式,按照RINEX标准进行输出[1]。

2 解码和转换

2.1 解码流程

从u-blox接收机获取的ubx文件中包含UBX和NMEA两种协议的数据;如果只是需要原始观测数据可以选择配置接收机仅仅输出UBX协议的数据,但是考虑到可以使用NMEA协议中的数据信息进行辅助解码,故选择两种协议数据同时输出。ubx文件解码流程如图2所示。

图中UBX和NMEA分开解码,是由于在ubx中NMEA协议的数据直接以字符存储,在MATLAB中可以使用函数fgetl()逐行读取;而UBX协议数据是以二进制存储,只能使用二进制读取函数fread()逐字节读取。两者又是同时存在于一个文件中,故而分开解码。其中的跳过数据块部分,是根据块的长度信息进行的。对于在NMEA数据中提取的时间信息,只是在本次解码和转换为RINEX文件中辅助作为时间戳,不代表NMEA数据只有时间,其实里面参数很丰富,可以根据需要进行提取[4]。

2.2 解码注意事项

对于原始观测数据(RAWX)读取,其所在的数据块中存储的是每个历元时刻所有的可见星原始观测数据,参考UBX协议所规定的每个参数的偏移地址进行逐个读取[4];对于导航电文(EPH)的读取,在数据块中存储的是单个卫星的星历电文前三个子帧(Subframe 1/2/3)[3],对其解析,需要参考星历参数在子帧中的比特位偏移地址和数据格式[5]。

ubx文件中数据的存储是小端存储(Little-endian);即对于数据体(Payload)中每一个参数的读取,要按照高字节在低地址,低字节在高地址的顺序进行解码,如果在不借助其他函数库的情况下进行编程解码,尤其需要注意这一点。整型相对容易读取,但是浮点型的读取就稍显麻烦。虽说在MATLAB中可以直接调用格式化读取来解码浮点类型的数据,但考虑到在实际应用一般需要用计算机语言C/C++来进行实现,观测数据中的浮点型是IEEE754标准的浮点格式,具体格式参考IEEE754标准[6]。

2.3 转换为RINEX文件

解码出来的参数可以单独作为其他处理的数据源,转为RINEX格式文件是为了能够和其他不同类型的接收机数据进行联合处理。所以在解码完成之后,再进行一步转换的操作,转码的过程相对容易一些,需要的数据已经在解码过程中获取到,转为RINEX格式文件按照其协议标准进行格式化输出即可[1]。

3 实例

在u-center中配置u-blox8接收机,主要配置UBX协议中,输出ID为AID-EPH和RXM-RAWX两项。NMEA协议下的数据输出配置为默认即可。配置完成后,开始在本地目录记录接收机观测数据。然后利用编写的MATLAB程序进行解码,得到RINEX协议下的导航电文(nav)和原始观测数据(obs)。将nav文件与IGS观测站数据进行比较,两者对应卫星广播星历完全相同,验证了nav解码的正确性。将obs文件中的某一个历元数据与u-center中显示的数据进行比较,也是完全吻合,也证明了obs解码的正确性。

图3示出了UBX最终转换为RINEX星历文件的结果。由于测试接收机的条件限制,文件头的描述内容简略表示。图4示出了从UBX中解码的原始观测数据,转换为RINEX格式观测数据的结果。其中,在接收机定位起始的一段时间里,仅有两颗有效GPS卫星观测数据,收星稳定后所接收到的历元中有了5个的GPS数据。 在接收机总的观测数据中也有北斗卫星的信号,满足定位的要求,而在当前的解码转换中,仅仅使用了GPS数据。根据文献 [1],在观测数据文件中,每个历元观测数据由三部分组成:观测值以 14 位浮点数表示,保留 3 位有效数字;LLI(Loss of Lock Indicator)和信号强度分别以 1 位数表示,依次列于观测值后。测试所用接收机主板并未发送相应信息时,所以均用”0”代替[7]。

图3 UBX转为RINEX的导航电文实例 (blox1840.16n)

图4 UBX转为RINEX的Raw Data 实例 (blox1840.16o)

4 结束语

本文分析了UBX协议下的导航电文和原始观测数据格式,简述了IEEE标准的浮点数格式和RINEX文件格式。利用MATLAB编程实现了对UBX协议的观测数据的解码和转换为标准的RINEX2.10格式文件。并以解码实例证明了该方法的正确性和有效性,文章未能解得RINEX观测数据文件的头文件中部分必要参数值,这虽然对于基准站快速定位的准确性并无影响,但对其进行分析仍是必要的。实例中所使用接收机本身能够收取GNSS卫星的信号,但是在测试中未解码其他导航系统数据,虽然在文章中稍显不足,但在实际应用中,完全可以按照所示方法去解码和提取。该解码和转换方法对于工程实践人员会有实际帮助。

[1] 李征航,黄劲松. GPS测量与数据处理[M]. 武汉:武汉大学出版社,2005:182-202.

[2] U-blox AG. U-center_userguide_(UBX-13005250)[EB/OL]. [2015-02-23], http://www.u-blox.com/.

[3] U-blox AG. U-blox 7 receiver description [EB/OL]. [2013-02-1],http://www.u-blox.com/.

[4] U-blox AG. U-blox 8/u-blox M8 receiver description [EB/OL]. [2014-12-10], http://www.u-blox.com/.

[5] JAMES BAO-YEN TSUI. GPS软件接收机基础[M]. 2版. 北京: 电子工业出版社, 2008: 68-76.

[6] The Institute of Electricaland Electronics Engineers, Inc. IEEE Std 754-2008. IEEE Standard for Floating-Point Arithmetic[S].IEEE Computer Society, 2008.

[7] 贾蓉、王解先. NovAtel OEM4主板的GPS原始数据解码[J]. 现代科学仪器,2010(1):54-57.

Decoding and Transformation Method of Raw Data for GPS Based on UBX Protocol Format

LIU Yike,GUO Chengjun,WU Heng

(UniversityofElectronicScienceandTechnologyofChina,Chengdu611731,China)

GPS positioning is based on the solution of Satellite Navigation Data and Receiver Observation Data, and the decoding of GPS raw data is a basic premise of the solution. In order to implement the joint processing for raw data of different Receivers, it’s a necessary step to convert proprietary protocol data format to standardization data format. This paper presents the decoding method of raw data of Receiver and transformation method of converting it to RINEX, as well as the matters needing attention in the manipulation. And briefly outlined the respective character of UBX protocol and RINEX format. Through the decoding the UBX protocol raw data from U-Blox NEO M8T receiver and transforming it to RINEX format data file, the method is proved to be correct and effective.

GPS raw data; decoding; transformation; UBX; RINEX; U-Blox

2016-07-10

10.13442/j.gnss.1008-9268.2016.06.016

P

1008-9268(2016)06-0080-05

刘毅科(1990-)男,硕士生,研究方向为卫星导航技术。

郭承军 (1985-)男,博士生,研究方向为GNSS互换性与泛位置服务、新时空体系、完好性及增强系统。

吴衡 (1992-)男,硕士生,研究方向为卫星导航技术。

联系人:刘毅科 E-mail: frank_uestc@163.com

猜你喜欢
格式文件解码接收机
《解码万吨站》
GNSS接收机FLASHADC中比较器的设计
关于RAW格式文件,我们需要知道些什么?
相机学院
相机学院
解码eUCP2.0
一种宽带低功耗四合一接收机设计
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
一种面向ADS-B的RNSS/RDSS双模接收机设计