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


推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • SLAM优秀开源工程最全汇总
    https:zhuanlan.zhihu.comp145750808 1、CartographerCartographer是一个系统,可跨多个平台和传感器配置以2D和3D形式提供实 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
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社区 版权所有