云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > rtklib学习心得

rtklib学习心得

  • 62 次阅读
  • 3 次下载
  • 2025/5/26 1:16:01

开源的GNSS导航定位包RTKLib的学习历程(一)

RTKLIB简介:

由日本东京海洋大学开发(Tokyo University of Marine Science and Technology

),笔者查到最早的介绍是一篇日文的,《RTK-GPS用プログラムライブラリRTKLIBの開発?評価および応用》,其介绍的为RTKLIB ver.1.1。另有一篇论文《Development of the lowcost RTK GPS receiver with an open source program package RTKLIB》也可以看下。 其主要功能如下:

支持标准的GPS、GLONASS、QZSS和SBAS的为精确定位算法(目前此版本不支持Galileo系统)

支持多种动态、静态卫星定位方式(单点定位、DGPS、载波相位动态差分定位RTK、静态、移动基站、PPP)

支持全球定位导航系统的多种标准格式和协议 支持多品牌接收机的专有消息传输协议 支持多种通讯方式

====================华丽的分割线====================

下面开始介绍笔者的学习历程,由于工作的原因,时间跨度有些大,断断续续的。

初次接触RTKLib是在2010年8月份,当时版本还是2.3.0,下载了源码,花时间做了一个简单的应用:通过调用RTKLIB的API接口,进行单点定位,并计算出速度、方位角、仰角等,主要调用的函数依顺序为:

init_raw, input_raw,pntpos,ecef2pos,pntvel,ecef2enu,free_raw 。

由于作者用Borland C++开发,笔者用的是VC++,所以移植时还有一些函数需要自己实现,如:

int showmsg(char *format, ...)等。

注: pntvel在2.4.0发布时,已去掉。

应用时调用的主要函数接口如下:

// initialize receiver raw data control struct and reallocate obsevation and // epheris buffer

// args : raw_t *raw IO receiver raw data control struct // return : status (1:ok,0:memory allocation error) */ extern int init_raw(raw_t *raw);

// free receiver raw data control ---------------------------------------------- // free observation and ephemeris buffer in receiver raw data control struct // args : raw_t *raw IO receiver raw data control struct // return : none

//-----------------------------------------------------------------------------*/ extern void free_raw(raw_t *raw);

// input receiver raw data from stream ----------------------------------------- // fetch next receiver raw data and input a message from stream // args : raw_t *raw IO receiver raw data control struct // int format I receiver raw data format (STRFMT_???) // unsigned char data I stream data (1 byte)

// return : status (-1: error message, 0: no message, 1: input observation data, // 2: input ephemeris, 3: input sbas message, // 9: input ion/utc parameter)

// -----------------------------------------------------------------------------

extern int input_raw(raw_t *raw, int format, unsigned char data); /// single-point positioning ---------------------------------------------------- // compute receiver position, velocity, clock bias by single-point positioning // with pseudorange and doppler observables // args : obsd_t *obs I observation data // int n I number of observation data // nav_t *nav I navigation data // prcopt_t *opt I processing options // sol_t *sol IO solution

// double *azel IO azimuth/elevation angle (rad) (NULL: no output) // ssat_t *ssat IO satellite status (NULL: no output) // char *msg O error message for error exit // return : status(1:ok,0:error)

// -----------------------------------------------------------------------------*/ extern int pntpos(const obsd_t *obs, int n, const nav_t *nav, const prcopt_t *opt, sol_t *sol, double *azel, ssat_t *ssat, char *msg);

// velocity estimation by single-point positioning ----------------------------- // compute receiver position/velocity and clock-bias/drift // args : obsd_t *obs I observation data records // int n I number of observation data records // nav_t *nav I navigation messages // double *rr I receiver position (ecef) (m)

// double *azel I satellite azimuth/elevation angle (rad) // int *vsat I valid satellite flag

// double *vr O estimated velocity (ecef) (m/s) (3 x 1) // double *Qv O estimated velocity covarience (3 x 3) // double *ddtr O estimated receiver clock-drift (s/s) // return : number of valid satellites (<0:error)

// -1: number of valid dopplers, -2: least square error

// -3: iteration divergent, -5: validation error, // -6: gdop error

// -----------------------------------------------------------------------------*/ extern int pntvel(const obsd_t *obs, int n, const nav_t *nav, const double *rr, const double *azel, const int *vsat, double *vr, double *Qv, double *ddtr);

// transform ecef to geodetic postion ------------------------------------------ // transform ecef position to geodetic position // args : double *r I ecef position {x,y,z} (m)

// double *pos O geodetic position {lat,lon,h} (rad,m) // return : none

// notes : WGS84, ellipsoidal height

// -----------------------------------------------------------------------------*/ extern void ecef2pos(const double *r, double *pos);

/// transform ecef vector to local tangental coordinate ------------------------- // transform ecef vector to local tangental coordinate // args : double *pos I geodetic position {lat,lon} (rad) // double *r I vector in ecef coordinate {x,y,z}

// double *e O vector in local tangental coordinate {e,n,u} // return : none

// -----------------------------------------------------------------------------*/ extern void ecef2enu(const double *pos, const double *r, double *e);

搜索更多关于: rtklib学习心得 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

开源的GNSS导航定位包RTKLib的学习历程(一) RTKLIB简介: 由日本东京海洋大学开发(Tokyo University of Marine Science and Technology ),笔者查到最早的介绍是一篇日文的,《RTK-GPS用プログラムライブラリRTKLIBの開発?評価および応用》,其介绍的为RTKLIB ver.1.1。另有一篇论文《Development of the lowcost RTK GPS receiver with an open source program package RTKLIB》也可以看下。 其主要功能如下: 支持标准的GPS、GLONASS、QZSS和SBAS的为精确定位算法(目前此版本不支持Galileo系统) 支持多种动态、静态卫星定位方式(单点定位、

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com