小白如何学习GNSS(三)- 如何阅读rtklib源码

2023-11-16

总览

和前两篇一样,都是画重点,而不会去解读代码,只会告诉你哪些代码需要阅读,而哪些可以稍后阅读,哪些基本不需要关注。

首先给一个总览,即 输入->处理->输出。

输入的观测文件(o文件)和星历文件(p文件)都是rinex格式,建议初步了解该格式,网上也有一些介绍的博客,自行搜索。

更建议阅读rinex英文格式文档,因为经常用到,尤其是观测文件。

其他的配置文件以及rtklib的结果输出文件也建议了解,除了使用rtkplot画图分析外,也可以自定义输出格式,使用python或者matlab进行结果分析。

如果是动态的,则只能写相应的程序进行对比分析。

我在git上其实也上传了动态对比的一套简单的python对比工具,需要请后台回复 git,切换到mulfreq-spp分支,并拉取最新代码,工具在python文件夹下。

关于其他的,比如在rtkpos()函数之前的一些,观测数据读取,星历读取,以及一些为了支持多文件处理的缺省字段匹配的逻辑,个人不建议去阅读。

建议直接从rtkpos()函数开始进行阅读和调试,之前的在有需求之后再去阅读。

如果有精力,还是建议了解以下日志的打印和输出,因为需要用到这些信息进行算法迭代和调试。


下面是算法程序逻辑部分。

从rtkpos()或者relpos()函数开始,来阅读rtk算法相关代码。

首先我们肯定要知道要处理的观测值数据是如何存储的,另外关于如何使用星历和观测值计算得到卫星的位置和钟差,rtklib已经给计算好了,个人建议没有必要去阅读。

但是卫星位置和卫星钟的存储,需要明白是如何存储的。

需要使用时,知道去哪里获取,中间过程不需要关注。当你感觉rtklib计算出错时,再去了解中间过程。

除了卫星的轨道钟差信息,关于卫星的中间处理信息,rtklib大部分存储在rtk_t->stat数据结构中。

上个图中的.stat文件基本是该结构体的输出,可以用于问题排查和定位。个人建议可以对.stat文件进行可视化,即画成图,可以更加直观的了解每个卫星或者整个历元的处理状态。

另外就是kalman滤波的状态和协方差阵的存储。计算过程中的各种矩阵的计算与存储,需要搞明白。

算法流程基本就是从上到下,一些简单的中间过程不需要关注,需要关注satpos的输入和输出。

不光是satpos,看其他函数时,也要关注这个函数的输入和输出是什么。

遗憾的是,除了一些主流程有详细的输入输出介绍,算法流程中的函数就需要自己去熟悉。

基本就是整个RTK的定位流程,数据预处理->计算残差->滤波->模糊度固定。

只是RTKLIB的数据预处理藏在了一些函数里,除了周跳探测比较系统外,其他的一些预处理,比如观测值高度角过滤,信噪比过滤,都在一些角落的函数里。

公众号

有时会将代码 或者资源放在个人公众号上,有问题,在公众号后台回复,也回答的比较快一些,欢迎关注 GNSS和自动驾驶

其他相关文章链接汇总

小白如何学习GNSS(一)_梧桐Fighting的博客-CSDN博客

小白如何学习GNSS(二)_梧桐Fighting的博客-CSDN博客

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

小白如何学习GNSS(三)- 如何阅读rtklib源码 的相关文章

  • HTML5(十一)——WebSocket 基础教程

    一 为什么要学 WebSocket websocket 是 HTML5 提供的一种长链接双向通讯协议 使得客户端和服务器之间的数据交换更简单 允许服务端主动向客户端推送数据 并且客户端与服务端只需连接一次 就可以保持长久连接 并进行数据通信
  • Unity 委托 (Delegate) 的简单理解以及实现

    委托相当于把某一个方法当成参数 当执行委托的时候就相当于执行了方法 所以这个方法必须和委托具有相同的参数类型 委托的简单实现 using UnityEngine 委托 代理 是存有对某个方法的引用的一种引用类型变量 委托语法 delegat
  • 蓝桥杯冲击01 - 质数篇

    目录 前言 一 质数是什么 二 易错点 三 试除法判断是否为质数 四 质数常考三大模型 五 真题练手 前言 距离蓝桥杯还有一个月 高效复习蓝桥杯知识 质数相关的题目在蓝桥杯中经常出现 例如 2016年蓝桥杯省赛初赛第四题就是要求判断一个数是
  • 基于宽表的数据建模

    一 业务背景 1 1 数据建模现状 互联网企业往往存在多个产品线 每天源源不断产出大量数据 这些数据服务于数据分析师 业务上的产品经理 运营 数据开发人员等各角色 为了满足这些角色的各种需求 业界传统数仓常采用的是经典分层模型的数仓架构 从
  • 部分安卓端ncnn模型推理输出数据存在大量-nan和nan的问题

    原文issue链接 部分安卓端ncnn模型推理输出数据存在大量 nan的问题 Issue 3607 Tencent ncnn github com 问题描述 onnx ncnn模型在pc端推理输出结果正确且基本一致 在部分安卓设备上使用同一
  • 剑指 Offer 41. 数据流中的中位数(java+python)

    如何得到一个数据流中的中位数 如果从数据流中读出奇数个数值 那么中位数就是所有数值排序之后位于中间的数值 如果从数据流中读出偶数个数值 那么中位数就是所有数值排序之后中间两个数的平均值 例如 2 3 4 的中位数是 3 2 3 的中位数是

随机推荐

  • 微信小程序内添加腾讯地图 导航

    1 微信小程序 设置 第三方设置 插件管理 添加插件 如果搜索不到腾讯位置服务路线规划插件 可搜索如下地址直接添加腾讯位置服务路线规划 小程序插件 微信公众平台 问题 提示添加失败 项目主体不符的 可以通过 服务 微信服务市场 搜索 腾讯位
  • Python3 sorted自定义排序

    Python3的sorted函数具有key参数 可以进行自定义的排序 但并不是直接将自定义比较函数赋给key 这一点和C 是不一样的 在python3中 需要import functools来传递比较函数 注意 在Python3中 自定义比
  • hibernate之关于1+N的问题

    Hibernate 之关于1 N的问题 1 N问题 也有人叫做N 1问题 至今未统一 在这里我会告诉大家我为什么称之为1 N问题 什么情况下会产生1 N问题 在实际的项目开发中 我们配置的一对多 或者是多对一 在查询的时候会产生一种现象 例
  • Qt Http请求,post和get的两种方式

    今天我们介绍一下QT的http请求 这里有post和get两种方式 一 post请求方式 参数分为网址和具体请求值两个部分 有时候还需要设置头信息 看具体情况定 1 void MainWindow sendPostRequest 2 3 Q
  • 防止SQL注入

    SQL注入是指攻击者通过在输入的数据中注入恶意的SQL代码 以获取非法访问 窃取敏感信息等操作 以下是一些防止SQL注入的方法 使用参数化查询 使用参数化查询可以防止SQL注入攻击 参数化查询是指在执行查询时 将参数与查询语句分离 使得输入
  • java程序员微信群,欢迎准java行业人员加入,会一直更新

    微信群 请扫描二维码加入 本人在北京 主场北京 位置不限 仅限java行业交流 C C 以及python请另外加群 谢谢 欢迎准 java行业的进入 杜绝假冒程序员加入 精兵简政 群内与java无关私事请私聊 任何java的问题 欢迎讨论
  • NodeJS实现视频转码

    视频转码就是一个先解码 再编码的过程 从而将原来的视频转换成我们需要的视频 这种转换可能包括各式 mp4 avi flv等 分辨率 码率 帧率等 传统的视频转码中 很常用的工具是FFmpeg FFmpeg是一套可以用来记录 转换数字音频 视
  • UNIX环境高级编程 学习笔记 第十四章 高级I/O

    低速系统调用为可能使进程永远阻塞的一类系统调用 1 如果某些文件类型 管道 终端设备 网络设备 的数据不存在 读操作可能会使调用者永远阻塞 2 如果数据不能被某文件类型立即接受 管道中无空间 网络流控制 写操作可能会使调用者永远阻塞 3 在
  • 25行代码爬取英雄联盟手游英雄皮肤图片

    下面附源码 手游网址 英雄联盟手游官网 腾讯游戏 1 点击英雄 2 随机点一个英雄进去 3 按F12进入开发者模式 然后刷新 4 在搜索框里输入 js 找到skins js点击 我们可以发现所有现有的英雄皮肤信息都在里面 皮肤的图片链接以及
  • (Java基础知识) 几种Java任务调度比较

    前言 任务调度是指基于给定时间点 给定时间间隔或者给定执行次数自动执行任务 本文由浅入深介绍四种任务调度的 Java 实现 Timer ScheduledExecutor 开源工具包 Quartz 开源工具包 JCronTab 此外 为结合
  • pycharm配置镜像源

    一 背景 由于python再下载包时 下载时容易出现超时 等各种问题 原因 由于Python库的服务器都在国外 国内下载是速度普遍会很慢 所以需要配置一个镜像源来加快下载速度 二 解决方案 方案一 配置国内镜像源 清华 https pypi
  • 数据链路层的有那三个基本问题?为什么都必须加以解决?

    数据链路层的有那三个基本问题 为什么都必须加以解决 数据链路层的三个基本问题 封装成帧 透明传输 差错检测 封装成帧就是在一段数据前后分别添加首部和尾部 接收端以便从收到的比特流中识别帧的开始与结束 帧定界是分组交换的必然要求 透明传输避免
  • DCM与CCM

    1 什么是DCM断续工作模式 CCM连续工作模式 首先 反激开关电源的工作模式有三种 连续模式 临界模式 断续模式 如图为输出电流的波形图 由U L di dt 得到di U L dt 输入电压U和电感都是定值 所以电流的三角形式 在某一固
  • 数据分析之小白的爬虫入门教学

    数据是数据分析的基础 俗话说巧妇难为无米之炊 想要做好数据分析 必须先获得数据 在去年的这个时候 我一直想自己尝试写个爬虫 我买了一本python的书籍 但是因为种种原因 当时自己学习的速度很慢 一直到最近才慢慢的会写一些简单的爬虫 那这篇
  • python怎么求e的指数_分享Python中用于计算指数的exp()方法实例教程

    exp 方法返回指数x ex 语法 以下是exp 方法的语法 import math math exp x 注意 此函数是无法直接访问的 所以我们需要导入math模块 然后需要用math的静态对象来调用这个函数 参数x 这是一个数值表达式
  • Springboot @Async 异步任务调用

    异步调用的概念 异步调用相对于同步调用而言 通常的方法都是程序按照顺序来执行的 程序的每一步都需要等到上一步执行完成之后才能继续往下执行 而异步调用则无需等待 它可以在不阻塞主线程的情况下执行高耗时方法 如何实现异步调用 在不使用Sprin
  • 使用仿站小工具

    一 前提条件 要仿的网站页面路径必须是完整的 html路径项目 最优仿站 提供一个可以仿站的模板网站 格展网络 网站模板 网站源码 企业网站模板 免费模板下载https www 91084 com 二 获取页面路径 例如 1 选择门户模板
  • Sourceinsight最佳配色方案及颜色字体调整方法

    在Ubuntu下面用Gedit有一款比较好看的配色 应该是Darkblue 按照那个样子在SI里面做了一个差不多的 按个人喜好 背景色换成黑色 如下所示 配色的方案文件可以从此处链接免费下载 配色方案下载点击此处 下载该文件后 导入方法 O
  • 使用linux套接字实现的简易服务器与客户端

    本文中的代码是我在学习linux套接字编程时写的 运行环境为RedHat 编译环境为G 测试环境有两台linux虚拟机 地址分别设为192 168 8 123和192 168 8 99 其中 192 168 8 123上运行了客户端 其源码
  • 小白如何学习GNSS(三)- 如何阅读rtklib源码

    总览 和前两篇一样 都是画重点 而不会去解读代码 只会告诉你哪些代码需要阅读 而哪些可以稍后阅读 哪些基本不需要关注 首先给一个总览 即 输入 gt 处理 gt 输出 输入的观测文件 o文件 和星历文件 p文件 都是rinex格式 建议初步