热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GROOPS实例——使用GPS卫星进行简化动力学定轨及精密单点定位

GROOPS简化动力学定轨与精密单点定位1.GROOPS简介最近在学习GROOPS,分享一些学习成果及心得,主要涵盖GPS简化动力学定轨部分的内容与

GROOPS简化动力学定轨与精密单点定位


1.GROOPS简介

最近在学习GROOPS,分享一些学习成果及心得,主要涵盖GPS简化动力学定轨部分的内容与精密单点定位(ppp),官方给出的说明文档链接:https://groops-devs.github.io/groops/html/cookbook.gnssPpp.html。
首先介绍一下GROOPS:GROOPS(The Gravity Recovery Object Oriented Programming System )是由奥地利格拉茨科技大学开发的一款开源软件,该软件包含精密定轨、占网分析以及精密单点定位等众多内容,并发布于:https://github.com/groops-devs/groops


2.简化动力学定轨及精密单点定位


2.1.元数据准备

进行精密定轨及单点定位需要准备以下元数据,这些元数据需要再Groops数据网上(https://ftp.tugraz.at/outgoing/ITSG/groops/data/)下载或者是在IGS机构下载以及通过Groops软件转换得到(GROOPS支持的格式):

——可从Groops数据网直接下载得到的数据:
1)卫星相关数据
发射器列表(Transmitter List,此文件比较简单,可自己写)
发射器信息(Transmitter info)
天线定义文件(Antenna definition)
接收机信息(Receiver definition)
卫星宏观模型(Satellite macro model)
卫星姿态文件(Attitude)
2)测站相关数据
测站信息(Station info)
天线定义文件(Antenna definition)
精度定义文件(Accuracy definition)
测站位置文件(StationPosition,用以约束定位结果)
3)其他
重力场文件(Gravity field,GOCO06s_static_2010-01-01.gfc.txt)
潮汐文件(Tides and tidal deformation,earthAnelastic2003.xml,oceanTide_fes2014b_n180_version20170520.dat,oceanTide_fes2014b_admittance_linear_linear.txt,atmosphericTide_AOD1BRL06.dat,atmosphericTide_AOD1BRL06_admittance.txt,secularPole2018.xml)
地球自转文件(Earth orientation parameters)
全球气压及温度文件(Global Pressure and Temperature 3,GPT3)
JPL星历数据(ephemerides_JPL_DE432.dat)
love函数相关文件(deformationLoveNumbers_CM_Gegout97.txt,loadLoveNumbers_Gegout97.txt)

——需要从其他网站(CDDIS,WHU,CNT等机构,精密文件“P”最好使用同一机构下的)上下载的数据:
P-精密星历文件(.sp3)
P-精密钟差文件(.clk)
P-码偏差文件(.bia)
观测值文件(.**o)
对流层模型文件(VMF3)
*注:VMF3下载地址 https://vmf.geo.tuwien.ac.at/trop_products/ (格网式-GRID或测站式-GNSS)

需通过Groops转化或手动生成的数据:
1)卫星星相文件(Star Camera),在定轨过程中的中间产物,这里不做描述。

2)特定卫星的Prn钟差文件
打开Groops,添加项目LoopPrograms,在LoopPrograms中添加GnssClockRinex2InstrumentClock以循环获取所有GPS卫星的钟差文件。

LoopPrograms中的设置:
Loop->fileAscii,
inputfile->transmitter list
其余默认即可。

GnssClockRinex2InstrumentClock中的设置:
inputfileClockRinex->钟差文件(clk)
identifier->{loopstring}
intervals->uniformSampling, 起始时间为处理数据当天零时零分零秒,结束时间可设置为第二天零时零分零秒,采样间隔最好与钟差文件保持一致。
其余保持默认设置。
获取的钟差文件如下(文件名自定义,卫星prn会自动追加在文件名中):
文件名自定义,卫星prn会自动追加在文件名中
3)每个卫星的信号偏差文件
GnssSinexBias2SingalBias:
inputfileSinexBias->bia文件
inputfileGlonassReceiverDefination->GLONASS卫星发射器的频率号映射(不用GLONASS卫星可不设置),部分结果如下:
在这里插入图片描述
:注意,输出文件的名称必须为gnssSignalBias.{prn}.*,否则后续处理将会报错。
4)Groops格式的观测值文件
RinexObservation2GnssReceiver
inputfileRinexObservation->观测文件
inputStationInfo->站信息文件
inputfileSemiCodelessReceiver->Groops数据网上下载

5)对流层模型的时间序列
下载对当天00,06,12,18及第二天00的流层模型Grid 1×1数据。
运行ViennaMappingFunctionStation2File
inputfile->将下载的数据全部添加
timeSeries->uniformSampling
起始时间当天00:00:00,结束时间为第二天00:00:00,采样间隔6h。


2.2简化动力学定轨

基本认识:
精密单点定位需要精密轨道,从精密星历中获取精密轨道的方法主要有三种:
a)插值法
b)动力学方法
c)简化动力学方法
简化动力学方法是动力学方法的“简化版”,它估计了卫星所受到的主要摄动力(地球引力场,太阳光压等),而将除主要摄动力以外的摄动力视为一种随机脉冲误差,通过估计这一误差对轨道进行进一步改正获取精密轨道。
GROOPS软件实现:
LoopPrograms中的设置:
Loop->fileAscii,
inputfile->transmitter list
其余默认。

在LoopPrograms中依次添加如下项目:
在这里插入图片描述
loop->fileAscii(transmitter list)
在这里插入图片描述

Sp3Format2Orbit->输入sp3文件,获取每一个卫星的轨道。
在这里插入图片描述
InstrumentResample->对从sp3文件中获取的轨道插值
在这里插入图片描述
orbitSampling=900s

OrbitAddVelocityAndAcceleration->使用插值轨道获取卫星速度及加速度,输入插值轨道文件。
在这里插入图片描述
GnssPrn2SvnBlockVariables->获取卫星PRN对应的SVN号,将其转换得到的SVN号保存至变量中供后续使用(svn),输入文件为transmitter info。
在这里插入图片描述
SimulateStarCameraGnss->根据轨道文件、卫星姿态文件(根据SVN给出)及JPL星历获取星相数据。
在这里插入图片描述
PreprocessingVariationalEquation->输入添加速度及加速度的轨道、星相文件,获取变分方程文件(轨道积分结果)
包含以下设置
forces->摄动力模型
重力场、天文潮、地球潮汐以及相对论效应即可,除重力场maxDegree设置为20以外,其余参数默认(如图所示)。

在这里插入图片描述
PreprocessingVariationalEquation其余设置,添加地球自转文件、JPL星历及重力场模型(和上文一样再添加一次)
在这里插入图片描述
PreprocessingVariationalEquationOrbitFit->最小二乘法拟合获取其他轨道改正参数,对于每一个循环来说,这个项目需要进行两次,第一次估计太阳光压:
输入变分方程及添加了速度、加速度的轨道、JPL星历以估计太阳光压参数(至少估计前五个参数,也有文献提出五参数比七参数更好)
在这里插入图片描述
第二次估计随机脉冲误差,与上一步相比,输入的变分方程为估计太阳光压所得到的变分方程,并按下图的方式添加随机脉冲:
在这里插入图片描述
至此,简化动力学定轨已完成,所得变分方程包含了轨道及状态转换矩阵。


2.3精密单点定位

精密单点定位过程非常复杂,具体原理就不再赘述,仅分享如何设置GROOPS的定位策略文件。
a)首先,设置处理数据的采样策略,根据观测文件的采样间隔设置,一般为30s:
在这里插入图片描述
b)而后,设置卫星相关信息,输入准备好的卫星发射器列表、发射器信息、天线定义、卫星接收机定义、信号偏差、变分方程、JPL星历及钟差文件等。
设置estimateCodeBias及estimatePhaseBias为no,其余保持默认设置。
在这里插入图片描述
注:这里输入的信号文件名称必须为gnssSignalBias.{prn}.dat,否则报错(这个问题看了一堆源码才发现)。

c)其次,设置接收机信息
选择stationoNetwork模式
输入要处理的测站名列表文件(自己手动创建,每行一个测站)、测站信息文件、天线定义文件、接收机定义文件、精度文件、用以约束的测站位置文件以及观测值文件。
在这里插入图片描述
相关参数设置:
在这里插入图片描述
对流层设置:
在这里插入图片描述
viennaMapping中输入文件为上文准备的对流层模型时间序列文件,trend中开始时间应设置为处理当天的正午。

潮汐文件:
输入文件前文准备的潮汐数据文件(默认设置里有对应的名字),所有的minDegree设置为1,其余默认。
在这里插入图片描述
其余设置:
输入JPL星历、love函数相关文件。
设置codeMaxPositionDiff=200,minEstimableEpochRatio=0.25。(如果出现“”测站不可用“报错信息,可以将位置差适当调大,可用历元数适当调小),其余默认。
在这里插入图片描述
d)电离层设置->默认设置即可,地球自转文件,提供上文自转文件,保持默认设置即可,整周模糊度,默认设置。
e)constrains(约束)
parameters->wildcard:object= * ,type=troposphere*,temporal= * ,interval= * 。

f)processingStep:forEachReceiverSeparately
在processingStep:forEachReceiverSeparately,依次添加
(1)processingStep->selectParameters:
在这里插入图片描述
在这里插入图片描述

(2)processingStep->estimate:
在这里插入图片描述

(3)processingStep->Group:
processingStep->Group中再次添加processingStep->selectParameters,设置如下:
在这里插入图片描述
在这里插入图片描述
以及processingStep->estimate:
在这里插入图片描述

(4)processingStep->estimate:

在这里插入图片描述
(5)processingStep->resolveAmbiguities:
在这里插入图片描述
(6)processingStep->estimate:
在这里插入图片描述
(7)processingStep->printResidualStatistics
(8)processingStep->writeResults
为每个输出文件追加自定义文字吧!

Groops简化动力学定轨及精密单点定位的内容就分享到这里了,我是按照官网的教程结合一些源代码完成的这部分内容,由于源代码阅读不够充分,理论知识掌握不够全面,欢迎卫星定位及大地测量相关专业的同学指出不足并学习讨论。


推荐阅读
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • 本文详细介绍如何在SSM(Spring + Spring MVC + MyBatis)框架中实现分页功能。包括分页的基本概念、数据准备、前端分页栏的设计与实现、后端分页逻辑的编写以及最终的测试步骤。 ... [详细]
  • 本文分享了作者在使用LaTeX过程中的几点心得,涵盖了从文档编辑、代码高亮、图形绘制到3D模型展示等多个方面的内容。适合希望深入了解LaTeX高级功能的用户。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • Maven快照版本管理及更新策略详解
    本文深入探讨了Maven中的快照版本管理和更新策略,解释了快照版本与正式版本的区别,并提供了如何配置快照更新策略的方法,以确保项目依赖始终保持最新。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
author-avatar
b01453901
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有