文章目录
- Part.I Introduction
- Part.II 由地球自转引起的误差的概念和改正方法
- Chap.I 误差概念
- Chap.II 改正方法
- Part.II 算例分析
- Chap.I 基础数据
- Chap.II 计算过程
- Appendix
- Reference
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(X0S−XR0)−X0S(Y0S−YR0)](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
- Kaplan E D , Hegarty C .Understanding GPS/GNSS: Principles and Applications[M]. 2017.
- 地球自转改正(附图文)
- 【GNSS】地球自转改正