本科生如何入门GNSS算法 (一)- 在Visual Studio 2017中跑通RTKLIB开源代码

目录

Vs下载与安装

RTKLIB代码下载

在vs中编译rtklib

新建项目

添加代码

其他项目配置

运行程序并得到结果

代码bug

公众号


写在前面,可执行的vs程序在文章最后,可以直接下载后运行。

默认使用windows电脑,默认是64位电脑系统,不一样也影响不大。

Vs下载与安装

Vs是啥?Vs就是一个让你的代码能够运行的工具,其余自行百度;我个人用的vs 2017,其他版本也可随意安装,可能会有一些不一样的地方。

官网下载 可能需要简单注册登录。

Vs有社区免费版本,具体安装可参考。安装很简单。


RTKLIB代码下载

rtklib是啥?RTKLIB is an open source program package for standard and precise positioning with GNSS (global navigation satellite system). RTKLIB consists of a portable program library and several APs (application programs) utilizing the library.

简单来说就是高须知二写的一个GNSS工具箱,免除了科研人员限于基础代码开发的困境,让大家更专注于学术而不是基础库的开发。官网地址,其实网上挺多如何使用rtklib的blog,比如(VS2012编译RTKLIB—GNSS定位开源库利用C++ builder 调试RTKLIB简单介绍),但我还是准本以初学者的视觉介绍一遍。

RTKLIB官网显示,在2.4.2 p13版本后,开源代码均托管于github上。就是说我把代码放在github上管理,可以跟踪代码修改的历史以及管理大家的merge需求等。我们一般使用git下载github上的代码,基本上所有的公司也使用git来管理项目代码,所以可以简单学习一下git的使用。比如百度搜索 “git使用”。在此不在赘述。

​点击上图红框中RTKLIB最新源代码,并在下图中选择第二种,即可下载到rtklib源码。国内访问github有时会抽风,多刷新几次就可以进去了。如果学习了git,可以选择第一种,使用git进行代码clone;

​下载并解压后如下:


在vs中编译rtklib

新建项目

打开安装好的vs2017,新建->项目->控制台应用 并将名称设置为rtklib

添加代码

选择左侧的解决方案资源管理器,选定头文件->右键->添加->现有项。如果左侧或者右侧没有解决方案管理器,自行百度如何打开vs解决方案管理器。

​然后选中源码文件夹下的rtklib.h,添加进来。

同样选中源文件,选择相同的现有项,将除rtklib.h以及rcv文件夹之外的所有文件添加进来。

选中源文件->右键->添加->新建筛选器,添加一个叫rcv的文件夹,并将源码rcv文件夹下的所有文件添加到这个筛选器下。完成后目录就是如下:


其他项目配置

虽然已经添加了代码进入项目,但是还是找不到文件,需要告诉项目代码在哪。

选中rtklib->右键选 属性->在弹出的对话框里找到c/c++下 常规,将代码src的目录填到附加包含目录中,如下

选中源文件->右键选择添加现有项,在 将源代码\app\consapp\rnx2rtkp\rnx2rtkp.c文件添加进来,这个文件包含了main函数入口。并将rtklib.cpp删掉,这个是vs自动生成的程序入口,不需要。

选择工具栏中 生成->生成解决方案,就开始编译代码了。然后就显示有错误,主要如下,其他错误都可以忽略掉。

​点击“右键项目-属性-常规”,将SDL检查改为否。在项目属性->c/c++->预处理器->预处理器定义中添加

_CRT_SECURE_NO_WARNINGS 
_WINSOCK_DEPRECATED_NO_WARNINGS
 ENAGLO

在配置属性 -> 链接器 -> 输入 -> 附加依赖项里添加 【winmm.lib】和 【ws2_32.lib】

选择工具栏中 生成->生成解决方案,就可以编译成功了。就可以看到我们编译的exe已经存在了。

也有其他的一个相似的编译DLL的文档,前文已经贴了地址(VS2012编译RTKLIB—GNSS定位开源库),可以和我上面的一块看。区别是我编译的可执行程序。


运行程序并得到结果

打开doc目录下的manual_2.4.2.pdf,找到第96页,如下图中我红框标注的,解释了如何调用rnx2rtkp。第二个例子写的是Single Point Positioning,即SPP,单点定位。

因为我们用的是windows,所以我的电脑的可执行文件的绝对路径是在

D:\source\RTKLIB-rtklib_2.4.3\rtklib\Debug\rtklib.exe

这里的rtklib.exe与说明书中的rnx2rtkp是一样的。只是因为我们把项目名称叫作了rtklib。

选中Debug文件夹,并按住shift,按下鼠标右键->在此处打开Powershell窗口,实质就是打开命令窗口,并cd到当前文件夹。不明白的请自行百度 windows命令窗口。输入上图中的命令,回车,发现竟然有报错。


代码bug

该报错好像在linux上我没遇到过,也比较简单,就是有一些变量没有初始化。找到pntpos.c这个文件打开,将252行修改为如下:

double r,freq,dion=0.0,dtrp=0.0,vmeas,vion=0.0,vtrp=0.0,rr[3],pos[3],dtr,e[3],P;

即如下边截图中所示。

重新生成,即工具栏 生成->生成解决方案。

rtklib.exe就会重新生成。

再回到命令窗口,按向上箭头按键,就会出来上次的命令,回车就可正常运行。运行如下:会输出红框内的内容,从显示了正在处理(processing)以及时间(2005/04/02 00:50:30),以及运行显示的定位质量(Q=5,就代表是单点解)。

我将完整命令贴在下边,注意各项之间有空格。

.\rtklib.exe -x 5 -p 0 -m 15 -n -o D:\\source\\RTKLIB-rtklib_2.4.3\\rtklib\\out.pos D:\\source\\RTKLIB-rtklib_2.4.3\\test\\data\\rinex\\07590920.05o D:\\source\\RTKLIB-rtklib_2.4.3\\test\\data\\rinex\\07590920.05n

也可以在vs中进行调试,右键项目选择属性,找到调试中的命令参数,输出上面的命令,去掉.\rtklib.exe可执行程序。

按F5即可运行,运行如下:

然后在 我电脑的绝对路径下就可以找到定位结果输出文件了。

D:\source\RTKLIB-rtklib_2.4.3\rtklib\out.pos

把整理好的放在网盘上了,直接解压,找到RTKLIB-rtklib_2.4.3\rtklib\rtklib.sln,直接打开这个文件就行,打开应该就可以正常运行。

代码在 GNSS和自动驾驶 公众号回复 rtklib , 获取下载链接。

至此基本可以在vs上正常跑出结果,如果有问题请私信或者留言。具体如何分析定位结果,请参考下一节的文章。


公众号

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

  • 11
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
RTKLIB是一个源的GNSS数据处理软件包,可以实现高精度的定位、导航和姿态解算。它能够处理多种GNSS接收机的数据,包括GPS、GLONASS、Galileo、QZSS等,并能够支持多种不同的定位模式,如单点定位、RTK定位、PPP等。 RTKLIB的主要组成部分包括以下几个方面: 1. 观测数据的读取与解析:包括RINEX格式、UBX格式等多种数据格式的读取和解析,可以对不同类型的GNSS接收机数据进行处理。 2. 定位算法的实现:包括单点定位、差分定位、RTK定位、PPP等多种定位模式的算法实现,可以根据不同的应用需求进行选择。 3. 姿态解算:过使用多个惯性测量单元(IMU)和GNSS接收机的数据,可以实现机载姿态的解算。 4. 可视化工具:包括RTKPLOT和RTKNAVI等工具,可以对处理后的数据进行可视化显示和分析。 下面简单介绍一下RTKLIB的基本使用流程: 1. 准备数据:需要收集GNSS接收机产生的原始数据,并将其存储为RINEX格式或UBX格式。 2. 数据预处理:使用RTKCONV工具对原始数据进行预处理,生成RTCM格式的差分数据或者OBS格式的观测数据。 3. 数据处理:使用RTKPOST或RTKRCV工具对差分数据或观测数据进行处理,得到定位结果。 4. 数据分析:使用RTKPLOT或RTKNAVI工具对处理后的数据进行可视化显示和分析。 需要注意的是,RTKLIB是一个高度可定制化的软件包,用户可以根据自己的需求对其进行扩展和定制,以满足不同的应用需求。同时,由于其源的特点,用户可以自由地修改和发布自己的改进版RTKLIB软件。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值