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’下即可。


发布评论