rtklib–伪距单点定位(single-point positioning)学习(1)Satposs

目录

  • 前言
  • pntpos总体调用流程图
  • Satposs总体调用流程图:
  • 1.Satposs:按照所观测到的卫星顺序计算出每颗卫星的位置、速度{钟差、频漂}
  • 2.ephclk:通过广播星历来确定卫星钟偏
  • 3.stasys:根据卫星编 确定该卫星所属的导航系统和该卫星在该系统中的 PRN编 。
  • 4.eph2clk:根据信 发射时间和广播星历,计算卫星钟差
  • 5.satpos:计算信 发射时刻卫星的Position、Velocity、Clock
  • 6.ephpos:根据广播星历计算出算信 发射时刻卫星的 P、V、C
  • 7.eph2pos:根据广播星历计算出信 发射时刻卫星的位置和钟差
  • 总结

前言

       rtklib是一个非常不错的开源软件,研究GNSS方向的同学、学者都或多或少会接触到,里面的源代码适合很多类似我这样的新手进行学习,我就是分享一下我学习过程的一些心得想法和感悟,欢迎大家一起交流(接口程序postpos的参数配置、读取数据我这里不提及,只说spp的具体实现)

       话不多说,直接开整。

pntpos总体调用流程图

5.调用 raim_fde函数,对上一步得到的定位结果进行接收机自主正直性检测(raim)。通过再次使用 vsat数组,这里只会在对定位结果有贡献的卫星数据进行检测。

7.首先将 ssat_t结构体数组的 vs(定位时有效性)、azel(方位角、仰角)、resp(伪距残余)、resc(载波相位残余)和 snr(信 强度)都置为 0,然后再将实现定位后的 azel、snr赋予 ssat_t结构体数组,而 vs、resp则只赋值给那些对定位有贡献的卫星,没有参与定位的卫星,这两个属性值为 0。

1.Satposs:按照所观测到的卫星顺序计算出每颗卫星的位置、速度{钟差、频漂}

(2)通过判断某一频率下信 的伪距是否为 0,来得到此时所用的频率个数。注意,频率个数不能大于 NFREQ(默认为 3)。

(4)调用 ephclk函数,由广播星历计算出当前观测卫星的钟差。

2.ephclk:通过广播星历来确定卫星钟偏

(1)首先调用 satsys函数根据卫星编 确定该卫星所属的导航系统和该卫星在该系统中的 PRN编 。

3.stasys:根据卫星编 确定该卫星所属的导航系统和该卫星在该系统中的 PRN编 。

(1)为处理意外情况(卫星 不在 1-MAXSAT之内),先令卫星系统为 SYS_NONE。

(3)确定所属的系统后,通过加上最小卫星编 PRN再减去 1得到该卫星在该系统中的 PRN编 。

(1)计算与星历参考时间的偏差 dt = t-toc。

(3)使用二项式校正得到最终的钟差。

(1)判断星历选项的值,如果是 EPHOPT_BRDC,调用 ephpos函数,根据广播星历计算出算信 发射时刻卫星的 P、V、C

(2)如果该卫星属于 GPS系统,则调用 seleph函数来选择广播星历。

(4)在信 发射时刻的基础上给定一个微小的时间间隔,再次计算新时刻的位置和钟差。

7.eph2pos:根据广播星历计算出信 发射时刻卫星的位置和钟差

(2)计算相对论效应对卫星钟差的影响。

总结

       看代码的过程中确实感觉到了自己的基础理论知识不够扎实,需要学习的东西还有很多,以后也会不定期的更新一些有关于GNSS的基础知识,希望能和大家一起探讨学习。

       完整代码我也放在了我的资源中,可以免费下载,文中的截图均是自己根据参考的解析进行的截图,是按照一个函数为一个模块顺序进行截取的,然后依次进入它们所调用的函数。

参考:
RTKLIB源码解析(一)——单点定位(pntpos.c).

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

上一篇 2022年1月19日
下一篇 2022年1月19日

相关推荐