首先给出一个ppp的配置文件:
# rtkpost options (2019/06/12 11:10:52, v.2.4.3 b31)
pos1-posmode =ppp-kine # (0:single,1:dgps,2:kinematic,3:static,4:movingbase,5:fixed,6:ppp-kine,7:ppp-static,8:ppp-fixed)
pos1-frequency =l1+l2 # (1:l1,2:l1+l2,3:l1+l2+l5,4:l1+l5)
pos1-soltype =forward # (0:forward,1:backward,2:combined)
pos1-elmask =15 # (deg)
pos1-snrmask_r =off # (0:off,1:on)
pos1-snrmask_b =off # (0:off,1:on)
pos1-snrmask_L1 =0,0,0,0,0,0,0,0,0
pos1-snrmask_L2 =0,0,0,0,0,0,0,0,0
pos1-snrmask_L5 =0,0,0,0,0,0,0,0,0
pos1-dynamics =off # (0:off,1:on)
pos1-tidecorr =on # (0:off,1:on,2:otl)
pos1-ionoopt =est-stec # (0:off,1:brdc,2:sbas,3:dual-freq,4:est-stec,5:ionex-tec,6:qzs-brdc,7:qzs-lex,8:stec)
pos1-tropopt =est-ztdgrad # (0:off,1:saas,2:sbas,3:est-ztd,4:est-ztdgrad,5:ztd)
pos1-sateph =precise # (0:brdc,1:precise,2:brdc+sbas,3:brdc+ssrapc,4:brdc+ssrcom)
pos1-posopt1 =on # (0:off,1:on)
pos1-posopt2 =on # (0:off,1:on)
pos1-posopt3 =on # (0:off,1:on,2:precise)
pos1-posopt4 =on # (0:off,1:on)
pos1-posopt5 =on # (0:off,1:on)
pos1-posopt6 =on # (0:off,1:on)
pos1-exclsats = # (prn ...)
pos1-navsys =1 # (1:gps+2:sbas+4:glo+8:gal+16:qzs+32:comp)
pos2-armode =continuous # (0:off,1:continuous,2:instantaneous,3:fix-and-hold)
pos2-gloarmode =on # (0:off,1:on,2:autocal)
pos2-bdsarmode =on # (0:off,1:on)
pos2-arthres =3
pos2-arthres1 =0.9999
pos2-arthres2 =0.25
pos2-arthres3 =0.1
pos2-arthres4 =0.05
pos2-arlockcnt =0
pos2-arelmask =0 # (deg)
pos2-arminfix =10
pos2-armaxiter =1
pos2-elmaskhold =0 # (deg)
pos2-aroutcnt =5
pos2-maxage =30 # (s)
pos2-syncsol =off # (0:off,1:on)
pos2-slipthres =0.05 # (m)
pos2-rejionno =30 # (m)
pos2-rejgdop =30
pos2-niter =1
pos2-baselen =0 # (m)
pos2-basesig =0 # (m)
out-solformat =xyz # (0:llh,1:xyz,2:enu,3:nmea)
out-outhead =on # (0:off,1:on)
out-outopt =on # (0:off,1:on)
out-outvel =off # (0:off,1:on)
out-timesys =gpst # (0:gpst,1:utc,2:jst)
out-timeform =hms # (0:tow,1:hms)
out-timendec =3
out-degform =deg # (0:deg,1:dms)
out-fieldsep =
out-outsingle =off # (0:off,1:on)
out-maxsolstd =0 # (m)
out-height =ellipsoidal # (0:ellipsoidal,1:geodetic)
out-geoid =internal # (0:internal,1:egm96,2:egm08_2.5,3:egm08_1,4:gsi2000)
out-solstatic =all # (0:all,1:single)
out-nmeaintv1 =0 # (s)
out-nmeaintv2 =0 # (s)
out-outstat =off # (0:off,1:state,2:residual)
stats-eratio1 =100
stats-eratio2 =100
stats-errphase =0.003 # (m)
stats-errphaseel =0.003 # (m)
stats-errphasebl =0 # (m/10km)
stats-errdoppler =10 # (Hz)
stats-stdbias =30 # (m)
stats-stdiono =0.03 # (m)
stats-stdtrop =0.3 # (m)
stats-prnaccelh =10 # (m/s^2)
stats-prnaccelv =10 # (m/s^2)
stats-prnbias =0.0001 # (m)
stats-prniono =0.001 # (m)
stats-prntrop =0.0001 # (m)
stats-prnpos =0 # (m)
stats-clkstab =5e-12 # (s/s)
ant1-postype =llh # (0:llh,1:xyz,2:single,3:posfile,4:rinexhead,5:rtcm,6:raw)
ant1-pos1 =90 # (deg|m)
ant1-pos2 =0 # (deg|m)
ant1-pos3 =-6335367.6285 # (m|m)
ant1-anttype =
ant1-antdele =0 # (m)
ant1-antdeln =0 # (m)
ant1-antdelu =0 # (m)
ant2-postype =llh # (0:llh,1:xyz,2:single,3:posfile,4:rinexhead,5:rtcm,6:raw)
ant2-pos1 =90 # (deg|m)
ant2-pos2 =0 # (deg|m)
ant2-pos3 =-6335367.6285 # (m|m)
ant2-anttype =
ant2-antdele =0 # (m)
ant2-antdeln =0 # (m)
ant2-antdelu =0 # (m)
ant2-maxaveep =0
ant2-initrst =off # (0:off,1:on)
misc-timeinterp =off # (0:off,1:on)
misc-sbasatsel =0 # (0:all)
misc-rnxopt1 =
misc-rnxopt2 =
misc-pppopt =
file-satantfile =F:\vs2017\RTKLIB_243\RTKLIB_243\data\gps\igs14.atx
file-rcvantfile =F:\vs2017\RTKLIB_243\RTKLIB_243\data\gps\igs14.atx
file-staposfile =
file-geoidfile =
file-ionofile =
file-dcbfile =F:\vs2017\RTKLIB_243\RTKLIB_243\data\gps\P1C10208.DCB
file-eopfile =F:\vs2017\RTKLIB_243\RTKLIB_243\data\gps\igs11817.erp
file-blqfile =
file-tempdir =
file-geexefile =
file-solstatfile =
file-tracefile =
根据这个配置文件,得到的状态向量的维度nx=254。已某一历元为例,参与定位的卫星个数为6个,即nv=6*4=24。那么有:
P ( 254 , 254 ) , H ( 24 , 254 ) , R ( 24 , 24 ) P(254,254),H(24,254),R(24,24) P(254,254),H(24,254),R(24,24)
注意,这里没有设计Q阵及 Φ \Phi Φ阵,因为程序中的卡尔曼滤波过程时这样的,如图:
程序中的实现时先通过ppp_res
得到 x ^ k ( − ) , y k − h ( x ^ k ( − ) ) 即 v , H ( x ^ k ( − ) ) \hat{x}_k(-), y_k-h(\hat{x}_k(-))即v, H(\hat{x}_k(-)) x^k(−),yk−h(x^k(−))即v,H(x^k(−)),接着滤波,然后再通过ppp_res
得到 x ^ k + 1 ( − ) , y k − h ( x ^ k + 1 ( − ) ) 即 v , H ( x ^ k + 1 ( − ) ) \hat{x}_{k+1}(-), y_k-h(\hat{x}_{k+1}(-))即v, H(\hat{x}_{k+1}(-)) x^k+1(−),yk−h(x^k+1(−))即v,H(x^k+1(−))。
H的设计如图,参与定位的卫星有5,14,18,21,25,30,
注意,rtklib中为了方便将H设计成254*24。H的设计遵循L1,P1,L2,P2的顺序。
最后是R阵的设计。其对角线的参数由四部分组成,第一部分由varerr
求取,根据不同的系统、高度角、载波类型及观测类型会有所不同;其余三部分分别是对流层、电离层和卫星位置误差。对流层误差设计为SQR(0.01),电离层设计为0,卫星位置误差再定位时求取。