这个代码是GNSS和INS紧组合的:https://github.com/marcoamm/gnssins,实现了ppp和ins紧组合
改变数据需要改代码的地方:
imu_tactical=fopen("../data/26082019/imu_ascii.txt", "r");//这里是对应的imu数据
char *argv[11] = {"./rnx2rtkp", "../data/26082019/observations.rnx", "../data/26082019/navigation.nav", "../data/26082019/orbit.sp3","../data/26082019/clock.clk", "-o", "../out/PPP.pos", "-k", "../config/opts3.conf", "-x", "5"};//这是对应输入的命令
insgnssopt.Tact_or_Low = 1;//改变惯导的精度水平
gnss数据的频率和imu的数据频率都要变,其中涉及到不少要改的地方:
for (j= 0;j<3;j++) ins->data.fb0[j]=ins->data.fb0[j]*Gcte; ->for (j= 0;j<3;j++) ins->data.fb0[j]=ins->data.fb0[j]*100;
for (j=0;j<3;j++) ins->data.wibb0[j]=ins->data.wibb0[j]*D2R; 直接注释
//ins->time=ins->time+16; /* Accounting for leap seconds */ 可能要有所改动
代码主要流程:
主要基于rtklib改的
main里的postpos一步步进去可以直接到rtkpos.c中rtkpos这个函数->satinsmap.c中的core(rtk, obs, n, nav);->TC_INS_GNSS_core1->INS_GNSS.c文件中的pppos1函数->
跑自己的数据主要碰到的问题:
目前出来的PPP.pos结果是和rtklib跑出来是一样的,但是三个PPP历元输出后去找imu数据会报** End of imu file **的错误
inputimu函数里有大问题,低成本的imu输入解码也应该按照高成本的来。