文章来自于rtklibexplorer的博客:a-python-version-of-rtklib ,这里只是做一个简单的翻译,方便查看,有必要的话请点击链接查看原文信息。

在这篇文章中,我想介绍一个我最近正在进行的新项目。

RTKLIB 可以成为探索全球导航卫星系统精密定位世界的伟大工具。有许多配置选项(有人说太多了!)允许用户比较不同算法设置的影响。它也是开源的,因此用户可以准确地看到代码在幕后做什么,甚至可以修改代码以探索可用配置集之外的选项。

然而,其代码相当复杂,并且编写的风格密集,这对于想要深入挖掘的休闲探索者来说是相当吓人的。C/C+ + 的编译特性也使得其比交互性更强的环境难开发。这些障碍意味着,尽管 RTKLIB 是开源的,但只有少数用户真正深入到核心代码中。对于那些希望更进一步,试验或开发自己的 GNSS 的人来说,RTKLIB可能不是一个最佳选择。

我经常认为,一个 Python 版本的 RTKLIB 将有助于最小化这些障碍,并使 RTKLIB 作为一个学习和开发工具更加有用。最近,我通过高须智二的日记中的一个参考文献了解到一个新开发的 Python 版本的代码,代码名为 CSSRLib,由三菱电机的 Rui Hirokawa 编写。它主要旨在证明如何使用SSR校正数据,同时也包含了一部分rtklib的代码以运行PPK和PPP解算。另外这个算法包里也包含了一些样本数据和包装脚本以在样本数据上运行这些解算策略。显然,这是一项巨大的努力和一项重大成就。

虽然 CSSRLib 算法包对于探索精确的 GNSS 解决方案可能非常有用,但是从 c 到 Python 的转换不够严格,无法让用户直接在这段代码和 RTKLIB 之间来回跳转。

我认为这将是一个有趣的练习,重写的 python 代码更加紧密地与 RTKLIB 保持一致,在 demo5版本中添加所有的改变和增强,并尽可能地匹配 demo5解决方案的解决方案。事实证明,这是一个比我意识到的更加耗时的主张,但是经过几个月的项目断断续续的工作之后,我终于能够完成一个代码,在大多数情况下,符合这些标准。

它不打算成为 RTKLIB 的 c 版本的替代品,因为它只执行完整库功能的一小部分,并且运行速度明显变慢。它目前只运行 PPK 解决方案,虽然我想以后添加 PPP 解决方案。CSSRLib 包支持 GPS 和 Galileo 星座。我已经增加了对 GLONASS 的支持,但 Beidou 仍然不支持。由于最初的CSSRLib的实现和目的是完全不同的,因此我在Github上为其创建了一个新的存储库,并将其命名为rtklib-py。该代码仍然共享其许多CSSRLib的源代码,因此我在代码文件中留下了原始版权通知,并将致谢加入到了原代码中。

CSSRLib 包中包括一个来自大地型接收机的样本数据集,但由于 demo5代码侧重于低成本接收机,我用另外两个数据集取代了样例数据集,一个来自安装在车顶上的 u-blox F9P 接收机,另一个来自谷歌智能手机分米挑战(Google Smartphone Decimeter Challenge) ,数据集包含来自安装在车内的智能手机的数据。

按字面意思直译c代码为python代码后,代码运行起来非常慢,主要是因为 Python 是一个解释型语言,而 c 是一个编译语言。为了使 python 代码以合理的速度运行,RTKLIB 中的许多 for 循环已经被 Numpy 数组操作替换。这种优化的需要,加上 c 和 Python 之间固有的差异,意味着代码不是完全相同的,但是我试图使这两个代码在文件名、函数名、变量名等方面尽可能相似

下面是一个来自左边的 RTKLIB 和右边的 RTKLIB-py 的trace日志的示例,这个示例演示了它们之间的相似性。代码之间仍然存在细微的差异,再加上解决方案的迭代性质,确实会导致最终的定位结果出现少量偏差,但中间结果在大多数情况下非常接近。

两种代码之间的输入(rinex 文件)和输出是相同的,因此 RTKCONV 和 RTKPLOT 可以分别用于生成 rinex格式的输入文件和绘制pos结果。

新代码中的配置参数具有与 RTKLIB 代码非常相似的名称和功能,尽管并非所有选项都支持,特别是,PPP模式比PPK 模式更频繁的使用配置信息。对于两个示例数据集,配置参数分别在 f9p _ config.py 和 phone _ config.py 中定义。运行解决方案的主脚本是 run _ ppk.py。默认情况下设置为运行 F9P数据集,如果想运行解算智能手机的数据集的话把对应的注释放开就行。您可以通过修改run_ppk.py中指定的文件来运行自己的数据。或者也可以这样,复制一下默认的配置文件,然后根据直接的数据调整配置选项。

下面是对F9P样本数据集分别使用RTKLIB(前向滤波)和和rtklib-py解算结果的对比,两者使用相同的配置参数。

RTKlib和rtklib-py结果对比

这是两种解算结果的区别。正如你所看到的,它们非常接近,但并不完全一样。

RTKLIB-py 并不是为了替代 RTKLIB,对于那些只对最终结果感兴趣的人来说也不是一个好的选择。不过,我希望它能在其它几个可能的方面发挥作用:

  1. 作为一个“地图”,探索和了解 RTKLIB 的内部细节是如何工作的

  2. 作为一个开发环境用来增强或者调整RTKLIB 算法。由于两个软件包之间几乎同步,当这些调整测试通过后,可以很容易地将它们移植回 RTKLIB 的 c/c + + 版本。

  3. 更具交互性的环境中调试 在RTKLIB 中发现的问题

  4. 将代码片段剪切粘贴到更自定义的解决方案中

最后一个目标,希望能让这个代码成为参加今年谷歌智能手机分米挑战赛的团队的工具。

这篇文章的目的只是介绍新的代码,所以我不会在这里进行更多的细节。Github 存储库中的自述文件中有一些运行代码的简短说明,但我确实假设用户已经相当熟悉运行 Python 应用程序。

我个人喜欢在 Spyder IDE 中运行 Python,它提供了一个易于使用的交互式环境,并且在安装中包含 Numpy 和其他流行库。但是,我确信,如果您喜欢另一种选择,还有其他一些好的开发环境。

我总是对其他人关于这些话题的想法感兴趣,所以请在下面的评论部分留下你的任何意见或建议。

有用的链接:

高须智二的日记 http://gpspp.sakura.ne.jp/diary202112.htm

CSSRlib https://pypi.org/project/cssrlib/

rtklib-py https://github.com/rtklibexplorer/rtklib-py

rtklib python版(翻译)相关推荐

  1. python k线合成_手把手教你写一个Python版的K线合成函数

    手把手教你写一个Python版的K线合成函数 在编写.使用策略时,经常会使用一些不常用的K线周期数据.然而交易所.数据源又没有提供这些周期的数据.只能通过使用已有周期的数据进行合成.合成算法已经有一个 ...

  2. python 文本翻译 项目_如何用python批量翻译文本?

    首先,看一下百度翻译的官方api文档. http://api.fanyi.baidu.com/api/trans/product/apidoc # coding=utf-8 #authority:bi ...

  3. python 英语翻译_Python有哪些好用的语言翻译方法

    最近有个需求,要将几万条数据从日语翻译成中文.因为数据的获取和处理用的是python代码,所以想先尝试翻译部分也用python实现. 目前网上查到的翻译方法有百度.有道以及谷歌翻译,下面会对这三个方法 ...

  4. mooc数据结构与算法python版期末测验_中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案...

    中国大学数据结构与算法Python版答案_MOOC慕课章节期末答案 更多相关问题 java.lang 包的 Character 类的 isJavaIdentifierStart 方法的功能是用来判断某 ...

  5. 中文分词算法python代码_中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  6. Spark编程指南——Python版

    摘要:对于1个年仅5岁的开源项目来说,其远谈不上尽善尽美,就比如文档相关.本文翻译自Spark Programming Guide,选取了其中使用Python的部分. 自开源之日至今,Spark已经5 ...

  7. 【Leetcode】刷题之路3(python版)

    回溯专题 1.回溯算法的本质是n叉树的深度优先搜索,同时,需要注意剪枝减少复杂度. 2.回溯算法三部曲 确定参数和返回值 回溯函数终止条件 单层循环 3.回溯法思路 回溯法是一种算法思想,而递归是一种 ...

  8. 统计学习圣经!经典教材《统计学习导论》Python版

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 编辑:张倩,来源:机器之心 <统计学习导论>很经典,但习题用 ...

  9. python数据结构与算法分析_数据结构与算法(Python版)

    为什么研究数据结构与算法 本周带大家进入Python版数据结构与算法的学习.想必大家都听过"算法"一词,算法的学习对编程者来说是至关重要的.首先我们先了解一下为什么要研究数据结构与 ...

最新文章

  1. AI产业链全景图!【物联网智商精选】
  2. 【原创翻译】The Case for the Reduced Instruction Set Computer
  3. php 序列化储存和转化 json_encode() json_decode($q,true)
  4. 【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★
  5. modelsim加入xilinx ISE库的方法
  6. 数据结构学习笔记(五):重识字符串(String)
  7. 【thymeleaf】【SpringBoot】在HTML中调用Spring Bean
  8. Ubuntu 18.04 固定ip 设置方法
  9. LightOJ1283 Shelving Books(DP)
  10. vts传感器采取船舶的_智慧船舶交通管理系统
  11. excel重复上一步快捷键_史上最全的Excel快捷键合集
  12. 国产手机的安全漏洞或比勒索病毒还可怕?
  13. 洛谷P1136 迎接仪式
  14. java基础杂谈(一)
  15. Java开发笔记(一百三十)Swing的选择框
  16. 还在浪费时间创建工程图?6分钟教你自定义SOLIDWORKS工程图模板
  17. 教你制作纯净的,原生的WinPE环境【无桌面无任何添加剂】
  18. vmware Please make sure that the kernel module `vmmon? is loaded
  19. 自适应PC端网页制作使用rem
  20. 【数学建模】(五):MATLAB程序设计与积分

热门文章

  1. VS中区分Debug和Realease、x86和x64的宏定义
  2. c语言阶码的位数,【判断题】浮点数的取值范围由阶码的位数决定,而精度由尾数的位数决定。 (1.0分)...
  3. php 中文文件名
  4. 找靓机AppUI自动化测试延伸
  5. iOS应用层架构之CDD
  6. Sep 15th 2018
  7. SQLServer数据库实战视频课程-雷伟-专题视频课程
  8. 报错:fakeroot: preload library `libfakeroot.so‘ not found, aborting
  9. python map函数参数_python map函数
  10. bp算法运行太慢_BP算法的缺点与改进