Advertisement

卫星星历 计算卫星位置_卫星位置计算基础讲解

阅读量:

这篇博文主要介绍了如何进行卫星位置计算的基础知识,并提供了相关的Matlab代码和工具包下载。内容包括卫星参数解析、信号发射时的平近点角计算、轨道参数更新等步骤,并附有详细的示例文件和App设计工具供参考。

46a06ca02d966fcd1b6fdcf31c06cdb3.png

写在前面

本文旨在丰富个人GNSS课程相关文章的体系,并希望能为需要该领域知识的读者提供参考。教材主要参考了徐绍铨等编著的《GPS测量原理及应用(第3版)》。如有不足之处,请广大读者不吝赐教。

更多请见:

卫星位置计算基础讲解_越来越废的SB的博客-博客​blog..net

7f3ecc4d0867096c8535d7d9d2131ade.png

广播星历解读

84941d50a4e488c2e75e9826f355be84.png

头文件:导航数据文件的前8行构成元数据部分,涵盖了一些基础信息(包括文件的基本属性)、记录了电离层参数、设置了数据类型、明确了每跳一秒的时间增量以及用于计算UTC时间相关的历书参数等信息。
卫星信息位于第9行及以后的部分中,每隔8行形成一个数据块。每个数据块格式一致:

  • 第一行作为卫星标识符PRN字段;
  • 随后连续存储19位数值;
  • 剩余的空间则填充其他相关参数。
98e46b3564127b8bcb90f96fedebc3ba.png

在第一行的第1列仅存储PRN,在后续各行的该列位置为空。
在第1行的第2至末尾列依次为toc(时钟时间,对应年月日时分秒)、a0(卫星钟差)、a1(卫星钟数)、a2(卫星钟数变化率)。
在第2行的第2至末尾列依次为IODE(数据龄期)、Crs、Delta_n(由精密星历计算得到的卫星平均角速度与按给定参数计算所得的平均角度速度之差)、M0(参考时刻的平近点角)。
在第3行的第2至末尾列依次为Cuc、e(轨道偏心率)、Cus、sqrt(A)(轨道长半轴平方根)。
在第4行的第2至末尾列为toe(星历参考时刻)、Cic、OMEGA(参考时刻升交点赤经)、Cis。
在第5行的第2至末尾列为i0(参考时刻轨道倾角)、Crc、omega(近地点角距)、OMEGA_DOT(升交点赤经变化率)。
本次计算限定至第六行第二列为IDOT(轨道倾角变化率)。至此,本次计算所需参数全部读入。

计算基本原理

(1)计算卫星运动的平均角速度

51f9d856a9d1e67e16e2e32f35ad4261.png

(2)计算信号发射时卫星的平近点角

800d7609e6fa5584bda87c295bab6fa1.png

(3)计算偏近点角 (4)计算真近点角

48f05684c3a181a5898f06e84ac8e881.png

(5)计算升交距角 (6)计算摄动改正项

93b5c22d66831d46912168556003ae54.png
eb554526a972e56ab048b00eef192838.png
a64c730325b26ee8a5e11e1a9899f88b.png

(7)通过施加摄动校正项计算调整后的升交距角、卫星矢径及其轨道倾角。(8)确定卫星在自身轨道平面坐标系内的位置参数。

ea09440c3e014f520b30f79c06b4a4b1.png

(9)计算发射时刻升交点的经度 (10)计算卫星在地固坐标系下的坐标

74cfd9d6112765cfb39073c9f33ed847.png
251379e6c88d104f4de2178d262f6b30.png

源代码及计算结果

代码采用打包文件的形式呈现。代码包含三个主要部分:核心功能体现在卫星位置计算相关的函数comsatpos.m中。该程序通过输入16个参数(包括观测时间对应的GPS周内秒、toc值以及a0到a2等)来实现卫星位置计算功能。在实际运行时需要调用另一个辅助程序readatandcomp.m来进行参数输入操作。readatandcomp.m程序分为两个步骤完成参数处理:首先根据用户指定的目标卫星号筛选出相应的数据块;其次从筛选出的数据块中选择与观测时间相差不到一小时的数据块进行处理,并将处理结果保存为n_selected.txt文件供后续使用。随后系统会自动调用comsatpos.m函数进行最终的卫星位置计算并输出结果

46e032eaa7a01d29a39b9dd47f2cadec.png
99f254141a05cbf0c6f1833abd983545.png
f4115732e766072c01a39b5b08feda57.png
c50ec98bd3e3441a8617229f9e7ebfee.png
af9f4b7d9c936411d557f753a5eef22b.png
170febc24083c4188178bda4dbbbe8ff.png
1dafeb60455a26e2d3b2989ef3223719.png
57f463149675225927b2e523dfebf999.png
c304647204699760f90f844d88ec2b28.png
c9165da72976e8f5a0c5d4281132eeea.png

总结

主要介绍的是基础的卫星位置计算方法以及一种提取RINEX文件的技术。该方法虽然看似繁琐但实际效果显著。如若发现更优的文件读取方式,请在评论区留言讨论。本研究中所采用的编程语言是MATLAB……具体的数据和代码实现可参考以下链接。

卫星定位技术(配备示例文件及(mlapp)).zip_ 卫星定位系统开发指南——基于代码的专业指导资源

卫星定位技术(配备示例文件及(mlapp)).zip 卫星定位系统开发指南——基于代码的专业指导资源

7f3ecc4d0867096c8535d7d9d2131ade.png

另外,采用MATLAB的Appdesigner,编写了一个UI,详见这个资源。

卫星位置计算器(实验材料).zip-专业指导资源-下载​download..net

7f3ecc4d0867096c8535d7d9d2131ade.png

该软件将按照需求进行更新。

最后,希望这篇博文对你有帮助。

全部评论 (0)

还没有任何评论哟~