【GNSS】PEA软件-GNSS 服务端整 数据处理的开源软件

PEA软件-GNSS 服务端整 数据处理的开源软件

下载地址

Welcome to the PEA for GNSS processing.

Welcome to the Parameter Estimation Algorithm (PEA)! This is one of two repositories that makes up the GINAN toolkit. If you interested in processing GNSS raw observations then you are in the right place. If you are interested in orbit determination then you will need to look at the POD repository. In the near future, we will be merging the PEA and POD together into one repository.

PEA features

  1. Estimate station positions for a RINEX file (static and kinematic)
  2. Estimate satellite clocks and orbits from a global tracking network
  3. Estimate a regional ionosphere model
  4. Support for processing GPS, Glonass (limited), Galileo and Beidou data

Installation

You can obtain the source code via a git clone for example:

The PEA has a number of dependencies:

  1. BOOST
  2. YAML-CPP
  3. CMAKE
  4. EIGEN-3

Recommended Dependencies:

  1. OpenBlas or
  2. Intel MKL

For a detailed guide on how to compile and install the software see the INSTALL in the root directory of this repository.

Examples

We have a number of examples on how to run the different components of the software, a quick overview is given in the README.md For some example see Examples on how to use the PEA.

Bugs / Issues

If you find a bug or would like to request a feature please lodge it BUGS

Developer Resources

See this page for some [cheat sheets](https://bitbucket.org/geoscienceaustralia/pea/wiki/Developer Resources) and tips for those developing the PEA.

For notes on the [Algorithms](https://bitbucket.org/geoscienceaustralia/pea/wiki/Link URL) and utilities provided by this repository.

Roadmap

See this page for what we are planning to be working on next.

官方文档

Analysis Centre Software – Network Parameter Estimation Algorithm

Overview

The Analysis Centre Software (ACS) is a processing package being developed to processes GNSS observations for geodetic applications.

We currently support the processing of:

  • the American Global Positioning System (); and
  • Galileo
  • GLONASS
  • the Chinese Navigation Satellite System ()
  • QZSS

We are actively developing the ACS to have the following capabilities and features:

  • Precise Orbit & Clock determination of GNSS satellites (GNSS POD).
  • Precise Point Positioning (PPP) of GNSS stations in network and individual mode.
  • Real-Time corrections for PPP users.
  • Analyse full, single and multi-frequency, multi-GNSS data.
  • Delivering atmospheric products such as ionosphere and troposphere models.
  • Servicing a wide range of users and receiver types.
  • Delivering outputs usable and accessible by non-experts.
  • Providing both a real-time and off-line processing capability.
  • Delivering both position and integrity information.
  • Routinely produce IGS final, rapid, ultra-rapid and real-time (RT) products.

The software is broken into two main components:

  • the Network Parameter Estimation Algorithm (); and
  • the Precise Orbit Determination ().

The component is intended to be run with a network of stations distributed over a continental region or over global extents. It will read in or observations, or real-time streams, to obtain estimates of the satellite clocks, and zenith troposphere delay estimates. The software package is intended to be run on a large Linux server that has multiple CPUs and sufficient memory to cope a network of 80 – 250 stations.

Contained within the is a User Platform, which can take in orbit and clock products either from a publicly available source such as the , or from those generated by the , to be able to obtain a set of coordinates in real-time or post processed mode. The computational resources to run the User Platform are significantly less, and this can be easily run on a laptop or modest sized PC.

The has been largely based upon the freely available as a starting point; it is our intention to break away from the with a complete set of our own geophysical modelling routines as the development of the package progresses further. The routines have been written in .

PEA

The Version 1.0 beta release supports:

  1. The Network Parameter Estimation Algorithm
  2. The User Platform

Directory Structure

PEA Network Parameter Estimation Algorithm

The PEA Network Parameter Estimation Algorithm supports reading from or observation files to obtain estimates of the satellite clocks

Build

To build the PEA Network Parameter Estimation Algorithm follow the directions in

Examples

In this section we give a brief overview of different examples of how to use the to process GNSS data. For more detail and further examples please refer to the overview and the technical manual.

Before running any of the example make sure you have downloaded the example’s input datasets by using one of the helper scripts in pea/exampleData/

All of the configuration files for examples detailed here, and in the manual can be found in the pea/config subdirectory, and are cleary labelled according to the example set out below.

Running

The pea is run by providing a config file as an argument on the command line

To overide the configuration file options, you can use the command line arguments:

A list of available options is provided by entering the following command:

Example 01 – Use PPP to Process GPS Data

In this example we will process 24 hours of data from a permanent reference frame station. The algorithm that will be use an L1+L2 and L1+L5 ionosphere free combination. The log files and processing results can be found in .

And you should see the following: $POS,2062,431940.000,0,-4052052.7956,4212836.0144,-2545104.6423,0.00000043966020,0.00000039738502,0.00000013421476 $POS,2062,431970.000,0,-4052052.7956,4212836.0144,-2545104.6423,0.00000043965772,0.00000039738393,0.00000013421667

For more information on running the pea in ppp mode see docs/PPPExamples.md

Example 02 Processing a Global Network to obtain satellite clock products

In this example 24 hours of data from a small global network of 87 stations is processed to obtain the clock products needed for high precision positioning.

Check that the paths in the configuration file for the products and RINEX files are correct for your system. If you have followed the convention layed out in the document you should not need to amend anything.

To start the processing use the command:

The process will take approximatelly 2-3 hours to complete depending on CPU performance. The log files and processing results can be found in , or the alternative directory you have specified in the configuration file.

Change into your output directory. You should find a file for each station processed, and a file.

To verify your solution, first grep for the xp values:

and then run:

This will produce the plots , , , and .

Example 03 Processing a Global Network to obtain the orbit and clock products

In this example 24 hours of data from a small global network of 87 stations is processed to obtain the orbit and clock products needed for high precision positioning.

Check that the paths in the configuration file for the products and RINEX files are correct for your system. If you have followed the convention layed out in the document you should not need to amend anything.

To start the processing use the command:

The process will take approximatelly 2-3 hours to complete depending on CPU performance. The log files and processing results can be found in , or the alternative directory you have specified in the configuration file.

Change into your output directory. You should find a file for each station processed, and a file.

To verify your solution, first grep for the xp values:

and then run:

This will produce the plots , , , and .

To compare the satellite clocks run:

This will produce plots for the differences in satellite clocks G02 through to G32 as well as calculating the RMS and standard deviation with respect to the standard. does not exists at this has been used as the pivot satellite clock that we use to remove the bias from.

Example 04 Processing a Global Network to obtain Ionospheric Vertical Total Electron Content (VTEC) Maps

In this example 24 hours of data from a small global network of 87 stations is processed to obtain the IONEX formatted Ionosphere VTEC maps and SINEX formatted satellite Diferential Signal Biases (DSB). Ionospheric VTEC maps follows the IONEX 1.1 format, which can be found in: The satellite bias follows the bias-SINEX format, which can be found in:

Check that the paths in the configuration file for the products and RINEX files are correct for your system. If you have followed the convention layed out in the document you should not need to amend anything.

To start the processing use the command:

The process will take approximatelly 1-2 hours to complete depending on CPU performance and setting specifications.

The IONEX and bias-SINEX files can then be used to obtain SPP and PPP positioning solutions as specified in PPPExamples.md

A utility to plot the TEC values in an IONEX file have can be found at:

This utility will ask for the path/filename of the IONEX file and a start and stop time in format. The Python code will then generate a figure in format for each entry between the start and stop time.

FAQ

I get compilation errors related to the Eigen library/h4>

The software uses features found only in the 3.3.9 version of eigen. Install the library using the procedure outlined in to get the most up to date version.

Acknowledgements

We have used routines obtained from , released under a license, these routines have been preserved with minor modifications in the folder cpp/src/rtklib The original source code from RTKLib can be obtained from https://github.com/tomojitakasu/RTKLIB

We have used routines obtained from , released under the license, these routines have been preserved in the folder cpp/src/3rdparty The original source code from Better Enums can be obtained from http://github.com/aantron/better-enums.

大佬分析

下文节选自[不迷途导航程序员-PEA源码阅读笔记

简单介绍

精确的卫星轨道和钟差是 GNSS 位置服务的必要信息之一。特别是对于不依赖参考站的 PPP ,和长基线 RTK 技术,为了充分利用几个 mm 测量精度的载波相位观测值,对卫星轨道和钟差产品的精度要求达到 cm 级。

国内外著名的轨道/钟差计算软件有 BERNESE、EPOS、PANDA、GINS、MADOCA 等等。这些软件大都不开源,或者像 BERNESE 那样通过商业版提供源代码,但历史悠久的 Fortran 代码阅读、改动起来不太容易。


缺少开源软件的参考,阻碍了不少年轻学子学习精密定轨与算钟的激情和好奇心。这种情况在新冠病毒全球肆虐的 2020 年终于出现了变化。著名的 Geoscience Australia(GA)在 5 月前后在代码托管 站 Bitbucket 上开源了包括 精密轨道计算 POD,GNSS 解 PEA 在内的多套核心代码。除了支持精密定轨、算钟外,还支持计算全球电离层模型和用户端的 PPP 解。是笔者已知的第一款 GNSS 服务端整 数据处理的开源软件!!

POD 混合使用 Fortran 77,90 和 03 语言开发,无外部依赖项。PEA 使用 C/C++ 语言,依赖 Boost、YAML、Eigen、Better Enums 等少量第三方代码。版权协议为 Apache许可证 2.0。GA 计划将来将两者整合成一个统一的软件。笔者猜测大概率会是将 Fortran 语言的 POD 改为 C/C++ 融合进 PEA 里。

除了源码和简要的介绍文档外,GA 还提供了 10+ 各种功能的配置文件,算例说明和数据下载、分析、绘图的 Python 脚本,帮助使用者快速上手,跑通各类算例。软件代码由 10 余人协作开发,从 commit 历史可以看出软件的更新和改进一直十分活跃。

代码分析

PEA 源代码的一些风格和特性如下:

  • 使用 C++ 17 标准。
  • 大量使用标准模板类库 STL 的 list、vector、array、pair、map、multimap 等数据结构。
  • 使用 template 模板函数以及操作符重载。
  • 主体是面向过程程序设计。程序执行流程、入口、出口比较清晰。
  • 以 struct 代替 class 设计了几个带有成员函数和成员变量的类,没有多态等抽象特性。
  • 用到了 lambda 表达式创建匿名函数。
  • 代码注释丰富。

所以在开始阅读 PEA 代码前,需要适当学习一下 C++ 11、14、17 新标准的一些现代化的特性。

程序使用 YAML 格式的配置文件,利用 Boost 库的 time、logging、regex、asio 等模块实现时间、日志、正则表达式、tcp-ip 等操作,还依赖了 Eigen3、OpenBLAS 库做数值计算,需要事先编译好共程序调用。此外,程序在源码中还集成了 gnuplot、Better Enums、和修改后的 RTKLIB 部分底层源码。


在支持的模型和算法方面,PEA 软件的特点如下:

  • 支持 RINEX v2,3 文件格式,支持 GREC 四大星座
  • 对流层模型支持 VMF1、VMF3 等投影函数,模型比较新
  • 支持 BDS 伪距观测值星端多路径偏差改正,见 wancorr.cpp 文件
  • 支持钟跳修复,见 detectjump 函数
  • 竟然实现了历元差分周跳修复算法!!!且支持双频和三频,单频暂时被屏蔽
  • 支持 Kalman 验前和验后的数据预处理
  • 支持 Kalman 固定点(fixed-point)、固定滞后(fixed-lag)、固定区间(fixed-interval)平滑算法
  • 事后解结果通过 Kalman 固定区间平滑实现,极耗磁盘空间(单 GPS 系统会占用 100G+ 硬盘空间)!

程序编译

PEA 的源码目录结构如下图所示。在开始学习之前,建议首先阅读 README.md 和 INSTALL.md 两个文档。前者介绍了 PEA 软件的基本信息,后者介绍了如何从安装依赖包开始一步步编译 PEA 软件。

 pea ├── INSTALL.md ├── LICENSE.md ├── README.md ├── aws/ - for automated builds in aws ├── config/ │   ├── Ex01-PPP.yaml │   ├── Ex02-Network.yaml │   ├── Ex03-Network_Orbits.yaml │   ├── Ex04-Ionosphere.yaml ├── cpp/ │   ├── CMakeLists.txt │   ├── cmake           - files to help cmake find dependencies │   ├── docs            - automatic code documentation configuration │   └── src/ │       ├── 3rdparty/   - see ACKNOWLEDGEMENTS in README.md │       ├── common/     - libraries used by the pea │       ├── iono/       - routines for ionosphere modelling

                                                        

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月4日
下一篇 2021年1月4日

相关推荐