目录

  • 前言
  • satposs
  • seleph
  • eph2clk

前言

“塔奇克敲代码”博主的博客(RTKLIB源码解析——单点定位),将单点定位部分整理成函数小卡片,为我理解RTKlib提供了很大的帮助。他在单点定位部分列出了一些疑惑,对我进一步深入思考提供了很大的帮助,在此我记录下我对部分疑惑的理解,也是为了补充当时撰写单点定位解析时候的一些不足,大家可以参考。

satposs

1.对于处理过程中的第3步,数据接收时间减去伪距信号传播时间,这里的数据接收时间应该是有接收机得到的,本身应该是包含接收机钟差的,所以最终得到的信号发射时间应该也是不准确的。难道说接收机钟差较小,在此时可以忽略不计?

对于这个问题我们可以这么思考,伪距本身就是包含了所有误差源的一种测量值,除以光速之后,相当于所有误差项都转换成用时间衡量的结果,使用接收机的接收时刻减去伪距除以光速得到的时间,最终的结果应该就是理论上卫星上信号发射的真时刻,没有任何误差。而后面的计算卫星钟差,再减去,是因为我们计算卫星位置参考时刻是信号从天线发出去的那一刻的时间,所以还需要经过3,4步得到信号从天线相位发射出去的时刻。

2.调用 satpos函数,计算信号发射时刻卫星的 P(ecef,m)、V(ecef,m/s)、C((s|s/s))。如果由 6中计算出的钟偏为 0,就再次调用 ephclk函数,将其计算出的卫星钟偏作为最终的结果。

使用精密星历计算出来的卫星钟差往往不为0,如果没有精密星历的时候,但是星历选项又选择了精密星历的模式,调用peph2pos时,会将钟差和钟偏都设置为0。为了程序的容错性考虑,此时会将钟漂默认为0,然后调用ephclk函数计算卫星的钟差,方差设置为广播星历标准900,以此让钟差和钟漂以及方差都有相应数值。

seleph

1.为什么 tmax和tmin都要加 1?

此处我的理解是为了防止程序的判断错误,编程时常常需要思考>=这种情况的判断,所以设置+1可以有效的防止程序出现判断的错误情况,同时也是为了给tmax与tmin赋不一样的初值。

2.IODE正常情况下应该都是 >=0的,为什么还要考虑 <0的情况?

回到ephclk这个函数,调用seleph这个函数时候给予IODE的初值为-1,目的在于不按照数据邻期进行查找,因为普通用户是没有办法直接的到这个数值的,从通用性的角度出发,将其赋值为0可以通过 if (t<=tmin) {j=i; tmin=t;} return nav->eph+j;快速选取卫星信号发射时刻最邻近的最准确的一系列定轨、钟差等参数。

3.考虑到星历中卫星的健康状况,这里在选择星历时是否也应该验证 eph.svh==0呢?
在之后用卫星进行接收机定位的过程中,判断过了卫星的健康程度,如果卫星有问题是不参加单点定位计算的,这里的主要目的是为了选取最邻近的星历,而且该程序在后面还会时常调用,如果加上卫星健康的判断,可能会导致有些情况下星历选择错误,因为有些情况不一定需要判断卫星健康与否,但是需要广播星历的相关参数,比如就是想计算卫星钟差等情形。

eph2clk

看不懂上述处理过程,跟以往资料上都不一样。咋回事?
此处首次使用信号发射时刻时间减去toe的时间算出两者的差值,然后根据广播星历所给的多项式系数对此时刻的钟差进行拟合,然后拿前面的差值减去这次的拟合钟差,我觉得目的是为了计算信号从天线发出时刻的卫星钟差,也可以理解成迭代提高精度,但是北斗与GPS的说明手册都阐明了了此处t的精度可以不考虑,直接拿第一步得出的钟差结果,作为最终结果也不影响。

rtklib-单点定位(pntpos.c)代码关键问题解析-satposs部分相关推荐

  1. RTKLIB源码解析(一)、单点定位(pntpos.c)

      目录 pntpos satposs estpos raim_fde estvel ephclk satpos satsys seleph eph2clk ephpos eph2pos rescod ...

  2. Android代码入侵原理解析(一)

    Original 2017-05-06 付超红 滴滴安全应急响应中心 2017年初,在滴滴安全沙龙上,滴滴出行安全专家--付超红,针对App的攻与防进行了分享.会后大家对这个议题反响热烈,纷纷求详情求 ...

  3. 区块链基础知识与关键技术解析

    区块链基础 1. 区块链的来龙去脉     1.1 区块链技术起源     1.2 比特币产生背景与现状     1.3 数字货币概念     1.4 比特币技术原理 2. 区块链概念与产业现状   ...

  4. 汇编语言实验十完整代码和详细解析

    汇编语言实验十完整代码和详细解析 建议先自己思考问题的答案,不懂则返回看书 扩展建议: [非必要内容,个人经验感悟] 从这儿开始,我们正式接触子程序,主要是通过 call和 ret 来实现的.这样就涉 ...

  5. [学习笔记]Rtklib单点定位中电离层相关函数

    [学习笔记]Rtklib单点定位中电离层相关函数 1. readtec函数 所在文件:ionex.c 主要参数: * read ionex ionospheric tec grid file * ar ...

  6. Halcon中OCR的实现及关键函数解析

    OCR的实现共分为两步,1是使用字符数据来训练OCR.2是使用OCR进行字符的识别. 训练分类器 训练分类器共分为4步: 1是使用阈值来分割字符区域: 2是调用append_ocr_trainf函数将 ...

  7. python中文词云图代码_Python简单实现词云图代码及步骤解析

    一.安装 wordcloud pip install wordcloud 二.加载包.设置路径 import os from wordcloud import WordCloud import mat ...

  8. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令

    这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...

  9. YOLOV5dataset.py代码注释与解析

    YOLOv5代码注释版更新啦,注释的是最近的2021.07.14的版本,且注释更全 github: https://github.com/Laughing-q/yolov5_annotations Y ...

最新文章

  1. 提升工作沟通,你需要明白这些内容
  2. 计算机专业的书普遍都这么贵,Github上的计算机电子书很多~~~
  3. Python3实现邮件群发
  4. 机器学习Sklearn实战——KNN算法
  5. Cacti 每日导出图形及流量报表 [未完成]
  6. html5 2d,3d游戏引擎
  7. 【玩转树莓派】使用 sinopia 搭建私有 npm 服务器
  8. 微信公众平台开发接口PHP SDK完整版
  9. Blazor VS React / Angular / Vue.js
  10. java restful_Java EE中的RESTful计时器
  11. mysql 限制单个用户资源_限制MySQL数据库单个用户最大连接数等的方法
  12. python遍历目录压缩文件夹_zip包含一个档案文件夹,如何使用Python获取存档中每个zip的注释?...
  13. 灵悟礼品网上专卖店——画出E-R图
  14. Oracle批量修改字段长度
  15. 浅谈shadow dom
  16. 联想E14笔记本 不插鼠标出现鼠标自动漂移乱串
  17. 完美解决浏览器劫持方法,简单实用百试百灵!
  18. WorldPress博客系统更换域名导致博客访问出错的解决方案
  19. bochs上网镜像怎么上网_bochs win7镜像可上网版-bochs WIN7 IMG镜像文件下载 v1.0完整版...
  20. 耿丹CS16-2班第三次作业汇总

热门文章

  1. 联邦学习首次被纳入Gartner隐私计算技术成熟度曲线
  2. mariadb登陆报错: 1698 - Access denied for user
  3. 从小米人事变动谈引入人才与自主培养人才哪个更重要
  4. System.BadImageFormatException: 试图加载格式不正确的程序。
  5. idea查看类层级hierarchy快捷键
  6. 对于seo优化与sem竞价有什么不同的地方?哪个更适合?
  7. mac android手机调试,mac 无法连接android手机进行调试 解决方案
  8. unity实现角色的移动(用状态机控制动画)
  9. Chrome插件扩展程序的默认安装目录
  10. css中translation,css3 translate属性