logo资料库

RTKPPP定位算法流程.pdf

第1页 / 共38页
第2页 / 共38页
第3页 / 共38页
第4页 / 共38页
第5页 / 共38页
第6页 / 共38页
第7页 / 共38页
第8页 / 共38页
资料共38页,剩余部分请下载后查看
以下是上面一些算法的参考资料,信息来自于 Rtklib 的 手册
2.1 单点定位( pntpos )
2.2 精确定位 ( pppos)
1 基础知识 1.1 GPS 精密单点定位的基本原理 GPS精密单点定位一般采用单台双频 GPS接收机, 利用 IGS 提供的精密星历和卫星钟差, 基于载波相位观测值进行的高精度定位。观测值中的电离层延迟误差通过双频信号组合消 除,对流层延迟误差通过引入未知参数进行估计。 1.2 时间系统 RTKLIB 内部使用 GPST(GPST时间 )用于 GNSS的数据处理和定位算法。数据在 RTKLIB 内部处理之前,需要转换成 GPST时间。使用 GPST的原因是避免处理润秒。 RTKLIB 使用以 下结构体表示时间: typedef struct time_t time; /* time(s) expressed by standard time_t */ double sec; /* fraction of second under 1 s */ } gtime_t; 1.2.1 GPST 和 UTC(Universal Time Coordinated) 关系参考【图 1】, 参考【图 2】: 图 1 转换关系公式
图 2 通过使用 GPS导航信息中的 UTC 参数, GPST到 UTC 或者 UTC 到 GPST之前的转换可以用 更准确的表达方式,如【图 3】。 图 3 这些参数是由 GPS导航消息提供的。 1.2.2 BDT(北斗导航卫星系统时间) BDT (北斗导航卫星系统时间) 是一个连续的时间系统, 没有润秒。开始历元的时间是 【UTC 2006 年 1月 1号 00:00:00】。 北斗时间计算公式【图 4】: UTC 和GPST时间转换同上面的 GPS一样,只不过 UTC 参数来自与北斗导航信息中。 图 4 1.3 坐标系统 接收机和卫星的位置在 RTKLIB 中表示为在 ECEF( 地心地固坐标系 ) 坐标系统中的 X, Y, Z 组件 。 1.3.1 大地坐标到 ECEF 坐标的转换 转换公式如【图 5】。
第三个公式最后一行有错,应该为 : (v(1 – e2)+h)sin 参数说明: a : 地球参考椭球的长半径 f : 地球参考椭球的扁平率 h: 椭球高度 : 纬度 : 经度 当前版本的 RTKLIB 使用的值为【图 6】: 图 5 图 6 图 7 参考椭球体
1.3.2 ECEF 坐系到大地坐标的转换 转换公式如【图 8】 图 8 1.3.3 本地坐标到 ECEF 坐标的转换 在接收机位置的本地坐标,也被称为 ENU 坐标,通常使用在 GNSS导航处理。 ECEF坐 标到本地坐标转换的旋转矩阵表示为【图 9】。 图 9 Er旋转矩阵 参数说明: :接收机位置的纬度 :接收机位置的经度 通过使用 Er 和接收机的坐标 r r【 ECEF】,坐标 recef【 ECEF】可以被转换到本地坐标的 坐标 rlocal,公式如【图 10】。 图 10
2 RTKPPP 定位算法 2.1 单点定位( pntpos ) 1:satposs 2: estpos 3: estvel 1. 计算计算卫星位置、速度和时钟( satposs) a) 通过广播星历计算卫星钟差( ephclk) 卫星编号到卫星系统的转换( satsys) 根据卫星的编号,获取到对应的卫星导航系统。 选择星历( seleph) 1、传入信号传输时间,卫星编号,导航数据等参数。 2、遍历导航数据,遍历导航数据里面的星历数据,判断星历数据的卫星 编号是否和传入的卫星编号相等。 3、如果星历数据的卫星编号和传入的卫星编号相等,就计算星历参考时 间(toe)和信号传输时间的时间差。 如果不相等, 继续处理下一条星历数据。 4、判断计算出来的时间差,如果时间差大于了允许的最大时间差,继续 查找下一个星历数据。 否则, 判断时间差最小的星历数据, 记录星历数据 的位置。 5、返回之前记录出来的星历数据。 使用广播星历计算卫星时钟偏差( eph2clk) 1、 传入信号发射时刻的时间和星历数据。 2、 计算信号发射时刻的时间和本时段钟差参数参考时间 (星历参数 toc) 的时间差。 3、 通过下式计算钟差,这里还没有处理相对论校正项和 tgd:( 代码中 有个迭代过程,资料上没看到写 ) 卫星钟差计算出来之后,信号发射时刻的时间还要加上这个钟差。 b) 计算卫星在信号发射时刻的位置、速度和时钟( satpos) 根据星历表选项来选择不同的处理,如下: 广播星历( EPHOPT_BRDC) : ephpos (广播星历到卫星位置和钟差) 1、 根据公式 计算出 tk; 2、 根据使用的卫星系统,选择使用的地球引力常数 (mu) 和地球的角速度
(omge) 3、 根据公式 计算出平近点角 M 。 4、 求解开普勒方程 ,按照以下公式迭代求解。 5、 根据以下公式计算出 u(改正后的纬度幅角 ), r(改正后的径向 ), i(改正后 的轨道倾角 ) 的值。 6、 根据以下公式计算卫星在轨道平面内的坐标。 7、 根据不同的卫星系统,做不同的计算。 GPS计算方式: 北斗计算方式:
其中 8、 按照公式 计算出时间 tc。 9、 按照以下公式计算出钟差和钟漂。 精密星历( EPHOPT_PREC): peph2pos 广播 +SBAS( EPHOPT_SBAS): satpos_sbas 广播 +SSR_APC( EPHOPT_SSRAPC): satpos_ssr 广播 +SSR_COM( EPHOPT_SSRCOM): satpos_ssr QZSS LEX星历( EPHOPT_LEX): lexeph2pos 2. 使用伪距估算接收机的位置 ,返回估算状态结果 (estpos) a) 伪距残差( rescode) 把 ecef 坐标系转换成大地坐标系( ecef2pos) 1、 按照以下公式做转换,暂时还没看懂。 计算几何距离和接收机到卫星的单位矢量( geodist ) 1、 用卫星的坐标向量做欧几里德范数,返回值和地球长半轴 (WGS84) 比 较。小于地球长半轴 (WGS84) ,返回 -1; 2、 计算卫星坐标和接收机坐标的差值向量。
3、 用差值向量做欧几里德范数, 再用上一步计算出来的差值向量和计算 结果做除法,得到视线向量。按照如下公式: 4、 使用以下公式计算几何距离。 计算卫星方位角 / 仰角( satazel) 1、 把接收机 ecef坐标转换到大地坐标; 2、 判断高度是否大于地球半长轴( WGS84 )的负数值; 3、 如果高度小于等于地球半长轴( WGS84 )的负数值,方位角为 0,仰 角为 PI/2; 4、 如果高度大于地球半长轴( WGS84 )的负数值,把 ECEF向量转换到 局部坐标。然后对转换出来的坐标做内积。 5、 使用如下公式计算卫星方位角和仰角。 伪距使用编码残差改正( prange) 暂时没找到对应的文档对应。 电离层改正( ionocorr ) 通过广播电离层模型 ( klobuchar 模型)计算出电离层延迟 ( ionmodel ) 1、 校验传入的电离层模型参数, 校验失败, 使用默认的电离层模型参数; 2、 使用以下公式计算出地球为中心的角度(半圆) ; 3、 使用以下公式计算子的电离层的纬度 /经度(半圆);
分享到:
收藏