如何调试和运行rtklib自带的rnx2rtkp项目

一、前言

rtklib开源程序包中,除了包含供调用的c/c++库文件,如.h文件和.c文件等,还包含了相关算法的VS项目实现,常用的有三个:rnx2rtkp、pos2kml和convbin。(最新版rtklib下载网址:https://github.com/tomojitakasu/RTKLIB/tree/rtklib_2.4.3)

  1. rnx2rtkp项目与界面程序rtkpost.exe实现的功能相似,即完成(精密)单点定位和相对定位等的解算。
  2. pos2kml可以将坐标文件转为谷歌地球支持的kml文件。
  3. convbin可以将接收机的binary格式文件转为rinex格式的观测文件/导航文件/sbas电文。

笔者刚刚接触rtklib,想用它进行定位解算,所以对rnx2rtkp项目进行了调试,并初步实现伪距单点定位。由于网上这部分教程较少,所以在此记录下调试过程,和大家分享。本人初学,难免出错,大家见谅,也请指正。

二、 修改调试

1.项目位置

下载rtklib2.4.3程序包后,在app文件下有一个rnx2rtkp文件夹,该项目即位于此(解决方案.sln文件等在msc文件夹里)。虽然有rnx2rtkp项目完整的visual studio解决方案文档,但是我们下载到自己的电脑后还需要进行一些修改才能使用。
在这里插入图片描述

2.问题及解决方法

问题一:

进入msc文件夹,使用visual studio 2012打开msc.sln文件,并进行单向升级(VS自动提示,确定即可)。会发现有很多错误,看了一下这么多错误都是因为一个原因:rtklib.h头文件未能引入导致的。
解决方法:
在rnx2rtkp.c中的include "rtklib.h"改为 #include "../../src/rtklib.h"。此处用到了相对路径表示方法。注意rtklib2.4.3/src文件夹中的.c和.h文件不要删改,也不要移动。
在这里插入图片描述

问题二:

然后生成解决方案,进行编译后出现错误(error LNK1120: 1 个无法解析的外部命令 和error LNK2019: 无法解析的外部符号 __imp__timeGetTime@0,该符号在函数 _tickget 中被引用),查阅博客https://www.cnblogs.com/DKSoft/p/4677381.html,发现是缺少依赖库winmm.lib。解决方法是,【菜单】项目->属性-> 配置属性 添加附加库[链接器->输入->附加依赖库] 添加winmm.lib;。
在这里插入图片描述
在这里插入图片描述

问题三:

点击本地Windows调试器运行后,提示错误“无法启动程序,系统找不到指定的文件”。这时检查三个目录是否正确。右键项目,进入属性,这三者分别是
(1)配置属性->常规,其中的输出目录;
(2)配置属性->常规,其中的目标文件名;
(3)配置属性->链接器->常规,其中的输出文件项。
我这三者所填的分别是:(1)$(SolutionDir)$(Configuration)\;(2)rnx2rtkp;(3)$(OutDir)rnx2rtkp.exe。具体意义可以双击进入点击宏查找到相应意义。
特别需要注意的是:(2)中的目标文件名和(3)中的输出文件项的名称要一致,我这里都用的rnx2rtkp,所以生成的执行文件也就是rnx2rtkp.exe,也可以用其他名称(默认情况下是项目的名称)。猜想两者一个表示编译后输出exe,一个应该是指示程序调试时怎么找这个exe。至此,编译通过,就可测试了。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、运行实现

进入…\RTKLIB2.4.3\test\data\rinex文件夹,复制其中的07590920.05n和07590920.05o两个文件,粘贴到这个项目的文件夹下,即…\RTKLIB2.4.3\app\rnx2rtkp\msc文件夹。复制该项目的gcc文件夹下的opts1.conf文件,粘贴到msc文件夹下(同上步.o和.n文件粘贴步骤),结果如下图中的1、2、3。在这里插入图片描述

法一:VS调试

进入VS,【菜单】项目 -> 属性页 -> 配置属性 -> 调试,在[命令参数]里填上-k opts1.conf -o mypos.txt 07590920.05o 07590920.05n。然后点击本地Windows调试器运行,运行结果自动导出到mypos.txt,如上图里的4文件。
在这里插入图片描述
mypos.txt文件:
在这里插入图片描述

法二:命令行窗口

除了上述调用方法,还可以在命令窗口中调用rnx2rtkp.exe。方法:进入…\RTKLIB2.4.3\app\rnx2rtkp\msc文件夹,按住shift键同时点击鼠标右键后,点击“在此处打开命令窗口(W)”,在命令行输入rnx2rtkp.exe -k opts1.conf -o mypos.txt 07590920.05o 07590920.05n。可以实现同样的结果。

法三:运行.bat文件

同样,在…\RTKLIB2.4.3\app\rnx2rtkp\msc文件夹下,新建一个记事本txt文件(如“单文件处理.txt” ),并让txt文件内容为rnx2rtkp.exe -k opts1.conf -o mypos.txt 07590920.05o 07590920.05n。然后将.txt拓展名改为.bat文件。双击.bat文件,同样可以实现该结果。

备注:法二的实现需要保证rnx2rtkp.exe 、 O文件 、 N文件、 .conf文件在一个文件夹内(法三需要加上.bat文件)。无其他要求。.conf文件和界面程序rtkpost.exe的options的设置是完全对应的,可以将.conf文件导入到rtkpost程序,也可以从rtkpost中导出.conf文件。所以rnx2rtkp可以实现rtkpost几乎所有功能,但是前者更加可调试,所以非常方便我们对其中代码或算法进行一些修改,再来进行实验验证。关于如何输入参数,可以查看rnx2rtkp.c中的help变量,如-p表示定位模式,我的例子后面跟着的是0,也就是伪距单点定位。

  • 11
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值