RTKlib单点定位-部分思考

2023-11-04

“塔奇克敲代码”博主的博客(RTKLIB源码解析——单点定位),将单点定位部分整理成函数小卡片,为我理解RTKlib提供了很大的帮助。他在单点定位部分列出了一些疑惑,在此我记录下我对部分疑惑的理解。

1.pntpos函数

  • 疑惑1: 源码中将 obs[0].time 作为星历选择时间传递给 satposs函数,这样对于每一颗观测卫星,都要使用第一颗观测卫星的数据接收时间作为选择星历的时间标准。是否应该每颗卫星都使用自己的观测时间?或者应该使用每颗卫星自己的信号发射时间?还是说这点差别对选择合适的星历其实没有关系?

RTKlib在取每一个历元的数据时,已经对时间进行了判断,每个历元内观测量的时间间隔小于DTTOL(0.025s),所以各个卫星时间间隔很小,而且Rinex格式中其实每个历元内卫星的测量时间都是一样的,所以直接用obs[0].time是可以的。
至于是否使用卫星信号的发射时间,实际上接收机的测量时间和卫星信号发射时间之差不到0.1s(GPS轨道高2万公里,光速约3x10^8),而星历的有效时间为前后两小时,我觉得没有必要使用卫星信号发射时间,对选择星历几乎无影响。

  • 疑惑2: 这里规定能够执行 raim_fde函数的前提是数目大于等于 6,感觉不是只要大于等于 5就可以了吗?

必须要有2个冗余方程,所以卫星数需要大于等于6。如果只有5颗卫星,raim_fde算法会排除一颗卫星进行位置计算,就只剩下4颗星。4个方程解4个未知数,是没有残差的,因为没有冗余信息算残差。

2.satposs函数

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

接收机时间的确是包含钟差的。在计算信号发射时间时,会计算伪距除以光速,得到信号传播时间。而伪距中也包含了接收机钟差,用接收机时间减去传播时间,就把接收机钟差抵消了,所以得到的还是卫星的实际发射时间。

  • 疑惑2: 为什么要进行 7中操作?(7中操作:如果由 6中计算出的钟偏为 0,就再次调用 ephclk函数,将其计算出的卫星钟偏作为最终的结果。)

这是由于使用精密星历可能没有计算出卫星钟差,所以就用广播星历进行计算。正常使用广播星历计算卫星位置,卫星钟差应该是不会为0的。

3.estpos函数

  • 疑惑1: 为什么单点定位中未知数个数NX=7,应该只有4个未知数?

因为RTKlib利用了多系统的卫星进行单点定位,所以除了四个熟知的未知数(3维位置、接收机钟差),还有系统之间的时间偏差,这个量级可达几百纳秒,乘个光速相当于几十米了,所以必须进行估计。因此RTKlib中增加了3个未知数为glo-gps time offset, gal-gps time offset, bds-gps time offset。

4.seleph函数

  • 疑惑1: 为什么 tmax和tmin都要加 1?

我也没明白,但是感觉影响不大。

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

IODE<0实际是指不按期号查找星历,直接查找时间最近的星历。

  • 疑惑3: 考虑到星历中卫星的健康状况,这里在选择星历时是否也应该验证 eph.svh==0呢?

应该是需要验证的,不过影响不大,因为后面计算卫星位置时进行了验证,所以svh!=0的卫星不会参与计算位置和速度。

5.eph3clk函数

  • **疑惑1:**看不懂上述处理过程,跟以往资料上都不一样。咋回事?

因为计算卫星钟差时:
t = t s v − δ t s v t = t_{sv} - \delta{t_{sv}} t=tsvδtsv
δ t s v = a 0 + a 1 ( t − t o c ) + a 2 ( t − t o c ) 2 \delta{t_{sv}} = a_0+a_1(t-t_{oc})+a_2(t-t_{oc})^2 δtsv=a0+a1(ttoc)+a2(ttoc)2
t t t为卫星信号发射时刻, t s v t_{sv} tsv为发射时刻的卫星测距码相位时间, δ t s v \delta{t_{sv}} δtsv为卫星测距码相位时间偏移, t o c t_{oc} toc是星历中的TOC。可以看到上面两个公式中都有 t t t,所以RTKlib做了一些迭代计算。不过在北斗和GP的ICD中都提到 t t t可以忽略精度,直接用 t s v t_{sv} tsv计算也可以。

6.rescode函数

  • 疑惑1: 关于 5中的去除重复数据的过程,有以下几个看法:
    ① 这样做的前提是相同卫星的重复数据必须相邻出现!
    ② 为什么在这里要进行重复数据检测,在构建 obsd_t结构体时就可以进行这项工作呀?
    ③ 5中当数据重复时,i++后继续下一次循环,这样的话会直接略去后面所重复的数据,这样做就会将两个相邻重复数据都忽略掉,就相当于重复数据都不使用。感觉可以用其中一个的啊!
  1. 由于在解析Rinex数据时,RTKlib依照时间、卫星系统、卫星号、接收机号对测量值进行了排序,所以可以保证相同卫星的重复数据相邻出现;
  2. 确实可以在构建obsd_t结构体时可以做。
  3. 是的,循环本身也在i++,所以会出现两个数据都不用的情况,可以将这个if中的i++去掉,就可以用到第二个。
  • 疑惑2: 11步中,为什么要选择所用信号频组中第一个频率的波长来进行电离层延时修正呢?还有,电离层延时的值发生了改变,那这里的方差是否也需要跟着一起改变呢?

选择L1算,就可以根据电离层延迟频率间的关系得到其他频率的电离层延迟。

  • 疑惑3: 在计算电离/对流层延时时,均传入了 iter>0?opt->ionoopt:IONOOPT_BRDC或 iter>0?opt->tropopt:TROPOPT_SAAS参数,都强调了当 iter==0时,会强制使用 Klobuchar或Saastamoinen模型。这会不会是因为这两种模型都是属于对接收机位置不是非常敏感的类型?

我也没明白

  • 疑惑3: 这里亏秩应该就是欠定方程的意思吧?这里 17中的操作没有看懂,也没能找到相关理论依据

如3.estpos函数中提到的,加入了系统间时间偏差3个未知数glo-gps time offset, gal-gps time offset, bds-gps time offset。如果某个系统的卫星不存在,比如没有北斗卫星,那么bds-gps time offset这个未知数是估计不出来的,所以需要新增一个约束方程,实际像是将这个time offset当成了一个小噪声。

7.varerr函数

  • 疑惑1: 本函数整体到底是为了计算哪一部分的误差,还是没搞清楚。
    IFLC模型的方差为什么可以用 varr*=SQR(3.0)计算?

本函数是计算测量误差,这部分模型可以参考manual P158,公式(E.6.24)。IFLC组合后的噪声会是原来噪声的约3倍,可以参考《GPS原理与接收机设计》P85。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RTKlib单点定位-部分思考 的相关文章

随机推荐

  • Pysyft学习笔记一:dome思路

    Pysyft是一个比较适合学习FL学习小白的开源框架 相比与FATE的高封装性 Pysyft提供了更高的自由度 虽然FATE确实加密算法等等的效果做的非常的好 但是我在Ubuntu下面捣鼓了两天 下载了Mysql Redis等等的一堆东西
  • 设计模式状态模式uml_UML的完整形式是什么?

    设计模式状态模式uml UML 统一建模语言 UML Unified Modeling Language UML is an abbreviation of Unified Modeling Language In the field of
  • 【Mac】Mac安装telnet

    1 美图 2 安装 Homebrew 安装 Homebrew 3 安装 base lcc lcc github brew install telnet Updating Homebrew gt Downloading https homeb
  • linux tr命令用法详解

    tr命令用法详解 转自 https www cnblogs com bingguoguo articles 9188703 html tr命令可以对来自标准输入的字符进行替换 压缩和删除 它可以将一组字符变成另一组字符 经常用来编写优美的单
  • 系统架构演变历史及集群、分布式、微服务、SOA的概念区别

    文章目录 1 系统架构演变历史 1 单一应用架构 ORM 2 垂直应用架构 MVC 3 面向服务框架 SOA 4 微服务架构 1 微服务的特点 2 微服务主要解决的问题与场景 3 微服务的缺点 2 集群和分布式 微服务和soa概念和区别理解
  • 创业有哪些忠告?创业赚钱有哪些思维需要掌握?

    1 做买卖 要接到钱再干活儿 除非是你是在做自个的事 并且你确定将来会出现大收益 2 别做回款长的买卖 它对人的本性的考验太大 大部分人们在钱上的阻碍是挺大的 很多钱你是收不回家的 3 没想搞清楚运营模式 就不必自主创业 不然你将公司的铁架
  • 限制<textarea>文本框的字数长度以及设置右下角动态的字数显示

    平时无论在移动端还是PC端都会经常用到文本框 最常碰到的就是要对文本框里面的字数进行限制还有相对应的把剩余可输入的字数显示在右下角 要实现它并不是很难 直接上代码套用一下就ok了 HTML 因为我这里只用到了一小块地方 所以就直接把文本框C
  • 泛型是什么,为什么要用泛型

    泛型 泛型概述及优势 泛型 是JDK5 中引入的特性 可以在编译阶段约束操作的数据类型 并进行检查 泛型只能支持引用数据类型 集合体系的全部接口和实现类都是支持泛型的使用的 好处 统一数据类型 把运行时期的问题提前到了编译期间 避免了强制类
  • TensorFlow在MNIST中的应用-Softmax回归分类

    参考 TensorFlow技术解析与实战 http wiki jikexueyuan com project tensorflow zh tutorials mnist beginners html http www jianshu com
  • 7-2 一元多项式的乘法与加法运算 JAVA_MAP方案

    7 2 一元多项式的乘法与加法运算 30 分 题目要求 设计函数分别求两个一元多项式的乘积与和 输入格式 输入分2行 每行分别先给出多项式非零项的个数 再以指数递降方式输入一个多项式非零项系数和指数 绝对值均为不超过1000的整数 数字间以
  • PCB layout 注意事项

    过孔方面的注意事项 放置过孔时 放置过孔时 2个过孔之间的能走过一根信号线 注意美观横平竖直 过孔与焊盘的间距 PCB layout 时过孔与焊盘的间距 最好在6mil 1 524mm 以上 因为过孔一般不开阻焊 离焊盘太近会导致过孔露铜
  • BigDecimal中divide方法详解

    1 首先说一下用法 BigDecimal中的divide主要就是用来做除法的运算 其中有这么一个方法 public BigDecimal divide BigDecimal divisor int scale int roundingMod
  • 「Python 基础」异步 I/O 编程

    I O 密集型应用程序大大提升系统多任务处理能力 异步 I O 模型 一个消息循环 主线程在消息循环中不断重复 读取消息 处理消息 获取线程池 loop get event loop while True 接收事件消息 event loop
  • R语言实现个人信用风险评估(数据科学导引)

    1 案例背景 在很多国家 政府机构会密切监控贷款业务银行需要明确解释申请者的贷款申请被拒绝或者批准的原因 这种可解释性对于贷款申请者也是很重要的 在贷款申请被银行拒绝时 申请者需要知道为什么自己的信用级别不符合银行的要求 通过构建自动化的信
  • es脚本 实现字段之间进行比对

    script script source ctx source extra test lang painless query term user kimchy java BoolQueryBuilder boolQueryBuilder Q
  • 详解比较古怪的字符串拆分函数:strtok函数

    对于字符串中的标点符号 字符呀 如何能够当作分隔符来对原字符串进行分割呢 分割出来的为一段一段的字符 因此 在这里面就用到了 本文 比较古怪的字符串拆分函数 strtok函数 假设 对于这个字符串 woaini wangyijun com
  • 3.4 三级指针

    char p NULL 注 1 可以通过三级指针间接的改变二级指针的指向 2 p表示 三级指针指向的二级指针中保存的内存地址 3 三级指针做函数参数时 主调函数需要传2级指针的地址 4 n级指针可以间接修改n 1级指针的指向 下面的例子通过
  • @Component注解的作用

    Spring自带的 Component注解及扩展 Component 定义Spring管理Bean 也就是将标注 Component注解的类交由spring管理 AspectJ风格的切面可以通过 Compenent注解标识其为Spring管
  • VMware10上新建虚拟机步骤图解 + 安装Centos 7(64位) 系统

    原文 https blog csdn net hometing218 article details 79486172
  • RTKlib单点定位-部分思考

    塔奇克敲代码 博主的博客 RTKLIB源码解析 单点定位 将单点定位部分整理成函数小卡片 为我理解RTKlib提供了很大的帮助 他在单点定位部分列出了一些疑惑 在此我记录下我对部分疑惑的理解 文章目录 1 pntpos函数 2 satpos