GNSS 地球自转改正算例分析

Part.I Introduction

为了更好地理解 地球自转改正,本文将介绍一个算例。

在这里插入图片描述

Part.II 由地球自转引起的误差的概念和改正方法

Chap.I 误差概念

如下图所示,假设在 t 0 t_0 t0 时刻,卫星的在 E C E F 0 ECEF_0 ECEF0 下的坐标为 ( X 0 S , Y 0 S , Z 0 S ) (X^{S}_0,Y^{S}_0,Z^{S}_0) (X0S,Y0S,Z0S) ,此时它发射了一个信号。信号穿越层层大气,最终在 t 1 t_1 t1 时刻到达地球,被接收机所接收,此时接收机在 E C E F 1 ECEF_1 ECEF1 下的坐标为 ( X R 1 , Y R 1 , Z R 1 ) (X_{R1},Y_{R1},Z_{R1}) (XR1,YR1,ZR1)所有的计算都是在 E C E F 1 ECEF_1 ECEF1 下开展的,存在这样一个矛盾,因此将其称之为地球自转引起的一个误差项。

在这里插入图片描述

Chap.II 改正方法

改正方法有两种

  • §1 改正坐标 :将卫星的坐标从 ( X 0 S , Y 0 S , Z 0 S ) (X^{S}_0,Y^{S}_0,Z^{S}_0) (X0S,Y0S,Z0S) 转换为 ( X R 1 , Y R 1 , Z R 1 ) (X_{R1},Y_{R1},Z_{R1}) (XR1,YR1,ZR1) .
  • §2 改正距离 :看上面的图,接收机是固联在地球上与地球一起转动的(静态情况下),对于卫星而言,接收机在信号传播的过程中有一个旋转。但是从数字层面考量,接收机的坐标并没有发生变化(因为坐标系是地固系),换句话说,信号接收时刻和信号发射时刻,卫星认为接收机的坐标是一样的。通过数据计算得到的卫星至接收机的距离是图中的 ρ \rho ρ ,但是真实的卫星至接收机的距离是 ρ + Δ ρ \rho+\Delta\rho ρ+Δρ !所以,只需要改掉 Δ ρ \Delta\rho Δρ 就行了。

下面只放结论,细节请 移步这里


改正坐标
[ Δ X S Δ Y S Δ Z 1 S ] ≈ [ α ⋅ Y 0 S − α ⋅ X 0 S 0 ] = [ ω τ ⋅ Y 0 S − ω τ ⋅ X 0 S 0 ] (4) \left[ \begin{array}{ccc} \Delta X^{S} \\ \Delta Y^{S} \\ \Delta Z^{S}_1 \\ \end{array} \right]\approx \left[ \begin{array}{ccc} \alpha\cdot \color{red}Y^{S}_0 \\ - \alpha \cdot \color{red}X^{S}_0 \\ 0 \\ \end{array} \right] = \left[ \begin{array}{ccc} \omega \tau\cdot Y^{S}_0 \\ - \omega \tau \cdot X^{S}_0 \\ 0 \\ \end{array} \right] \tag{4} ΔXSΔYSΔZ1S αY0SαX0S0 = ωτY0SωτX0S0 (4)


改正距离
Δ ρ = ω c [ Y 0 S ( X 0 S − X R 0 ) − X 0 S ( Y 0 S − Y R 0 ) ] (8) \Delta \rho=\frac{\omega}{c}\left[ Y^S_0(X_0^S-X_{R0})- X^S_0(Y_0^S-Y_{R0}) \right]\tag{8} Δρ=cω[Y0S(X0SXR0)X0S(Y0SYR0)](8)

Part.II 算例分析

Chap.I 基础数据

卫星坐标

G03  12712.882254  23247.798196  -2637.709427

接收机坐标

-2267752.0605993434, 5009151.1456511570, 3221301.4797024932

常量

OMEGA = 7292115.1467e-11    # rad/s
CLIGHT = 2.99792458e+8      # m/s

Chap.II 计算过程

卫星至接收机的距离

distance = np.linalg.norm(sat_crd - rec_crd)
# 卫星至接收机的距离:  24318627.829295974 m

信号传播时间

tau = distance / CLIGHT     # [s]
# 信号传播时间:  0.08111821088339712 s

地球自转角度

ang = OMEGA * tau           # [rad]
ang_deg = ang * 180 / G_PI  # [deg]
# 地球旋转角度:  0.00033891790536376496 °

卫星坐标改正量

delta_X_sat = OMEGA * ang * sat_crd[1]
delta_Y_sat = -OMEGA * ang * sat_crd[0]
# 卫星坐标改正量 (delta_X_sat,delta_Y_sat):  (0.010027836078424127, -0.005483646160923473) 
m

卫星至接收机的距离改正量

delta_rho = OMEGA / CLIGHT * (
    sat_crd[1] * (sat_crd[0] - rec_crd[0]) - 
    sat_crd[0] * (sat_crd[1] - rec_crd[1])
)
# 卫星至接收机的距离改正量:  28.313234929582023 m

可见,由于地球自转,对于此颗星的距离量测有 28 m 误差之多!

Appendix

所用源码如下:

import numpy as np

def compute():
    # Initail value
    sat_crd = np.array([12712882.254, 23247798.196, -2637709.427])
    rec_crd = np.array([-2267752.0605993434, 5009151.1456511570, 3221301.4797024932])
    OMEGA = 7292115.1467e-11    # [rad/s]
    CLIGHT = 2.99792458e+8      # [m/s]
    G_PI = 3.14159265358979311599796346854419e0
    # Calculate
    distance = np.linalg.norm(sat_crd - rec_crd)
    tau = distance / CLIGHT     # [s]
    ang = OMEGA * tau           # [rad]
    ang_deg = ang * 180 / G_PI  # [deg]
    delta_X_sat = OMEGA * ang * sat_crd[1]
    delta_Y_sat = -OMEGA * ang * sat_crd[0]
    delta_rho = OMEGA / CLIGHT * (
        sat_crd[1] * (sat_crd[0] - rec_crd[0]) - 
        sat_crd[0] * (sat_crd[1] - rec_crd[1])
    )
    # Output
    print("卫星至接收机的距离: ", distance, "m")
    print("信号传播时间: ", tau, "s")
    print("地球旋转角度: ", ang_deg, "°")
    print("卫星坐标改正量 (delta_X_sat,delta_Y_sat): ", (delta_X_sat, delta_Y_sat), "m")
    print("卫星至接收机的距离改正量: ", delta_rho, "m")

Reference

  • 27
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪猪头拯救地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值