(一)RTKLIB学习——配置选项

  • filopt_t:文件选项,存结果输出,Trace,各种改正文件路径,不包括星历文件和观测文件。
  • solopt_t:结果选项,可以设置结果输出形式(ENU,ECEF,NMEA,BLH),小数位数,是否输出头文件,是否输出速度等。
  • prcopt_t:处理选项,是配置的重头戏。

filopt_t

typedef struct {        /* file options type */
    char satantp[MAXSTRPATH]; /* satellite antenna parameters file */
    char rcvantp[MAXSTRPATH]; /* receiver antenna parameters file */
    char stapos [MAXSTRPATH]; /* station positions file */
    char geoid  [MAXSTRPATH]; /* external geoid data file */
    char iono   [MAXSTRPATH]; /* ionosphere data file */
    char dcb    [MAXSTRPATH]; /* dcb data file */
    char eop    [MAXSTRPATH]; /* eop data file */
    char blq    [MAXSTRPATH]; /* ocean tide loading blq file */
    char tempdir[MAXSTRPATH]; /* ftp/http temporaly directory */
    char geexe  [MAXSTRPATH]; /* google earth exec file */
    char solstat[MAXSTRPATH]; /* solution statistics file */
    char trace  [MAXSTRPATH]; /* debug trace file */
} filopt_t;
  • satantp:卫星天线文件
  • rcvantp:接收机天线文件
  • stapos:测站坐标文件
  • geoid:外部水准面文件
  • iono:电离层IONEX文件
  • dcb:差分码偏差DCB文件
  • eop:eop文件
  • blq:潮汐文件
  • tempdir:FTP/HTTP临时目录
  • geexe:谷歌地球文件
  • solstat:结果输出路径
  • trace:Trace输出路径

solopt_t

typedef struct {        /* solution options type */
    int posf;           /* solution format (SOLF_???) */
    int times;          /* time system (TIMES_???) */
    int timef;          /* time format (0:sssss.s,1:yyyy/mm/dd hh:mm:ss.s) */
    int timeu;          /* time digits under decimal point */
    int degf;           /* latitude/longitude format (0:ddd.ddd,1:ddd mm ss) */
    int outhead;        /* output header (0:no,1:yes) */
    int outopt;         /* output processing options (0:no,1:yes) */
    int datum;          /* datum (0:WGS84,1:Tokyo) */
    int height;         /* height (0:ellipsoidal,1:geodetic) */
    int geoid;          /* geoid model (0:EGM96,1:JGD2000) */
    int solstatic;      /* solution of static mode (0:all,1:single) */
    int sstat;          /* solution statistics level (0:off,1:states,2:residuals) */
    int trace;          /* debug trace level (0:off,1-5:debug) */
    double nmeaintv[2]; /* nmea output interval (s) (<0:no,0:all) */
                        /* nmeaintv[0]:gprmc,gpgga,nmeaintv[1]:gpgsv */
    char sep[64];       /* field separator */
    char prog[64];      /* program name */
} solopt_t;
  • opsf:结果格式
#define SOLF_LLH    0                   /* solution format: lat/lon/height */
#define SOLF_XYZ    1                   /* solution format: x/y/z-ecef */
#define SOLF_ENU    2                   /* solution format: e/n/u-baseline */
#define SOLF_NMEA   3                   /* solution format: NMEA-183 */
#define SOLF_GSIF   4                   /* solution format: GSI-F1/2/3 */
  • times:时间系统
#define TIMES_GPST  0                   /* time system: gps time */
#define TIMES_UTC   1                   /* time system: utc */
#define TIMES_JST   2                   /* time system: jst */
  • timef:时间格式(0:秒,1:年月日 时分秒)
  • timeu:时间小数位数
  • degf:纬度/经度格式(0:ddd.ddd, 1:ddd mm ss)
  • outhead:是否输出文件头(0:不输出,1:输出)
  • outopt:是否输出配置选项(0:不输出,1:输出)
  • datum:坐标基准(0:WGS84,1:Tokyo)
  • height:高程类型(0:椭球高,1:大地高)
  • geoid:大地水准面模型(0:EGM96,1:JGD2000)
  • solstatic:静态模型下选择输出解的类型(0:输出处理周期内的所有结果,1:只输出处理周期内起始历元解)
  • sstat:结果输出级别(0:off,1:states,2:residuals)
  • trace:调试输出等级(0:off,1-5:debug)
  • nmeaintv:设置NMEA GPRMC GPGGA消息的输出检测,小于0不输出,等于0输出全部
  • sep:每个值之间的分隔符
  • prog:程序名称

默认配置:

const solopt_t solopt_default={ /* defaults solution output options */
    SOLF_LLH,TIMES_GPST,1,3,    /* posf,times,timef,timeu */
    0,1,0,0,0,0,                /* degf,outhead,outopt,datum,height,geoid */
    0,0,0,                      /* solstatic,sstat,trace */
    {0.0,0.0},                  /* nmeaintv */
    " ",""                      /* separator/program name */
};

prcopt_t

typedef struct {        /* processing options type */
    int mode;           /* positioning mode (PMODE_???) */
    int soltype;        /* solution type (0:forward,1:backward,2:combined) */
    int nf;             /* number of frequencies (1:L1,2:L1+L2,3:L1+L2+L5) */
    int navsys;         /* navigation system */
    double elmin;       /* elevation mask angle (rad) */
    snrmask_t snrmask;  /* SNR mask */
    int sateph;         /* satellite ephemeris/clock (EPHOPT_???) */
    int modear;         /* AR mode (0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar) */
    int glomodear;      /* GLONASS AR mode (0:off,1:on,2:auto cal,3:ext cal) */
    int bdsmodear;      /* BeiDou AR mode (0:off,1:on) */
    int maxout;         /* obs outage count to reset bias */
    int minlock;        /* min lock count to fix ambiguity */
    int minfix;         /* min fix count to hold ambiguity */
    int ionoopt;        /* ionosphere option (IONOOPT_???) */
    int tropopt;        /* troposphere option (TROPOPT_???) */
    int dynamics;       /* dynamics model (0:none,1:velociy,2:accel) */
    int tidecorr;       /* earth tide correction (0:off,1:solid,2:solid+otl+pole) */
    int niter;          /* number of filter iteration */
    int codesmooth;     /* code smoothing window size (0:none) */
    int intpref;        /* interpolate reference obs (for post mission) */
    int sbascorr;       /* SBAS correction options */
    int sbassatsel;     /* SBAS satellite selection (0:all) */
    int rovpos;         /* rover position for fixed mode */
    int refpos;         /* base position for relative mode */
                        /* (0:pos in prcopt,  1:average of single pos, */
                        /*  2:read from file, 3:rinex header, 4:rtcm pos) */
    double eratio[NFREQ]; /* code/phase error ratio */
    double err[5];      /* measurement error factor */
                        /* [0]:reserved */
                        /* [1-3]:error factor a/b/c of phase (m) */
                        /* [4]:doppler frequency (hz) */
    double std[3];      /* initial-state std [0]bias,[1]iono [2]trop */
    double prn[5];      /* process-noise std [0]bias,[1]iono [2]trop [3]acch [4]accv */
    double sclkstab;    /* satellite clock stability (sec/sec) */
    double thresar[4];  /* AR validation threshold */
    double elmaskar;    /* elevation mask of AR for rising satellite (deg) */
    double elmaskhold;  /* elevation mask to hold ambiguity (deg) */
    double thresslip;   /* slip threshold of geometry-free phase (m) */
    double maxtdiff;    /* max difference of time (sec) */
    double maxinno;     /* reject threshold of innovation (m) */
    double maxgdop;     /* reject threshold of gdop */
    double baseline[2]; /* baseline length constraint {const,sigma} (m) */
    double ru[3];       /* rover position for fixed mode {x,y,z} (ecef) (m) */
    double rb[3];       /* base position for relative mode {x,y,z} (ecef) (m) */
    char anttype[2][MAXANT]; /* antenna types {rover,base} */
    double antdel[2][3]; /* antenna delta {{rov_e,rov_n,rov_u},{ref_e,ref_n,ref_u}} */
    pcv_t pcvr[2];      /* receiver antenna parameters {rov,base} */
    unsigned char exsats[MAXSAT]; /* excluded satellites (1:excluded,2:included) */
    char rnxopt[2][256]; /* rinex options {rover,base} */
    int  posopt[6];     /* positioning options */
    int  syncsol;       /* solution sync mode (0:off,1:on) */
    double odisp[2][6*11]; /* ocean tide loading parameters {rov,base} */
    exterr_t exterr;    /* extended receiver error model */
} prcopt_t;
  • mode:定位解算模式
#define PMODE_SINGLE 0                  /* positioning mode: single */
#define PMODE_DGPS   1                  /* positioning mode: DGPS/DGNSS */
#define PMODE_KINEMA 2                  /* positioning mode: kinematic */
#define PMODE_STATIC 3                  /* positioning mode: static */
#define PMODE_MOVEB  4                  /* positioning mode: moving-base */
#define PMODE_FIXED  5                  /* positioning mode: fixed */
#define PMODE_PPP_KINEMA 6              /* positioning mode: PPP-kinemaric */
#define PMODE_PPP_STATIC 7              /* positioning mode: PPP-static */
#define PMODE_PPP_FIXED 8               /* positioning mode: PPP-fixed */
  • soltype:滤波方式(0:forward,1:backward,2:combined)
  • nf:频率数(1:L1,2:L1+L2,3:L1+L2+L5)
  • navsys:启用的卫星系统
  • elmin:仰角阈值,只有仰角大于这个阈值的卫星信号才会被用于定位
  • snrmask:信噪比阈值,过滤掉那些信号质量差的卫星信号
  • sateph:星历钟差模式
#define EPHOPT_BRDC 0                   /* ephemeris option: broadcast ephemeris */
#define EPHOPT_PREC 1                   /* ephemeris option: precise ephemeris */
#define EPHOPT_SBAS 2                   /* ephemeris option: broadcast + SBAS */
#define EPHOPT_SSRAPC 3                 /* ephemeris option: broadcast + SSR_APC */
#define EPHOPT_SSRCOM 4                 /* ephemeris option: broadcast + SSR_COM */
#define EPHOPT_LEX  5                   /* ephemeris option: QZSS LEX ephemeris */
  • 模糊度固定
    • modear(0:off,1:continuous,2:instantaneous,3:fix and hold,4:ppp-ar)
    • glomodear (0:off,1:on,2:auto cal,3:ext cal
    • bdsmodear(0:off,1:on) 
    • maxout:重置模糊度参数阈值
    • minlock:固定整周模糊度的最少锁定计数
    • minfix:固定整周模糊度的最小固定数(fix and hold下)
  • ionoopt:电离层改正模型
#define IONOOPT_OFF 0                   /* ionosphere option: correction off */
#define IONOOPT_BRDC 1                  /* ionosphere option: broadcast model */
#define IONOOPT_SBAS 2                  /* ionosphere option: SBAS model */
#define IONOOPT_IFLC 3                  /* ionosphere option: L1/L2 or L1/L5 iono-free LC */
#define IONOOPT_EST 4                   /* ionosphere option: estimation */
#define IONOOPT_TEC 5                   /* ionosphere option: IONEX TEC model */
#define IONOOPT_QZS 6                   /* ionosphere option: QZSS broadcast model */
#define IONOOPT_LEX 7                   /* ionosphere option: QZSS LEX ionospehre */
#define IONOOPT_STEC 8                  /* ionosphere option: SLANT TEC model */
  • tropopt:对流层改正模型
#define TROPOPT_OFF 0                   /* troposphere option: correction off */
#define TROPOPT_SAAS 1                  /* troposphere option: Saastamoinen model */
#define TROPOPT_SBAS 2                  /* troposphere option: SBAS model */
#define TROPOPT_EST 3                   /* troposphere option: ZTD estimation */
#define TROPOPT_ESTG 4                  /* troposphere option: ZTD+grad estimation */
#define TROPOPT_COR 5                   /* troposphere option: ZTD correction */
#define TROPOPT_CORG 6                  /* troposphere option: ZTD+grad correction */
  • dynamics:动力学模型(0:none,1:velocity,2:accel)
  • tidecorr:潮汐改正(0:不改正,1:固体潮,2:固体潮+海洋潮+极潮)
  • niter:滤波迭代次数
  • codesmooth:伪距平滑窗口大小(0:不平滑)
  • intpref:插值参考观测数据(用于后处理)
  • sbascorr:SBAS改正
  • sbassatsel:SBAS卫星选择
  • rovpos:fix模式的流动站坐标
  • refpos:relative mode基准站坐标(0: pos in prcopt, 1: average of single pos, 1: read from file, 3: rinex header, 4: tcm pos)
  • eratio:伪距/载波错误率
  • err:测量误差因子(0: reserved, [1-3]: error factor a/b/c of phase, 4: doppler frequency)
  • std[3]:初始噪声(0:bias, 1:iono, 2:trop)
  • prn[3]:过程噪声 (0:bias, 1:iono, 2:trop, 3:acch, 4:accv, 5:pos)
  • sclkstab:卫星钟稳定性
  • thresar:模糊度固定验证阈值
  • elmaskar:模糊度解算时的阈值设定
  • elmaskhold:仰角阈值,当卫星仰角低于这个值时,停止使用这些卫星进行模糊度保持
  • thresslip:GF周跳检测阈值
  • maxtdiff:最大差分龄期
  • maxinno:最大新息(残差)
  • maxgdop:最大GDOP
  • baseline[2]:基线长度阈值(Moving-base下){const,sigma}(m)
  • ru[3]:fix模式的流动站坐标 {x,y,z}(ecef)
  • rb[3]:基准站坐标 {x,y,z}(ecef)
  • anttype:天线类型 {rover, base}
  • antdel[2][3]:antenna delta {{rov_e,rov_n,rov_u}, {ref_e,ref_n,ref_u}}
  • pcvr[2]:接收机天线参数{rov,base}
  • exsats:是否使用卫星(1:excluded, 2:included)
  • rnxopt:rinex选择 {rover, base}
  • posopt: 定位选择
  • syncsol: 基准站流动站时间的同步方式(0:off,1:on)
  • odisp[2][6*11]:海洋潮汐载荷效应相关参数{rov,base}
  • exterr:接收机误差模型扩展版本

 默认配置:

const prcopt_t prcopt_default={ /* defaults processing options */
    PMODE_SINGLE,0,2,SYS_GPS,   /* mode,soltype,nf,navsys */
    15.0*D2R,{{0,0}},           /* elmin,snrmask */
    0,1,1,1,                    /* sateph,modear,glomodear,bdsmodear */
    5,0,10,                     /* glomodear,maxout,minlock,minfix */
    0,0,0,0,                    /* estion,esttrop,dynamics,tidecorr */
    1,0,0,0,0,                  /* niter,codesmooth,intpref,sbascorr,sbassatsel */
    0,0,                        /* rovpos,refpos */
    {100.0,100.0},              /* eratio[] */
    {100.0,0.003,0.003,0.0,1.0}, /* err[] */
    {30.0,0.03,0.3},            /* std[] */
    {1E-4,1E-3,1E-4,1E-1,1E-2}, /* prn[] */
    5E-12,                      /* sclkstab */
    {3.0,0.9999,0.20},          /* thresar */
    0.0,0.0,0.05,               /* elmaskar,almaskhold,thresslip */
    30.0,30.0,30.0,             /* maxtdif,maxinno,maxgdop */
    {0},{0},{0},                /* baseline,ru,rb */
    {"",""},                    /* anttype */
    {{0}},{{0}},{0}             /* antdel,pcv,exsats */
};

RTKLib是一种基于GNSS(全球导航卫星系统)的实时运动定位库。它提供了一系列的工具和算法,用于处理GNSS观测数据,进行精确的实时或者后处理定位。下面是一个关于RTKLib学习笔记的概述: 1. RTKLib简介: - RTKLib是由Tomoji Takasu开发的开源软件库,用于实时运动定位和后处理。 - 它支持多种GNSS系统,包括GPS、GLONASS、Galileo、BeiDou等。 - RTKLib提供了一系列的功能模块,包括数据处理、定位算法和可视化工具等。 2. RTKLib的安装: - RTKLib可以从官方网站(http://www.rtklib.com)下载最新的源代码。 - 根据操作系统选择合适的编译工具(如GCC、MinGW等)进行编译。 - 编译完成后,可以得到可执行文件和相关的库文件。 3. RTKLib的数据处理: - RTKLib支持多种数据格式,包括RINEX、SP3、Nav等。 - 使用RTKConv工具可以将原始观测数据转换为RTKLib可识别的格式。 - 使用RTKPLOT工具可以对观测数据进行可视化分析。 4. RTKLib的定位算法: - RTKLib提供了多种定位算法,包括单点定位、差分定位和RTK(实时动态定位)等。 - 单点定位方法适用于无差分数据,可以得到相对较低的定位精度。 - 差分定位方法通过使用基站观测数据进行差分运算,提高了定位精度。 - RTK定位方法使用基站和移动站的观测数据,实现了高精度的实时定位。 5. RTKLib的应用: - RTKLib广泛应用于航空、测绘、农业、机器人等领域,用于精确的定位和导航。 - 它可以用于无人机、自动驾驶、精准农业等应用场景。 - RTKLib还支持多种操作系统,包括Windows、Linux和Android等。 以上是关于RTKLib学习笔记的基本概述。希望对你的学习有所帮助!如果你有更具体的问题,可以继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值