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

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

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

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

计算各参变量对时间的导数如下:
M ˙ k = n \dot{M}_k = n
E ˙ k = M ˙ k 1 e cos E k \dot{E}_k = \frac{\dot{M}_k}{1-e\cos E_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 = ν ˙ k \dot{\Phi}_k = \dot{\nu}_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)
δ 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)
δ 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)
Ω ˙ k = Ω ˙ Ω ˙ e \dot{\Omega}_k = \dot{\Omega} - \dot{\Omega}_e
i ˙ k = i ˙ + δ i ˙ k \dot{i}_k = \dot{i} + \delta\dot{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
u ˙ k = Φ ˙ k + δ u ˙ k \dot{u}_k = \dot{\Phi}_k + \delta\dot{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
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
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
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
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

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

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](米/秒)

发布了63 篇原创文章 · 获赞 16 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/tyst08/article/details/102769591