简单的写了个流程,为事后相对定位

基本流程为 postpos->rtkpos->relpos

postpos之相对定位 直接 从execses开始

1.读电离层,地球自转参数,观测值和导航、读dcb,设置pcv
  大洋负荷
2.判断什么模式,相对定位调用antpos设置流动站和参考站位置
【注意,第一个观测值文件被视为流动站】
    2.1 antpos
    提供几种模式确定天线相位中心
        a)伪距单点定位的平均值
        b)从坐标文件中读
        c)从rinex的文件头读
3.调用procpos
    3.1 初始化rtk类,rtk->opt=procopt
    3.2 逐历元读取观测值
    3.3 排除非所选系统的卫星
    3.4 corr_phase_bias_ssr 通过状态空间来改正载波相位 [具体事项待看]
    3.5 进入rtkpos定位
    3.6 输出

rtkpos

1.设置基准站坐标,记录基准站、流动站该历元的观测卫星数
2.初始历元,以spp确定流动站坐标
3.选择各个定位模式,我这选用的静态相对定位。
更新rtk->sol.age 当前时刻减初始时刻 为下一步同步下一历元时的基准站坐标做准备
4.relpos(rtk,obs,nu,nr,nav);进行相对定位

relpos

1.satposs进行卫星位置的计算 精密星历确定位置,钟差
    
1
2
3
4
5
sinl=sin(OMGE*t[j]);
cosl=cos(OMGE*t[j]);
p[0][j]=cosl*pos[0]-sinl*pos[1];
p[1][j]=sinl*pos[0]+cosl*pos[1]; 这是为了地球自转改正吗? 补:是的
然后插值得到历元时刻的卫星位置
2.zdres 计算非差残差,基准站 即载波相位、伪距和计算出的几何距离的差值 2.1 地球潮汐改正 2.2 ecef坐标转换为大地坐标,接着计算卫星和流动站几何距离、方位角、高度角 2.3 检查要排除的卫星 2.4 计算出的几何距离加上钟差改正【卫星钟差】 2.5 计算对流层延迟 tropmodel zhd 几何距离在进行对流层延迟改正 tropmapf为投影函数 2.6 antmodel 接收机天线相位中心改正 2.7 zdres_sat 在卫星端计算非差相位残差,分两种情况1电离层组合,2非组合 依据2.6计算得到的天线改正值dant和经过改正的几何距离r与原本的伪距和 相位观测值做差得到残差。 3.intpres 残差随时间插值【暂略,事后用】 3.1 计算卫星位置satposs,计算非差残差zdres 3.2 插值 4.selsat 选择基准站和流动站之间的共同卫星 5.udstate 暂时更新状态 类似单点定位,为ekf做准备 5.1 udpos udion udtrop udrcvbias udbias 5.2 其实都是更新了ekf的初始协方差阵,并且探测和修复周跳 6. zeres 此次计算的是流动站的非差残差 7.ddres 开始双差和求偏导 7.1 baseline 计算基线长度 并将基准站和流动站在ecef坐标转为大地坐标 7.2 计算精密对流层和电离层延迟【IONOOPT_EST、TROPOPT_EST】 prectrop ionmapf 7.3 以高度角最大为原则寻找参考卫星 7.3.1 test_sys检查是否是所选择的导航系统,不是则进入下一次循环 7.3.2 validobs 检查观测数据是否有效。无效为:无相位数据可用,有伪距观测 也不用,无效则进入下次循环 7.3.3 遍历寻找最大高度角 以i记录下标 7.4 做双差观测量 7.4.1 上一步确定了参考卫星,这里选择用其他卫星和所选卫星做差 7.4.2 先将双差残差计算出来 7.4.3 更新ekf的H偏导阵(流动站位置),做电离层对流层双差后的延迟以及 相关偏导阵的更新。相位偏差双差后的值、偏导阵的更新 7.5 单差观测值误差的方差 varerr 7.5.1 扩展误差模型?? a)码偏差 b)相位偏差 7.5.2 正常的 误差模型 7.6 双差协方差阵ddcov 8.ekf卡尔曼滤波 9.滤波后浮点解的双差残差 ddres 10.浮点解有效性检验 valpos 10.1 通过检验的 更新x和P 状态和协方差阵 11.通过lambda解整周模糊度 11.1 后续再写

最后更新: 2019年07月01日 00:00

原始链接: https://wu941202.github.io/2019/07/01/2019-07-01/