GPS从入门到放弃(八) --- GPS卫星速度解算

GPS从入门到放弃(八) — GPS卫星速度解算

在阅读这一篇强烈建议先阅读GPS卫星位置解算。

为了计算卫星速度,需要对卫星的位置求导。

计算各参变量对时间的导数如下:
M ˙ k = n \dot{M}_k = n M˙k=n
E ˙ k = M ˙ k 1 − e cos ⁡ E k \dot{E}_k = \frac{\dot{M}_k}{1-e\cos E_k} E˙k=1ecosEkM˙k
ν ˙ k = 1 − e 2 E ˙ k 1 − e cos ⁡ E k \dot{\nu}_k = \frac{\sqrt{1-e^2}\dot{E}_k}{1-e\cos E_k} ν˙k=1ecosEk1e2 E˙k
Φ ˙ k = ν ˙ k \dot{\Phi}_k = \dot{\nu}_k Φ˙k=ν˙k
δ u ˙ k = 2 Φ ˙ k ( C u s cos ⁡ 2 Φ k − C u c sin ⁡ 2 Φ k ) \delta\dot{u}_k = 2\dot{\Phi}_k(C_{us}\cos2\Phi_k - C_{uc}\sin2\Phi_k) δu˙k=2Φ˙k(Cuscos2ΦkCucsin2Φk)
δ r ˙ k = 2 Φ ˙ k ( C r s cos ⁡ 2 Φ k − C r c sin ⁡ 2 Φ k ) \delta\dot{r}_k = 2\dot{\Phi}_k(C_{rs}\cos2\Phi_k - C_{rc}\sin2\Phi_k) δr˙k=2Φ˙k(Crscos2ΦkCrcsin2Φk)
δ i ˙ k = 2 Φ ˙ k ( C i s cos ⁡ 2 Φ k − C i c sin ⁡ 2 Φ k ) \delta\dot{i}_k = 2\dot{\Phi}_k(C_{is}\cos2\Phi_k - C_{ic}\sin2\Phi_k) δi˙k=2Φ˙k(Ciscos2ΦkCicsin2Φk)
Ω ˙ k = Ω ˙ − Ω ˙ e \dot{\Omega}_k = \dot{\Omega} - \dot{\Omega}_e Ω˙k=Ω˙Ω˙e
i ˙ k = i ˙ + δ i ˙ k \dot{i}_k = \dot{i} + \delta\dot{i}_k i˙k=i˙+δi˙k
r ˙ k = A e E ˙ k sin ⁡ E k + δ r ˙ k \dot{r}_k = Ae\dot{E}_k\sin E_k + \delta\dot{r}_k r˙k=AeE˙ksinEk+δr˙k
u ˙ k = Φ ˙ k + δ u ˙ k \dot{u}_k = \dot{\Phi}_k + \delta\dot{u}_k u˙k=Φ˙k+δu˙k

计算卫星在轨道平面内的速度和WGS-84坐标系中的速度如下:
x ˙ k ′ = r ˙ k cos ⁡ u k − r k u ˙ k sin ⁡ u k \dot{x}'_k = \dot{r}_k\cos u_k - r_k \dot{u}_k \sin u_k x˙k=r˙kcosukrku˙ksinuk
y ˙ k ′ = r ˙ k sin ⁡ u k + r k u ˙ k cos ⁡ u k \dot{y}'_k = \dot{r}_k\sin u_k + r_k \dot{u}_k \cos u_k y˙k=r˙ksinuk+rku˙kcosuk
x ˙ k = − y k Ω ˙ k − ( y ˙ k ′ cos ⁡ i k − z k i ˙ k ) sin ⁡ Ω k + x ˙ k ′ cos ⁡ Ω k \dot{x}_k = -y_k\dot{\Omega}_k - (\dot{y}'_k\cos i_k - z_k\dot{i}_k)\sin\Omega_k + \dot{x}'_k\cos\Omega_k x˙k=ykΩ˙k(y˙kcosikzki˙k)sinΩk+x˙kcosΩk
y ˙ k = x k Ω ˙ k + ( y ˙ k ′ cos ⁡ i k − z k i ˙ k ) cos ⁡ Ω k + x ˙ k ′ sin ⁡ Ω k \dot{y}_k = x_k\dot{\Omega}_k + (\dot{y}'_k\cos i_k - z_k\dot{i}_k)\cos\Omega_k + \dot{x}'_k\sin\Omega_k y˙k=xkΩ˙k+(y˙kcosikzki˙k)cosΩk+x˙ksinΩk
z ˙ k = y ˙ k ′ sin ⁡ i k + y k ′ i ˙ k cos ⁡ i k \dot{z}_k = \dot{y}'_k\sin i_k + y'_k\dot{i}_k\cos i_k z˙k=y˙ksinik+yki˙kcosik

在之前的位置解算的过程中,我们已经求得了很多中间变量,利用以上公式,即可求得卫星速度。
代码如下:

M_k_Dot = n
E_k_Dot = M_k_Dot/(1-e*math.cos(E_k))
nu_k_Dot = math.sqrt(1-e**2)*E_k_Dot/(1-e*math.cos(E_k))
Phi_k_Dot = nu_k_Dot
delta_u_k_Dot = 2*Phi_k_Dot*(Cus*math.cos(2*Phi_k) - Cuc*math.sin(2*Phi_k))
delta_r_k_Dot = 2*Phi_k_Dot*(Crs*math.cos(2*Phi_k) - Crc*math.sin(2*Phi_k))
delta_i_k_Dot = 2*Phi_k_Dot*(Cis*math.cos(2*Phi_k) - Cic*math.sin(2*Phi_k))
Omega_k_Dot = Omega_Dot - Omega_e_Dot
i_k_Dot = i_Dot + delta_i_k_Dot
r_k_Dot = A*e*E_k_Dot*math.sin(E_k) + delta_r_k_Dot
u_k_Dot = Phi_k_Dot + delta_u_k_Dot


x_p_k_Dot = r_k_Dot*math.cos(u_k) - r_k*u_k_Dot*math.sin(u_k)
y_p_k_Dot = r_k_Dot*math.sin(u_k) + r_k*u_k_Dot*math.cos(u_k)

x_k_Dot = -y_k*Omega_k_Dot - (y_p_k_Dot*math.cos(i_k) - z_k*i_k_Dot)*math.sin(Omega_k) + x_p_k_Dot*math.cos(Omega_k)
y_k_Dot = x_k*Omega_k_Dot + (y_p_k_Dot*math.cos(i_k) - z_k*i_k_Dot)*math.cos(Omega_k) + x_p_k_Dot*math.sin(Omega_k)
z_k_Dot = y_p_k_Dot*math.sin(i_k) + y_p_k*i_k_Dot*math.cos(i_k)

print("x_k_Dot={}".format(x_k_Dot))
print("y_k_Dot={}".format(y_k_Dot))
print("z_k_Dot={}".format(z_k_Dot))

用GPS卫星位置解算中的数据进行解算,可以得到卫星在WGS-84坐标系中的速度为:
[ x ˙ k y ˙ k z ˙ k ] = [ 1088.4093298528 2189.0005213284817 − 1527.1796186285617 ] ( 米 / 秒 ) \left[ \begin{array}{r} \dot{x}_k \\ \dot{y}_k \\ \dot{z}_k \end{array} \right]= \left[ \begin{array}{c} 1088.4093298528 \\ 2189.0005213284817 \\ -1527.1796186285617 \end{array} \right](米/秒) x˙ky˙kz˙k=1088.40932985282189.00052132848171527.1796186285617(/)

你可能感兴趣的:(GNSS)