2023年12月7日发(作者:)

用RTKLIB中的rtkpost进行ppp和spp定位(附用CUIrnx2rtkp编

译)

目录

rtkpost

rtkpost是一个事后处理软件,可对采集到的数据进行后期处理定位;而rtknavi则是实时定位的软件

obs选用rover_,这个数据所用的接收机比rover_要好一点

ppp

RINEX OBS:输入观测数据.obs;

RINEX OBS: Base Station:做相对定位时导入基站信息(此处不需要);

.xxp是多系统广播星历(.xxn是gps的广播星历,内容为卫星位置和卫星广播钟差改正系数),.sp3是精密星历,.clk是精密钟差,.pos是

输出定位结果

obs是动态数据,故选PPP Kinematic模式;如果是静态数据就选PPP Static;

单频数据的话选L1;双频L1+L2;三频L1+L2+L5;

Ionosphere Correction:不提供电离层数据就选Broadcast;Iono-Free LC无电离层组合模型;est-stec非组合模型;

Clock:提供了精密钟差选Precise;没有就Broadcast

如果已知有哪些卫星的数据就选哪些,不清楚的话就都选上;

导入天线改正文件.atx;电离层数据.I;差分码偏差.DCB文件

对DCB改正的理解:卫星和接收机端都有一些硬件延迟,这些误差会被钟差吸收。简单来说,钟差只与接收机和卫星有关,但由于它又吸收

了硬件延迟,往深究了还与频点有关,在做ppp时,DCB修正必须考虑。

配置好以后点击“execute”,解算完成后再点"plot"

解算得到的动态ppp定位结果,点1,再点2,拉入文件,即grountruth

再点1-2,即显示解算和真实轨迹之间的差值,选择Gnd Trk或者Position或者其他模式查看误差情况。

动态ppp精度大概在2m左右,飞点严重。

spp

其他一样,在setting1时有改动

不使用精密星历,精密钟差和电离层误差

解算结果:

误差在5-10m,飞点也更严重

VS2019编译rnx2rtkp

rnx2rtkp是对应的C代码源文件,可以用它调整处理过程。

打开VS2019,点“打开项目或编辑方案”,选择“”,报错已被卸载,重新加载后报错“没有

j文件”。我下载的2.4.3 b33版本,里面确实没有该文件,有两种解决方案。

1)下载2.4.2 p13版本,打开.sln后没有报错;

测试:选择上述数据集中的.sp3 .clk .obs .18p .conf(用rtkpost测试时保存的配置文件)复制到msc文件里,项目-->msc属性-->调试

导入命令行参数:

运行后,会生成结果文件.pos

使用

有时候需要对文件进行解压,例如rinex3标准.crx---->.rnx;rinex2标准.xxd---->.xxo。可以使用进行处理

1)“win+R” 输入cmd,打开命令行,cd进入.exe所在路径

2)对单个文件,需要逐一运行:

crx2rnx KRGG00ATF_R_2_01D_30S_

crx2rnx iqqe0640.12d

3)如需批量运行:

for %a in (*CRX) do %a

或手写.bat脚本执行:

echo

for %%i in (*CRX) do %%i

pause on

存储为.bat文件,放在.exe同一路径下,点开.bat运行即可

.bat批量化处理

在bat文件中输入多个命令行参数可以批量化运行RTKLIB,不需要额外修改代码。

bat文件放在D:softworkRTKLIBapprnx2rtkpmscDebug路径下,内容如下:

2> -k D:softworkRTKLIBapprnx2rtkpmscARURUM_ -o D:softworkRTKLIBapprnx2rtkpmscARURUM_2020010_

pause

双击bat文件即可运行,这里注意文件路径是相对于bat所在路径的,与调试时在RTKLIB中输入的路径不同。

其中2>是stderr流,用于输出错误信息到中。

例如,我想输出状态向量x,则在filter_函数后面加上

fprintf(stderr, "x before update is %5d *1:n", n);

matfprint(x, n, 1, 15, 3, stderr);

RTKLIB中调用LAPACK库

LAPACK库是由美国国家科学基金等资助开发的著名公开软件,用Fortran语言编写,具有强大的矩阵运算功能,是matlab的底层函数库。

RTKLIB本身支持LAPACK库,但相关资料很少,不太清楚怎么使用,故重新调用LAPACK库。

步骤参考了该博文:,但有些地方不太一样,在此加以修正:

1.下载博主提供的安装文件包,其中包括了所有头文件和.lib文件,以及一部分.dll文件;

2.安装MinGW,但.dll所在路径为‘C:MinGWbin’;

3.在VS中添加目录;设置环境变量;

4.在rtklib.h中#define LAPACK 1,即可使用调用了LAPACK库的矩阵运算函数;

5.编译能通过,但运行提示缺少.dll文件,根据提示将所需.dll文件复制到‘C:WindowsSysWOW64’下即可。