RTKLIB源码——如何在VS2019中配置、调试

一、 准备源码:

注:第三方rtklib修改后的源码地址
http://rtkexplorer.com/download/demo5-b33d-binaries/

1、进入GITHUB,打开网页:https://github.com/tomojitakasu/RTKLIB/tree/rtklib_2.4.3

进行clone or download,下载到当地文件夹,找到子文件夹SRC,里面存放的是实现卫星定位(SPP、RTD、RTK、PPP、PPP-AR)的所有源码;
在这里插入图片描述

二、Visual Studio中新建工程:

1、新建项目名为:rtklib_demo:
在这里插入图片描述
在这里插入图片描述

2、工程源码
复制完成后将src文件名改成rtklib_src、
添加main.c函数:RTKLIB-rtklib_2.4.3\app\rnx2rtkp中的rnx2rtkp.c文件复制到rtklib_demo\src中,并将其改名字为:main.c

3、在rtklib_demo工程中添加源码:
(1)头文件选择:rtklib.h

(2)rtklib.h添加如下代码:用来使能其他卫星导航系统

#define ENAGLO
#define ENAGAL
#define ENACMP
#define ENAQZS
#define ENAIRN
在这里插入图片描述

(3)操作 vs 中,在项目 -> 属性 -> C/C++ -> 预处理器 -> 预处理器定中添加

_CRT_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS

在这里插入图片描述
4、程序报错:LNK2019 无法解析的外部符号_imp_timeGetTime@0,该符号在函数_tickget中被引用。有两种解决方案:

  1. 一,“属性”-“链接器”-“输入”-“附加依赖项”,添加

winmm.lib
ws2_32.lib

  1. 在rtklib.cpp的文件头部分加上:

#pragma comment (lib,“winmm.lib”)
#pragma comment (lib,“ws2_32.lib”)

在这里插入图片描述
5、程序报错:C1083 无法打开包括文件:rtklib.h: No such file or directory。

  • 右击rtklib项目,选择“属性”-“常规”-“附加包含目录”,例如D:\C_debug\rtklib_demo\rtklib_demo\rtklib_src
    点击确定退出。

在这里插入图片描述
6、程序报错:C4703 使用了可能未初始化的本地指针变量”sbs”。

  • 项目“属性”-“C/C++”-“所有选项”-“SDL检查”-“否”。

在这里插入图片描述

三、编译结果:

在这里插入图片描述

四、实例

将需解算的数据文件与配置文件放入同一文件夹下,点击项目>>配置属性>>调试,点击工作目录,选择该文件夹,点击命令参数,输入所需的命令行配置。
在这里插入图片描述

不同解算模式的配置示例:

  • spp:

-k spp.conf hkws0010.21o brdm0010.21p -o hkws0010_spp.pos

-k 配置文件 观测文件 导航文件 -o输出结果

  • rtk

-k rtk.conf hkws0010.21o hksl0010.21o brdm0010.21p -o hkws0010_rtk.pos

-k 配置文件 流动站观测文件 基准站观测文件 导航文件 -o输出结果

  • pppk:

-k pppk.conf hkws0010.21o brdm0010.21p wum21385.sp3 wum21385.clk -o hkws0010_pppk.pos

-k 配置文件 观测文件 导航文件 精密轨道文件 精密钟差文件 -o输出结果

  • 附:打开trace输出文件方法:在预处理器中添加TRACE,命令参数末尾添加 -x 加数字(即输出等级)
    在这里插入图片描述

  • 具体例子

-k spp.conf hkws0010.21o brdm0010.21p -o hkws0010_spp.pos -x 3

命令行程序rnx2rtkp的输入参数详解(主函数的help打印信息):

-?              print help   打印帮助列表
-k file         input options from configuration file [off]   从配置文件导入配置
-o file         set output file [stdout]  设置输出文件
-ts ds ts       start day/time (ds=y/m/d ts=h:m:s) [obs start time]   观测文件开始时间 年月日+时分秒
-te de te       end day/time   (de=y/m/d te=h:m:s) [obs end time]   观测文件结束时间 年月日+时分秒
-ti tint        time interval (sec) [all]   观测文件历元间隔
-p mode         mode (0:single, 1:dgps, 2:kinematic, 3:static, 4:moving-base, 5:fixed, 6:ppp-kinematic, 7:ppp-static) [2]  定位模式(0:单点定位,1:伪距差分定位,2:动态差分,3:静态差分,4:动基线,5:固定解,6:动态ppp,7:静态ppp)
-m mask         elevation mask angle (deg) [15]  卫星截止高度角
-sys s[,s...]   nav system(s) (s=G:GPS,R:GLO,E:GAL,J:QZS,C:BDS,I:IRN) [G|R]  导航卫星系统
-f freq         number of frequencies for relative mode (1:L1,2:L1+L2,3:L1+L2+L5) [2]  选用的观测值频点
-v              thres validation threshold for integer ambiguity (0.0:no AR) [3.0]  模糊度固定阈值检测值设置
-b              backward solutions [off]  后向滤波
-c              forward/backward combined solutions [off]  前后向组合滤波
-i              instantaneous integer ambiguity resolution [off]  持续模糊度固定解算
-h              fix and hold for integer ambiguity resolution [off]  模糊度固定后保持
-e              output x/y/z-ecef position [latitude/longitude/height]  输出XYZ坐标解
-a              output e/n/u-baseline [latitude/longitude/height]  输出ENU坐标解
-n              output NMEA-0183 GGA sentence [off]  输出GGA解
-g              output latitude/longitude in the form of ddd mm ss.ss' [ddd.ddd]  输出经纬度坐标解
-t              output time in the form of yyyy/mm/dd hh:mm:ss.ss [sssss.ss]  输出时间设置为年月日+时分秒
-u              output time in utc [gpst]  输出时间设置为utc
-d col          number of decimals in time [3]  秒位时间小数位数设置
-s sep          field separator [' ']   分隔符
-r x y z        reference (base) receiver ecef pos (m) [average of single pos]", rover receiver ecef pos (m) for fixed or ppp-fixed mode  基准站XYZ坐标输入
-l lat lon hgt  reference (base) receiver latitude/longitude/height (deg/m)", rover latitude/longitude/height for fixed or ppp-fixed mode  基准站经纬度坐标输入
-y level        output soltion status (0:off,1:states,2:residuals) [0]  输出解状态
-x level        debug trace level (0:off) [0]  调试输出等级设置

参考:
https://blog.youkuaiyun.com/sinat_39238867/article/details/118465618

rtklib是一种用于实时运动定位和后处理运动定位的开源库。rtklib2.4.2是该库的一个版本,具有中文说明书。 首先,rtklib2.4.2是基于GNSS(全球导航卫星系统)接收器数据的实时运动定位和后处理库。它支持各种GNSS系统,如GPS、GLONASS、Galileo和QZSS,并且兼容各种接收器,如NovAtel、Trimble和u-blox。这使得rtklib2.4.2成为一个通用的运动定位工具,可用于定位和导航领域的各种应用。 其次,rtklib2.4.2的中文说明书提供了详细的操作和配置指南。说明书中包含了如何安装和配置rtklib2.4.2库的步骤,并介绍了各种参数和选项的含义和用法。这些信息对于用户理解和使用rtklib2.4.2非常重要。用户可以根据应用需求调整参数,并根据说明书中的示例进行测试和验证。 另外,说明书还介绍了rtklib2.4.2库的算法原理和数据处理流程。对于从事定位和导航领域的研究者和开发人员来说,这些信息对于深入了解rtklib2.4.2的工作原理和实现机制非常有帮助。说明书中也提供了一些算法改进和优化的建议,帮助用户在特定应用场景中改进rtklib2.4.2的性能。 总之,rtklib2.4.2的中文说明书提供了一个全面的指南,帮助用户了解和使用该库进行实时运动定位和后处理运动定位。无论是定位和导航应用的初学者,还是专业研究人员,都可以通过阅读说明书来学习和使用rtklib2.4.2。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值