钱瑞琦+王峰
摘要:针对传统北斗定位接收机在研发、调试过程中数据收集和分析方面的不足,借助云服务和web应用易于开发、便于使用的特性,提出了一种北斗定位接收机数据云检测平台。该平台以云服务为载体,使用web框架结合数据存储、定位解算、数据分析等功能。与传统大型分析软件相比,该平台易于远程部署和功能扩展,为北斗卫星接收机的研发提供通用、灵活的数据共享和分析入口,降低软硬件研发人员的沟通成本,简化数据的分析流程。平台的部署和应用结果展示了该平台的有效性。
关键词: 云服务;网页框架;北斗定位接收机;定位解算;数据分析
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)26-0006-04
Designed and Implementation of Cloud Detection Platform for Beidou Positioning Receiver Data
QIAN Rui-qi, WANG Feng
(Guangdong University of Technology, Guangzhou 510006,China)
Abstract:To solve problems of data collection and analysis during process of research and development of traditional beidou positioning receiver, through the help of cloud services and web applications by the features of easy to develop and use, a novel platform for beidou positioning receiver data detecting based on cloud service was proposed. With the cloud service as a carrier, this platform uses web framework combining functions of data storage, positioning algorithms, data analysis, etc. Compared with the traditional large analysis software, this platform is convenient in remote deployment and function extension, provides a general and flexible data sharing and analysis entrance for beidou satellite receiver's research and development. It could reduce the communication cost among hardware and software developers, simplify the data analysis process. The results of platform deployment and application demonstrate the effectiveness of the platform.
Key words:cloud service; web framework; beidou positioning reciever; postioning solution; data analysis
北斗卫星导航系统作为国家重大战略项目,近几年来发展迅速,初现市场赶超之势,已经成为GNSS方向的研发热点。在快速成长的北斗导航市场中,想要抢占市场先机,必须加快研发速度。在完整的商用北斗卫星定位接收机项目的研发周期内,需要进行软件和硬件的协同开发和调试,其中硬件的测量数据和软件的定位解算数据是研发过程中的调试分析源。对接收机测量和定位解算数据的进行处理与检测,从而定位到工程中软件或硬件的错误环节,是接收机研发过程中的主要调试工作。
传统的定位数据检测流程,一般依赖于Matlab或者商业分析软件,Matlab虽然具有丰富易用的绘图工具,但是使用Matlab语言对卫星电文原始数据和二进制数据的处理较为繁琐,开发复杂的较高,而商业分析软件只能针对常见芯片或接收机的定位数据进行分析,很难做到定制化。随着云服务概念的兴起和配套技术的成熟,基于云服务的北斗卫星定位数据检测平台,不仅可以解决Matlab开发复杂和商业分析软件定制化困难的问题,还能将数据永久存储于云端,方便共享、回顾和比较历史数据,便于开发人员协同交流。由于直接通过网页操作,不限制访问操作系统,避免了部署大型软件的繁琐,甚至使用手机也能上传和查看数据 [1]。
1技术背景
1.1 云服务结构
硬件抽象化和软件快速迭代部署是云服务生态中的重要特点。具体结构如图1所示。
图1 云服务结构
云服务器的硬件载体就是计算机、网络、存储等基础构件的抽象整合,是云服务所倡导的按需分配、自有伸缩的前提条件。基于云服务的软件的开发和部署完全基于网络的远程操作,研发人员只需专注于应用功能的实现,而不必在硬件底层系统的开发和维护上面耗费过多精力和资源,因此这种硬件与软件隔离的特性能够大幅缩短软件开发与部署的周期。
1.2 Docker虚拟化技术
Docker的本质是Container,它被形象地看作一个应用封装容器,以往开发者开发一款应用,需要考虑硬件、操作系统、运行环境的适配,有了容器就不用考虑这些。
Docker可以帮助开发者打包他们的应用及其依赖包到一个可移植的容器之中,发布到任何主流的Linux机器上,进而实现虚拟化。Docker完全采用了沙盘机制,容器相互之间不会有任何接口,几乎不产生任何性能开销,并且不依赖任何语言、框架或系统[2]。
1.3基于Python的web框架技术
Python是一种灵活、强大、易于掌握的高级编程语言,其语言自身已经提供了较为完备的网络编程的基础组件。为了降低开发人员使用Python进行web开发的复杂度,开源社区提供了各种丰富的具有高可用性的web框架工具。
web.py和django都是python的web开发框架。Django提供了完备的web开发功能模块,适合基于内容的大型web开发,而web.py小巧、简单、实用,可以快速地完成web页面,适合以web为内容载体的跨平台应用开发。
1.4常见北斗卫星接收机
市面上常见的接收机厂商有Ublox、Novatel、杭州中科微电子等。这些厂商的部分接收机产品具有原始测量输出的功能,利用这些测量数据可以实现脱机定位解算开发和验证,甚至能进一步进行伪距离差分和RTK定位。
在接收机研发过程中,需要增加接收机原始测量数据输出功能。通过与其他厂商接收机的原始数据的对比分析,可以直观判断出接收机测量性能和问题。不仅如此,接收机输出的原始测量数据能够简化定位解算算法的离线调试流程,便于软、硬件开发项目分离,降低项目整体开发、调试的复杂度。
2平台设计与实现
2.1平台整体架构
云服务器具有部署灵活、成本低廉的优势,而且其承载的应用先天具有高度可协作性。在平台的设计中也需要借助云服务开发生态系统中成熟的持续集成工具,实现对应用功能的高效扩展和维护,既能快速响应用户反馈,实现版本的快速迭代,又能方便的以插件形式添加数据分析功能。为了让用户在使用过程中可以实时共享接收机的测量原始数据和定位数据分析结果,分析检测平台需要支持各种使用环境,而web服务先天具有跨平台的优势,因此选择将北斗卫星接收机数据分析检测平台以web服务的形式部署于云服务器中。
云服务平台的软件分为网页框架引擎和数据分析检测子系统两大模块。网页框架引擎以web.py为基础,承载着与使用者浏览器交互的工作。数据分析检测子系统以解算模块为核心,实现用户数据的解析、计算、分析、格式转换等功能,并且各部分子模块支持插件形式的扩展。平台整体架构如图2。
图2 平台整体架构
2.2网页框架引擎
图3 网页框架引擎工作流程
网页框架引擎是用户浏览器与分析检测子系统的沟通媒介,其中用户浏览器可以是嵌入至应用的webview控件。利用web.py提供的网址-方法映射功能,实现了网页请求至方法的路由。当用户点击页面按钮,浏览器向网页框架发送页面请求,框架获取请求网址和参数后,与地址路由表进行匹配,执行对应的可调用方法,并将参数传递给此方法。其中,可调用方法主要分为两类:页面交互类和分析检测类。页面交互类包括固定页面展示、用户注册与管理、文件传输和管理、功能设置等方法,分析检测类包括数据解析、定位解算。网页框架引擎工作流程如图3。
2.3数据解析模块
检测平台所支持的卫星芯片、接收机的范围和种类由数据解析模块决定。市场上较为流行的Novatel、Ublox、中科微等厂家的产品均有自己的数据传输协议,想要获取产品的测量数据等信息,必须通过数据解析模块按照数据传输协议进行解析,进而转换成解算模块和数据分析模块可以识别的信息参数。常见接收机数据传输协议见表1。
表1 常见接收机数据传输协议
[协议
名称\&测量
信息\&星历信息\&定位
信息\&接收机
厂商\&ubx\&ubx-rxm-raw\&ubx-rxm-sfrb\&nmea\&Ublox\&novatel\&rangeb\&rawephemb\&nmea\&Novatel\&casic\&rxm-raw\&MSG\&nmea\&中科微\&]
2.4定位解算模块
2.4.1解算用途和内容
如果需要验证用户上传的原始数据,包括星历数据、测量数据、校正参数等的正确性,或者验证用户定位信息的准确性,需要利用定位解算模块对原始数据进行解算,得到参考定位结果与用户定位信息进行比对分析,判定原始数据是否有误。定位解算模块是检测平台的重要组件,通过定位解算模块解算出的定位结果是数据分析过程中的重要参考信息。所以解算模块的解算性能和解算通用性是需要重点考虑的问题。
2.4.2卫星轨道计算
计算卫星轨道需要开普勒参数,在提取了轨道参数后,通过迭代的方法可以求解其方程,再通过坐标变换即可得到卫星的空间位置,然后送到后续程序继续处理[3]。
为了在保证精度的情况下降低我们算法的复杂程度,卫星轨道实际上可以通过三次艾尔米特差值实现,同时不会降低太大精度,该方法同时也是我们解算方法的一个可选方法,它能大大减少计算量,当用户需要时可以作为一个选择模块运行。
2.4.3接收机位置计算
为了让计算结果能够正确反映每一历元的原始数据情况,这里不适于使用卡尔曼滤波技术进行滤波平滑,所以选择通过最小二乘法对原始数据进行逐个历元的解算。
在利用最小二乘法解线性方程之前,我们已经得到了方程的一些必要参数,有线性方程理论,如果方程数大于或等于未知数,都能找到解,我们一般会得到一个多未知数的方程。因此这里主要将非线性的方程线性化,再通过最小二乘法进行求解[3]。如果已知接收机自身统计特性,可以使用权重最小二乘法进行定位解算,提高解算准确度。
2.5数据分析检测
北斗卫星接收机输出的可直观展示的内容包括:卫星轨道参数、卫星时钟参数、广播误差矫正参数、伪距离测量值、多普勒测量值、载波相位测量值、卫星位置坐标、接收机输出定位坐标、平台解算定位坐标。在本平台里,各类参数以表格的形式展示,测量值和坐标以时间轴形式展示。
卫星定位接收机研发过程中需要关注的性能指标主要有启动速度、灵敏度、伪距离精度、载波相位精度、接收机时钟精度、定位精度、定位准确度等。其中对最终定位解算精度有直接影响的因素是伪距离精度、载波相位精度、接收机时钟精度和解算算法等。
图4 伪距信息的手机浏览效果
针对伪距离精度采取双差分析法,通过两组同一时刻来自不同接收机的测量数据进行接收机间和卫星间求差,减弱短基线情况下的卫星钟差、接收机钟差、对流层误差、电离层误差等因素的影响,所得数据能够较为直观的进行接收机伪距离测量精度的比较,通过高阶统计量的分析还可以有效调节定位解算中的相关参数[4][5]。
伪距离测量值变化的稳定性也是重要的参考项目,对伪距测量值进行历元间的前后差值,获得伪距变化率,如果静态伪距变化率发生跳变,说明接收机在伪距测量过程中存在不稳定因素。
伪距信息的手机浏览效果如图4。
对于具有确定参考点的静态定位结果分析采用类似传统CEP法确定误差范围,其误差范围参数是以参考点为圆心划定刚好容纳一半定位点的圆半径。该指标能够判定定位结果的准确性。如果没有明确的参考点,可以利用K-MEANS聚类算法[6] [7]选出点数聚集最多的点集,然后以此点集的中心点为圆心,确定刚好容纳一半定位点的圆半径。该指标能够判定定位结果的精确度。定位信息的手机浏览效果如图5。
图5 定位信息的手机浏览效果
3 Docker封装与部署
Docker容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都可以看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序,并且容器间都是相互隔离以保证安全。
首先编辑Dockerfile文件来指定Docker容器要安装内容。内容如下:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /beidou
WORKDIR /beidou
ADD requirements.txt /beidou/
RUN pip install -r requirements.txt
ADD . /beidou/
以上内容制定应用运行于Python2.7环境,软件代码存放于/beidou目录,使用pip工具从Python软件仓库中下载安装/beidou/requirements.txt内指定的的Python软件包[8]。
由于平台主要使用Python语言进行开发,除了网页框架库web.py以外,在定位解算和数据分析方面需要用到数值计算相关库:numpy、scipy、matplotlib(绘图),在用户管理和数据存储方面使用PostgreSQL数据库,所以需要使用psycopg2库支持Python对数据库的操作。requirements.txt文件里写明需要安装的相关依赖包:
webpy
psycopg2
numpy
scipy
matplotlib
Docker Compose是官方提供的容器业务流程框架,只需通过简单的.yml配置文件,就能完成多个容器服务的构建和运行。编写docker-compose.yml文件如下所示:
db:
image: postgres
web:
build: .
command: python beidou.py 0.0.0.0:8000
volumes:
- .:/beidou
ports:
- "8000:8000"
links:
- db
图6 平台主页的手机浏览效果
这是 Compose 使用的主模板文件,文件将把所有的东西关联起来。它描述了应用的构成(一个 web 服务和一个数据库)、使用的Docker镜像、镜像之间的连接、挂载到容器的卷,以及服务开放的端口。
执行docker-compose up命令,即可部署并启动应用。平台启动完成后的主页如图6。
4结束语
本文提出了一种整合数据存储、定位解算、数据分析等功能的北斗定位接收机数据云检测平台,该平台以云服务为载体,使用web页面交互,解决了传统北斗卫星接收机数据分析流程中数据导入、存储、解算、分析等步骤繁琐、分离的问题,具有部署灵活、扩展方便、操作简单、结果直观等特点,适合辅助北斗定位接收机软、硬件分工协作开发或者定位解算算法的仿真验证。
参考文献:
[1] 王冉阳.基于Web Service的数据产品加工服务系统的设计与实现[D]. 北京:中国地质大学,2009.
[2] 张建,谢天钧.基于Docker的平台即服务架构研究[J].信息技术与信息化,2014,24(10): 131-134.
[3] 吴华龙.BDS/GPS软件接收机定位解算算法研究与实现[D]. 山西:太原理工大学,2014.
[4] 廖远琴,邱蕾,李晓东.GPS伪距双差方法比较分析[J].上海地质,2008,6(108):43-47.
[5] 王琦,吴斌.航天测控系统中伪码测距精度分析[J]. 测控遥感与导航定位,2009,39(1): 39-44.
[6] 王千,王成,冯振元.K-means聚类算法研究综述[J]. 电子设计工程,2012,20(7): 21-24.
[7] 庄怡雯,吴金桥,黄润才,曹奇英.基于Python的聚类分析及其应用[J]. 上海工程技术大学学报,2010(1):47-50.
[8] 鞠春利,刘印锋.基于Docker的私有PaaS系统构建[J].轻工科技,2014,10(10): 80-83.