问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

GNSS 地球自转改正算例分析

创作时间:
作者:
@小白创作中心

GNSS 地球自转改正算例分析

引用
CSDN
1.
https://blog.csdn.net/Gou_Hailong/article/details/138243773

文章目录

  • Part.I Introduction
  • Part.II 由地球自转引起的误差的概念和改正方法
  • Chap.I 误差概念
  • Chap.II 改正方法
  • Part.II 算例分析
  • Chap.I 基础数据
  • Chap.II 计算过程
  • Appendix
  • Reference

Part.I Introduction

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

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

Chap.I 误差概念

如下图所示,假设在t0时刻,卫星的在ECEF0下的坐标为(X0S, Y0S, Z0S),此时它发射了一个信号。信号穿越层层大气,最终在t1时刻到达地球,被接收机所接收,此时接收机在ECEF1下的坐标为(XR1, YR1, ZR1)。所有的计算都是在ECEF1下开展的,存在这样一个矛盾,因此将其称之为地球自转引起的一个误差项。

Chap.II 改正方法

改正方法有两种

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

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

改正坐标
[
\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]
    ]

改正距离
[
\Delta \rho=\frac{\omega}{c}\left[ Y^S_0(X_0^S-X_{R0})- X^S_0(Y_0^S-Y_{R0}) \right]
]

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

  • Kaplan E D , Hegarty C .Understanding GPS/GNSS: Principles and Applications[M]. 2017.
  • 地球自转改正(附图文)
  • 【GNSS】地球自转改正
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号