rtklib学习心得.pdf

上传人:yanj****uan 文档编号:23033691 上传时间:2022-06-28 格式:PDF 页数:12 大小:1.19MB
返回 下载 相关 举报
rtklib学习心得.pdf_第1页
第1页 / 共12页
rtklib学习心得.pdf_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《rtklib学习心得.pdf》由会员分享,可在线阅读,更多相关《rtklib学习心得.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、开源的 GNSS 导航定位包 RTKLib 的学习历程(一)RTKLIB 简介:由日本东京海洋大学开发(Tokyo University of Marine Science and Technology),笔者查到最早的介绍是一篇日文的,RTK-GPS 用RTKLIB 開発?評価応用,其介绍的为RTKLIB ver.1.1。另有一篇论文Development ofthe lowcost RTK GPS receiver with an open source program package RTKLIB也可以看下。其主要功能如下:支持标准的 GPS、GLONASS、QZSS 和 SBAS 的为

2、精确定位算法(目前此版本不支持Galileo 系统)支持多种动态、静态卫星定位方式(单点定位、DGPS、载波相位动态差分定位RTK、静态、移动基站、PPP)支持全球定位导航系统的多种标准格式和协议支持多品牌接收机的专有消息传输协议支持多种通讯方式华丽的分割线下面开始介绍笔者的学习历程,由于工作的原因,时间跨度有些大,断断续续的。初次接触 RTKLib 是在 2010 年 8 月份,当时版本还是 2.3.0,下载了源码,花时间做了一个简单的应用:通过调用RTKLIB 的 API 接口,进行单点定位,并计算出速度、方位角、仰角等,主要调用的函数依顺序为:init_raw, input_raw,pn

3、tpos,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

4、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

5、 *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 m

6、essage, 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 a

7、nd 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 out

8、put)/ 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

9、 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 estima

10、ted 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 er

11、ror/ -*/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 *p

12、os 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,l

13、on (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 学习(二):Glonass 参数,该信哪一个?在了解 Glonass 卫星位置计算时,一般用四阶龙格库塔算法,笔者在校时学的数值计算方法中有讲,不过也差不多忘完了,重新学习吧。算法本身倒不是多

14、难,难得是碰到了参数该用哪一个呢?上图为笔者查找相关论文,搜索出来的,上(左)来自测绘与空间地理信息第32卷第 2 期;上图(右)来自东南大学学报第40 卷,前者是 2009 年 4 月份的,后者是2010 年 7 月份的。两篇文章公式还算一致,但与笔者看的glonass ICD 2002r对不上,如下图:(注:第二与第三公式中参数不一致,Why?)那是不是笔者的 ICD 文件错误呢?查 2008 版的 ICD 文件,如下图所示,同样该参数为1,于是笔者石化了,不知道哪个文档可信。有做过的朋友,请知会下,Why?谢谢先。rtklib 学习(三) 单频 RTK 后处理笔者准备读 rtklib 中

15、的 RTK部分源码了,在解读 RTK部分源码之前,还是先来看下原作者提供的 BIN 工具如何处理 RTK定位,先了解应用的数据处理流程,对解读源码有一定的帮助。笔者准备的是一份 10 年采集的单频 L1 的数据,先将数据转至rinex 格式,利用RTKCONV工具,注意 Format 的选择,同时在转换RTCM数据时,还要设置采集的时间,建议先转移动站数据,得到时间。转换数据 OK 后,就可以打开 RTKPOST加载数据,作后处理定位了,如下图所示:后处理定位前,先设置定位模式,其各项设置参考下列三个图片:选择 Moving-Base 模式, 即流动站基站; 笔者的数据只有 L1 的, 所以

16、Frequencies 选 L1;Solution Type可以任意,这里先前向;仰角这里采用默认值15 度;等等;采用默认设置,如下:设置输出数据格式,这里采用默认值:后处理成功后,定位结果如下图所示:经纬度平面图,如下所示:RTKLIBRTKLIB:免费的:免费的 GNSSGNSS 定位开源软件定位开源软件发布时间:2012-11-28 11:14:53RTKLIB 是一个开放源码的程序包,供标准与精确 GNSS 全球导航卫星系统用。 RTKLIB 包括一个可移植的程序库和几个应用程序(AP)库。RTKLIB 的特点:(1)支持标准的和精确的定位算法:GPS,GLONASS,QZSS 准天

17、顶卫星系统和 SBAS(伽利略能,但目前的版本暂不支持)(2)支持多种定位模式与 GNSS 实时和后处理:单点,DGPS / DGNSS,动态的,静态的,移动基线,定点,PPP 运动*,* PPP 静态和 PPP 定点(3)支持多种标准格式和协议 GNSS:RINEX 2.10,2.11,2.12 OBS /NAV/ GNAV / HNAV,RINEX 3.00 OBS / NAV,RINEX 3.00 CLK,RTCM V.2.3,V.3.1 RTCM 1.0,NTRIP,RTCA/DO-229C,NMEA 0183,SP3-C, IONEX 1.0,ANTEX 1.3,NGS PCV 和

18、EMS 2.0(请参阅发行说明支持 RTCM 消息)(4)支持几个 GNSS 接收机的专有信息:NovAtel 公司:OEM4 / V,OEM3,OEMStar,超星 II,半球:Eclipse 中,新月,u-blox 的 LEA-4T,5T,6T,JAVAD:GRIL / GREIS,古野:GW-10 II / III, NVS Technologies AG 公司 NV08C-CSM,NV08C-MCM,CH-4706M(见发行说明支持的消息)(6)支持外部通信通过:串口,TCP / IP,NTRIP,本地日志文件(录制和播放)和 FTP / HTTP(自动下载)(7)提供了许多库函数和全

19、球导航卫星系统数据处理的 API:卫星导航系统的功能,矩阵和向量函数,时间和字符串函数,坐标转换,输入和输出功能,调试跟踪功能,与平台相关的功能,定位模型,大气模型,天线模型,地球潮汐模型,大地水准面模型,基准转换,的 RINEX 功能,星历和时钟功能,精密星历和时钟功能,接收器的原始数据的功能,RTCM 功能,解决方案的功能,谷歌地球 KML 转换器,SBAS 功能,选项功能,数据流的输入和输出功能,整周模糊度,标准定位,精确定位,后处理中的定位,流服务器功能,RTK 服务器功能(8)提供 GUI 和 CUI(命令行)接入点:- RTKNAVI,RTKRCV:实时定位- RTKPOST,RN

20、X2RTKP 后处理分析- RTKPLOT:可视化的解决方案和观测数据- RTKCONV,CONVBIN:的 RINEX 翻译为 RTCM 和接收器的原始数据记录- STRSVR,STR2STR:通信实用程序- NTRIPSRCBROWS:NTRIP 源表浏览器- 其它定位实用程序所有的可执行二进制文件适用于 Windows 的 AP 都包含在包以及整个的源代码,库和接入点。对于实时 PPP,EUREF 和 IGS 已经开始分发实时卫星的轨道和时钟 RTCM 第 3 节的 SSR 的消息通过 NTRIP。要接收的实时卫星的轨道和时钟,用户必须进行登记并获得一个帐户来访问 NTRIP 广播电台。

21、请参阅有关详细信息,BKG GDC 现场 http:/igs.bkg.bund.de/ntrip/index 的。许可证RTKLIB 是 GPLv3 许可证下发布的。 (http:/gplv3.fsf.org/)2 条从版本 BSD 的许可证将被改变。 2.4.2。 (2012 年 11 月 4 日)环境/可移植性所有的库函数和 API 都写在 ANSI C(C89)。用于 Linux / UNIX 或适用于 Windows 的 Winsock 和 WIN32 线程库内部使用标准的插座和 pthread。通过设置编译器选项-DLAPACK 或-DMKL 的,使用 LAPACK / BLAS 库

22、或英特尔 MKL 快速矩阵运算。控制台的 AP 也被写在标准 C 库和控制台接入点可以建立在许多环境中,如在 Linux 的 gcc。 GUI 接入点都写在 C + +和使用 Borland 的 VCL 的 GUI 工具包。所有的可执行二进制文件包中的 AP 建立的免费版本,Borland 公司的 Turbo C + + 2006(http:/)*在 Windows 上。 32 位的 Windows XP SP3 和 Windows 7 SP1 64 位的二进制接入点上进行了测试。控制台的 AP 也都建在 Ubuntu 9.04 Linux 的测试。*免费版的 Turbo C + + 2006 不再可获得。建立环境为 Windows 接入点改为 C + + Builder XE2,XE3 从版本。 2.4.2。 (2012 年 11 月 4 日)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁