[关闭]
@MinLily 2020-04-30T11:03:51.000000Z 字数 5452 阅读 3283

RTKlib相对定位源码解析:zdres函数

GNSS RTKlib 相对定位


最近阅读RTKlib开源代码,非常感谢“塔奇克敲代码”博主的博客(RTKLIB源码解析——单点定位),他将单点定位部分整理成函数小卡片,为我理解RTKlib提供了很大的帮助。我参照他的格式,记录整理对相对定位部分的个人理解。由于刚开始接触卫星定位,所以可能有理解不到位的地方,还请诸位指正。

zdres函数是rtklib相对定位relpos中的第二个函数。第一个函数satposs,“塔奇克敲代码”博主在单点定位中已有解释,因此不再赘述。而zdres函数中所调用的ecef2pos,satazel,satexclude函数,该博主同样也已进行阐述,因此也不再解释。下文暂未对潮汐修正函数tidedisp进行解释,但是RTKlib作者已经将参考论文列出,通过阅读论文应该也能自行理解。

我所基于的代码版本是RTKlib 2.4.3的一个拓展版本RTKexplore Demo5,这个版本主要针对低成本的GNSS定位。该版本整体算法并未做较大更改,只是针对低成本接收机进行了完善。

zdres

  1. static int zdres(int base, const obsd_t *obs, int n, const double *rs,
  2. const double *dts, const double *var, const int *svh,
  3. const nav_t *nav, const double *rr, const prcopt_t *opt,
  4. int index, double *y, double *e, double *azel)
  1. args: I base: 1=base,0=rover
  2. I obs: sat observations
  3. I n: # of sats
  4. I rs [(0:2)+i*6]: sat position {x,y,z} (m)
  5. I dts[(0:1)+i*2]: sat clock {bias,drift} (s|s/s)
  6. I svh: sat health flags
  7. I nav: sat nav data
  8. I rr: receiver pos (x,y,z)
  9. I opt: options
  10. I index: 0=base,1=rover
  11. O y[(0:1)+i*2]: zero diff residuals {phase,code} (m)
  12. O e: line of sight unit vectors to sats(卫星观测方向单位矢量)
  13. O azel: [az, el] to sats (方位角、仰角)
  14. return:
  15. int O (1:ok,0:error)
Created with Raphaël 2.1.2zdrestidedisp(配置可选)ecef2posgeodistsatazeltropmodeltropmapfantmodelzdres_satEnd

tropmodel

  1. extern double tropmodel(gtime_t time, const double *pos, const double *azel,
  2. double humi)
  1. * args : gtime_t time I time
  2. * double *pos I receiver position {lat,lon,h} (rad,m)
  3. * double *azel I azimuth/elevation angle {az,el} (rad)
  4. * double humi I relative humidity
  5. * return : tropospheric delay (m)

tropmapf

  1. extern double tropmapf(gtime_t time, const double pos[], const double azel[],
  2. double *mapfw)
  1. * args : gtime_t t I time
  2. * double *pos I receiver position {lat,lon,h} (rad,m)
  3. * double *azel I azimuth/elevation angle {az,el} (rad)
  4. * double *mapfw IO wet mapping function (NULL: not output)
  5. * return : dry mapping function

antmodel

  1. extern void antmodel(const pcv_t *pcv, const double *del, const double *azel,
  2. int opt, double *dant)
  1. args : pcv_t *pcv I antenna phase center parameters
  2. double *del I 配置中所设置天线参考点(ARP)相对于地面标识的偏移
  3. double *azel I azimuth/elevation for receiver {az,el} (rad)
  4. int opt I option (0:only offset,1:offset+pcv)
  5. double *dant O range offsets for each frequency (m)
  6. return : none
  7. notes : current version does not support azimuth dependent terms

zdres_sat

  1. static void zdres_sat(int base, double r, const obsd_t *obs, const nav_t *nav,
  2. const double *azel, const double *dant,
  3. const prcopt_t *opt, double *y)
  1. args: I base: 1=base,0=rover
  2. I r: 卫地距
  3. I obs: sat observations
  4. I nav: sat nav data
  5. I azel: [az, el] to sats (方位角、仰角)
  6. I dant: antenna offsets for each frequency (m)
  7. I opt: options
  8. O y[(0:1)+i*2]: zero diff residuals {phase,code} (m)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注