104-RTKLIB中PPP设计

RTKlib单点定位-部分思考 “塔奇克敲代码”博主的博客(RTKLIB源码解析——单点定位),将单点定位部分整理成函数小卡片,为我理解RTKlib提供了很大的帮助。他在单点定位部分列出了一些疑惑,在此我记录下我对部分疑惑的理解。 文章目录1.pntpos函数2.satposs函数3.estpos函数4.seleph函数5.eph2clk函数6.rescode函数7.varerr函数 1.pntpos函数 疑惑1: 源码中将 obs[0].time 作为星历选择时间传递给 satposs函数,这样对于每一颗观测卫星,都要使用第一颗观测卫 阅读详情

首先给出一个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(−),yk−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(−),yk−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​(−))。

X和P的设计如图:

H的设计如图,参与定位的卫星有5,14,18,21,25,30,

注意,rtklib中为了方便将H设计成254*24。H的设计遵循L1,P1,L2,P2的顺序。

最后是R阵的设计。其对角线的参数由四部分组成,第一部分由varerr求取,根据不同的系统、高度角、载波类型及观测类型会有所不同;其余三部分分别是对流层、电离层和卫星位置误差。对流层误差设计为SQR(0.01),电离层设计为0,卫星位置误差再定位时求取。

【RTKLIB实战】RTKnavi实时高精度定位:从数据流配置到解算优化的完整指南 本文详细介绍了RTKLIB中RTKnavi模块的实战应用,从数据流配置到解算优化的完整指南。通过具体案例展示了如何实现厘米级高精度定位,包括硬件连接、网络配置、参数调优等关键步骤,帮助用户快速掌握RTKnavi在农业无人机、车载测量等场景中的应用技巧。 阅读详情

相关推荐

MSM协议解析指南:从RTCM多信号消息到GNSS观测数据处理

在GNSS高精度定位领域,RTCM协议是接收机与解算平台之间传递观测数据的通用语言。随着多频多系统GNSS的普及,传统单系统消息格式逐渐被更灵活、更紧凑的MSM(多信号观测消息)取代。MSM通过卫星掩码、信号掩码和单元掩码的机制,用一套统一的消息骨架承载GPS、GLONASS、Galileo、北斗等星座的伪距、载波相位、多普勒及信噪比等观测数据,兼顾带宽效率与数据完整性。理解MSM的位域排布、粗值与细值拆分、以及不同星座时间基准的差异,是开发RTK/PPP终端固件或实现RTCM解析器的基础。从协议结构到实际

weixin_34200628的博客 260

RTKLIB Manual 之 Appendix B File Formats

B.1 Positioning Solution File 定位结果文件 可以由RTKNAVI或RTKPOST得到,文件内部通过行、节进行分隔,共同构成整个文件。文件内部的格式如下所示: 1、文件头: 文件头中每行以“%”开始,每行包括相关的处理信息: % program : RTKPOST ver.2.4.2 程序处理版本% inp file : E:\专业资料\……\……\chdu1000.15o 输入文件路径% inp file : E:\专业资料\……\……\joha1000.15...

wuwuku123的博客 4621

RTKLIB中ppp代码解析

v= zk - hx 在代码中对应的是v[nv]=y-(r+cdtr-CLIGHT*dts[i*2]+dtrp+C*dion+dcb+bias);9) ppp_res(9,obs,n,rs,dts,var,svh,dr,exc,nav,xp,rtk,v,H,R,azel)) 模糊度固定的残差校验。kalman方程中的测量xk = xk/k-1 +kv 以及pk = pk/k-1 - kh*pk/k-1 状态更新。待估参数的预测,对应klaman公式中的xk/k-1、 Pk/k-1。

不会就学的博客 2275

rtklib--伪距单点定位(single-point positioning)学习(2)estposs

.rescode:计算在当前接收机位置和钟差值的情况下,定位方程的右端部分 v(nv\*1)、几何矩阵 H(NX*nv)、此时所得的伪距残余的方差 var、所有观测卫星的 azel{方位角、仰角}、定位时有效性 vsat、定位后伪距残差 resp、参与定位的卫星个数 ns和方程个数 nv

PNTer 6196

BDS数据质量分析与定位精度评价:从RINEX到SPP/RTK/PPP的完整流程

在卫星导航与定位技术应用中,数据质量是决定定位精度可信度的首要前提。无论是RTK测量、PPP解算还是静态控制网观测,RINEX观测文件中的载噪比、多路径效应、周跳比等指标,都直接反映信号环境与接收机状态。只有完成严格的数据质量分析,剔除异常观测量,后续的定位精度评估才有实际意义。针对北斗卫星导航系统(BDS),工程实践中常通过GFZRNX或RTKLIB等工具提取质量指标,并结合SPP、RTK、PPP三种解算模式进行水平与垂直误差统计,形成从数据筛选到精度评价的闭环流程。本文面向GNSS相关专业学生、测绘工程

weixin_29193259的博客 306

北斗BDS数据质量分析与定位精度评价实战:从观测指标到解算流程

卫星导航系统的服务能力不仅取决于信号覆盖,更取决于数据质量与定位解算的可靠性。在GNSS高精度应用与测绘工程实践中,数据完整率、信噪比、多路径误差、周跳比是衡量观测质量的核心指标,而伪距单点定位与精密单点定位的精度评定则直接反映系统性能。本文从RINEX格式与数据获取入手,系统梳理TEQC质量检核、RTKLIB定位解算及精度指标计算的全流程,并结合北斗二号与北斗三号的多频点特性,分析观测环境、卫星仰角、星历选择对定位结果的影响。无论是从事北斗/GNSS数据处理、课题研究,还是进行卫星导航系统性能评估,掌握从

weixin_29055137的博客 232

更新RTKLIB 配置文件指南

更新RTKLIB 配置文件指南 更新RTKLIB 配置文件指南 说明 原文来自于rtklibexplorer的博客文章《Updated guide to the RTKLIB configuration file》,首先用谷歌翻译进行粗翻译,然后对个别词句做了修改,部分地方做了意译。翻译仅仅为个人阅读方便,有错误的地方还请指出。 目录 SETTING1: pos1-posm...

pixuankou0834的博客 2331

BDS数据质量分析与定位精度评价:从实测数据到论文写作全流程

卫星导航系统的可靠性与定位精度,是测绘、导航与大地测量领域工程实践的基石。面对北斗系统(BDS)全球组网完成后的新信号体制,如何科学评估其数据质量与定位性能,成为学术研究与工程应用共同关注的焦点。通常,评估工作从基础观测数据入手,围绕可见卫星数、多路径效应、信噪比、周跳比等核心指标展开,再结合静态精密单点定位(PPP)与动态差分定位(RTK)等解算策略,量化其在典型场景下的精度表现。这一套“数据筛选—质量分析—定位解算—精度统计”的闭环流程,不仅能够为变形监测、农机导航、无人机航测等应用提供选星与参数配置依

weixin_32501329的博客 253

RTKLIB中PPP程序结构及重要函数

1 程序结构 2 重要函数 (1)pppos中主要函数 udstate_ppp:更新状态变量xp、更新Pp矩阵 ppp_res:计算观测值残差v、构造H矩阵、计算观测误差方差构造R矩阵 filter:卡尔曼滤波测量更新,得到x、P (2)udstate_ppp中主要函数 udpos_ppp:更新位置变量。首历元初始化,赋SPP定位解;static模式继承上一时刻x与P矩阵;kinematic模式x赋SPP定位结果,P矩阵初始化为较大值。 udclk_ppp:更新接收机钟差变量。每一个历.

papunzal的博客 2601

北斗BDS数据质量分析全流程:从RINEX质控到定位RMS计算

北斗(BDS)作为全球四大卫星导航系统之一,其观测数据质量直接影响单点定位精度与工程可靠性。理解RINEX格式规范、掌握伪距/载波相位多路径(MP1/MP2)建模原理、构建可复现的本地化质控流水线,是开展BDS性能评估的基础能力。该技术链路融合TEQC元数据校验、RTKLIB单点解算约束配置、Python自动化指标统计三大核心环节,具备强可迁移性与低依赖特性,广泛适用于高校GNSS教学实验、低成本接收机鲁棒性测试及北斗数据可信度验证等场景。文中重点解析BDS-2/3卫星分组策略、GEO低动态建模难点及MP1

weixin_29164497的博客 216

Ubuntu 22.04 下编译运行 GAMIT 10.71 完整指南

GAMIT 是卫星大地测量领域用于高精度 GNSS 数据处理的核心工具链,其本质是一套基于 Fortran/C 的命令行数值计算系统,依赖严格匹配的数学库(如 ATLAS/LAPACK)与环境配置。它通过基线解算、网平差和地球参考框架实现,支撑地壳形变监测、CORS 网分析等关键任务。技术价值在于亚毫米级坐标解算能力与对物理模型的深度控制,典型应用场景包括 IGS 站坐标精化、区域基准维持及科研级形变建模。本文聚焦 Ubuntu 22.04 环境下从源码编译、环境变量配置到 sh_gamit 实战解算的全链

weixin_33423874的博客 257

[学习] RTKLib详解:rtcm2.c、rtcm3.c、rtcm3e与rtcmn.c

本文详细解析了 RTKLIB 中 rtcm2.c、rtcm3.c、rtcm3e.c 和 rtcmn.c 四个 RTCM 协议处理模块。rtcm2.c 实现 RTCM 2.x 消息解析,支持 GPS 差分校正;rtcm3.c 支持多系统、多频段 MSM 格式校正数据;rtcm3e.c 提供厂商扩展消息兼容接口;rtcmn.c 提供 CRC 校验、时间转换与坐标变换通用函数。每个模块均展示了清晰的流程结构与数学原理,为理解 RTKLIB 的 RTCM 协议解析与差分数据处理提供了理论与实践基础。

极客不孤独的博客 2113

GAMIT 10.71高精度GNSS基线解算全流程实战指南

高精度GNSS数据处理是大地测量与卫星导航应用的核心环节,借助载波相位观测值和双差解算模型,能够有效削弱卫星钟差、接收机钟差及大气延迟误差,实现毫米级相对定位。GAMIT作为MIT与Scripps研究所联合开发的开源工具,凭借其稳健的基线解算能力和与GLOBK的联动,被广泛应用于板块运动监测、地震形变研究等领域。本文基于GAMIT 10.71版本,系统梳理了从RINEX数据准备、配置文件编写到逐步骤解算的完整流程,重点解析了Q文件中nrms、模糊度固定率等关键指标的意义,并总结了编译安装、参数调优和常见报错

weixin_31100517的博客 280

网络通信入门:NTRIP、RTCM、TCP 概念澄清, NtripSource、NtripServer、NtripCaster、NtripClient 关系梳理

挂载点(Mountpoint)是 Caster 上某路服务或数据流的标识。BJ01RTCM3_GRECNEARVRSSSRA01IGS0挂载点不一定等于物理测站名。单参考站 RTCM;VRS 或网络 RTK 服务;最近站选择服务;SSR 产品;广播星历;其他实时 GNSS 流。同一个 Caster 中,可请求的服务需要用不同挂载点区分。但是:挂载点名称只是标识,不足以证明实际负载格式、算法类型和服务覆盖范围。Source Table 是 Caster 发布的数据流目录。

星垂平野阔, 月涌大江流 332

NTRIP协议深度解析:HTTP表象下的GNSS校正流控本质

NTRIP(Networked Transport of RTCM via Internet Protocol)是一种专为高精度GNSS校正数据设计的流式传输协议,其核心并非简单封装RTCM于HTTP,而是利用HTTP的连接建立能力,在TCP层之上构建确定性实时流控机制。它通过ICY响应头、mountpoint语义、sourcetable元数据协商等机制,实现毫秒级时效、字节级敏感的校正流分发。该协议支撑RTK/PPP等厘米级定位服务,在车载导航、无人机测绘、精准农业等场景中承担关键数据通道角色。理解NTR

weixin_28721917的博客 300

企业微信API实战:解密external_userid的跨应用一致性管理

本文深入探讨企业微信API中external_userid的跨应用一致性管理问题,解析其本质及在不同应用场景下的ID不一致挑战。通过ID转换与统一管理方案,结合unionid实现跨应用客户数据整合,提供实战代码示例和架构设计,助力企业构建高效的客户管理系统。

weixin_29258297的博客 637

115-RTKLIB及GAMP中PPP的随机模型

在rtklib中,ppp的随机模型设置如下: static double varerr(int sat, int sys, double el, int freq, int type, const prcopt_t *opt) { double fact=1.0,sinel=sin(el); /* type 0:phase, 1:code */ if (type==1) f...

学问思辨行 3703

英飞凌TC3xx--深度手撕HSM安全启动(三)--TC3xx HSM系统架构

TC3xx的HSM内核是一颗32位的ARM Cortex M3,主频可达100MHz,支持对称算法AES128、非对称算法PKC(Public Key Crypto) ECC256、Hash SHA2,以及TRNG(真随机数生成)。

认真搞搞汽车MCU 5742

DCB差分码偏差概念及应用(附RTKLIB测试对比结果)

文章目录DCB概念DCB文件下载RTKLIB中的DCB修正RTKLIB测试 DCB概念 由于卫星或接收机硬件延迟,导致不同信号的传播时间并不一致,从而产生了DCB(Differential Code Bias 差分码偏差)。DCB包括卫星端差分码偏差和接收机端差分码偏差,一般来说接收机端的DCB可以跟接收机钟差一起解算,被接收机钟差所吸收;而卫星端的DCB在精密定位中必须得到补偿。 DCB根据频率可以分为两种: 频内偏差:相同频率不同码之间存在的偏差(如P1-C1、P2-C2等) 频间偏差:不同频率之间存

weixin_42918498的博客 8900

泰凌微8258入门教程 环境篇④——开发板+烧录器 8258mesh新手套件购买

工欲善其事,必先利其器。 淘宝链接:https://item.taobao.com/item.htm?

4128

YOLOv11知识蒸馏,实现无损涨点,包含逻辑蒸馏和特征蒸馏中的不同蒸馏方法,适用专栏内的所有模型

知识蒸馏(Knowledge Distillation)是由 Hinton 等人在 2015 年提出来的,主要是用一个复杂的教师模型去指导一个简单的学生模型训练,这样能让学生模型在保持高精度的同时,还能减少计算量。本文便是讲解如何针对的原始模型以及改进后的模型进行知识蒸馏,轻松实现无损涨点。知识蒸馏的核心在于利用已训练好的复杂模型(教师模型)去指导一个更简单的模型(学生模型)进行训练,以此让学生模型在保留较高精度的同时,降低计算成本。特征蒸馏(Feature Distillation)是知识蒸馏的一种形式,

Limiiiing的博客 4959

ddres( ) 组站星双差方程和设计矩阵

rtklib中进行的单频解算双差观测值,单差的模糊度 单频点双差x 模糊度P 方差-协方差阵sat 共识卫星列表ns 共识卫星数量y 残差阵,数量:ns*nf*2(每颗卫星的每个频率,×2是伪距和载波)e dx dy dz设计矩阵,数量:ns*3freq 频率,数量:ns*nf 每个频点的伪距和载波频率一样,而且伪距也用不到频率,是载波求波长时用的v 完整残差阵(包括了模糊度)

qq_58309598的博客 2462

java技术专家【面试】Java程序员英语面试整个流程

java技术专家【面试】Java程序员英语面试整个流程

大壮 753
上一篇: GPS观测值的线性组合
下一篇: 105-为什么会有两种形式的消电离层组合
魔方的块
博客等级 码龄11年 1056粉丝 119原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值