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

46a06ca02d966fcd1b6fdcf31c06cdb3.png

写在前面

本篇博文用于充实个人分类专栏“GNSS课程”,同时希望能够对有需要的朋友有所帮助。 教材采用《GPS测量原理及应用 第3版》徐绍铨等。 另有疏漏之处,还请评论指出。

更多请见:

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

广播星历解读

84941d50a4e488c2e75e9826f355be84.png

头文件:导航文件的前八行一般为头文件部分,包括文件的一些基本信息,有电离层参数,数据类型,跳秒引起的时间增量,用来计算UTC时间的历书参数等。 卫星的相关参数:导航文件的第9行起,每8行为一个数据块,每一块具有相同的格式。每块的第一行在开头多出来的三位用来存放卫星号PRN。紧接着每19位存放一个数据。因此可将每个数据块视为一个8行5列的表格。

98e46b3564127b8bcb90f96fedebc3ba.png

第一列只在第一行存放PRN,后面全空。 第一行第二列往后依次是toc(时钟时间,对应年月日时分秒)、a0(卫星钟差)、a1(卫星钟数)、a2(卫星钟数变化率)。 第二行第二列往后依次是IODE(数据龄期)、Crs、Delta_n(由精密星历计算得到的卫星平均角速度与按给定参数计算所得的平均角度速度之差)、M0(参考时刻的平近点角)。 第三行第二列往后依次是Cuc、e(轨道偏心率)、Cus、sqrt(A)(轨道长半轴的平方根)。 第四行第二列往后依次是toe(星历参考时刻)、Cic、OMEGA(参考时刻的升交点赤经)、Cis。 第五行第二列往后依次是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对应的GPS周内秒,a0,a1,a2即可解算出卫星在地固坐标系中的位置坐标。实际操作时对函数readatandcomp.m进行相应的参数输入即可。readatandcomp.m分两层实现了comsatpos.m函数参数的自动录入。readatandcomp.m先筛选出与用户想要的卫星号相匹配的数据块,再从中选择与用户观测时间相差不到一小时的数据块,用于函数comsatpos.m的计算。此过程会产生n_selected.txt文件,用户可自行查看。再调用函数comsatpos.m,实现卫星位置的计算。还需要注意的是,readatandcomp.m函数要求用户事先去除卫星导航文件中的头部分,使卫星号PRN顶行,数据呈现规律性,并在readatandcomp.m函数中正确读入处理过的文件。

46e032eaa7a01d29a39b9dd47f2cadec.png

99f254141a05cbf0c6f1833abd983545.png

f4115732e766072c01a39b5b08feda57.png

c50ec98bd3e3441a8617229f9e7ebfee.png

af9f4b7d9c936411d557f753a5eef22b.png

170febc24083c4188178bda4dbbbe8ff.png

1dafeb60455a26e2d3b2989ef3223719.png

57f463149675225927b2e523dfebf999.png

c304647204699760f90f844d88ec2b28.png

c9165da72976e8f5a0c5d4281132eeea.png

总结

这里只是最基础的卫星位置计算方法,并提供了一种提取RINEX文件的方法,虽然略显笨拙,但行之有效,如果有更好的文件读取方法,欢迎评论区交流。 文中采用的编程语言是MATLAB,将来有需求的话会尝试用C++来编写。 相关的数据及代码已放在下面链接里。

卫星位置计算(包含示例文件和.mlapp).zip_卫星位置计算工具-专业指导代码类资源-CSDN下载​download.csdn.net
7f3ecc4d0867096c8535d7d9d2131ade.png

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

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

软件也会按需更新。

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

  • 10
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值