A = A_sqrt**2 # 卫星轨道半长轴
print("A={}".format(A))

上一篇讲了开普勒轨道参数,根据这些参数就可以确定卫星的位置,这一篇我们来实际计算一下。

WGS-84基本参数

首先给出几个WGS-84坐标系中的基本参数:

Python代码如下:

# WGS-84基本参数
a = 6378137 # 基准椭球体长半径(m)
f = 1/298.257223563 # 基准椭球体扁率
Omega_e_Dot = 7.2921151467e-5 # 地球自转角速度(rad/s)
mu = 3.986005e14 # 地球引力常数GM(m^3/s^2)
c = 2.99792458e8 # 真空中的光速(m/s)

星历参数

从网站 ftp://cddis.nasa.gov/gnss/data 下载2019年国庆(10月1日)当天的星历数据,可以得到星历参数的值,Python代码如下:

# 星历参数
t_oe = 2.016000000000E+05
A_sqrt = 5.153681812286E+03
e = 1.475233526435E-02
i_0 = 9.590228562257E-01
Omega_0 = -1.091936976129E-01
omega = 6.837269280624E-01
M_0 = 1.699075304872E+00
Delta_n = 4.599120143243E-09
i_Dot = -3.957307694893E-10
Omega_Dot = -8.244629136182E-09
Cuc = -5.902722477913E-06
Cus = 9.264796972275E-06
Crc = 2.046875000000E+02
Crs = -1.155625000000E+02
Cic = -3.259629011154E-07
Cis = 5.774199962616E-08

下面开始计算。

计算卫星轨道半长轴

A = A_sqrt**2 # 卫星轨道半长轴
print("A={}".format(A))

可得 A=26560436.222287513(米)

计算规化时间

A = A_sqrt**2 # 卫星轨道半长轴
t = 1.993680000000E+05
t_k = t - t_oe
if t_k > 302400:t_k -= 604800
if t_k < -302400:t_k += 604800
if -7200 <= t_k and t_k <= 7200:print("t_k={}".format(t_k))
else:print("time t={} is not valid".format(t))

代码如下:

# 平近点角
M_k = M_0 + n*t_k
if M_k < 0:M_k += 2*math.pi
if M_k > 2*math.pi:M_k -= 2*math.pi
print("M_k={}".format(M_k))# 偏近点角
E_old = M_k
E_new = M_k + e*math.sin(E_old)
i = 1
while abs(E_new - E_old)>1e-8:print("i={},E={}".format(i, E_new))E_old = E_newE_new = M_k + e*math.sin(E_old)i += 1if (i>10):breakE_k = E_new
print("E_k={}".format(E_k))# 真近点角
cosNu_k = (math.cos(E_k) - e) / (1 - e*math.cos(E_k))
sinNu_k = (math.sqrt(1-e**2)*math.sin(E_k)) / (1 - e*math.cos(E_k))
print("cosNu_k={}".format(cosNu_k))
print("sinNu_k={}".format(sinNu_k))if cosNu_k == 0:if sinNu_k > 0:Nu_k = math.pi/2else:Nu_k = -math.pi/2
else:Nu_k = math.atan(sinNu_k/cosNu_k)if cosNu_k < 0:if sinNu_k >= 0:Nu_k += math.pielse:Nu_k -= math.piprint("Nu_k={}".format(Nu_k))

根据以下关系计算

代码如下:

delta_u_k = Cus*math.sin(2*Phi_k) + Cuc*math.cos(2*Phi_k)
delta_r_k = Crs*math.sin(2*Phi_k) + Crc*math.cos(2*Phi_k)
delta_i_k = Cis*math.sin(2*Phi_k) + Cic*math.cos(2*Phi_k)
print("delta_u_k={}".format(delta_u_k))
print("delta_r_k={}".format(delta_r_k))
print("delta_i_k={}".format(delta_i_k))u_k = Phi_k + delta_u_k
r_k = A*(1-e*math.cos(E_k)) + delta_r_k
i_k = i_0 + i_Dot*t_k + delta_i_k
print("u_k={}".format(u_k))
print("r_k={}".format(r_k))
print("i_k={}".format(i_k))

代码如下:

x_p_k = r_k * math.cos(u_k)
y_p_k = r_k * math.sin(u_k)
print("x_p_k={}".format(x_p_k))
print("y_p_k={}".format(y_p_k))Omega_k = Omega_0 + (Omega_Dot - Omega_e_Dot)*t_k - Omega_e_Dot*t_oe
print("Omega_k={}".format(Omega_k))x_k = x_p_k*math.cos(Omega_k) - y_p_k*math.cos(i_k)*math.sin(Omega_k)
y_k = x_p_k*math.sin(Omega_k) + y_p_k*math.cos(i_k)*math.cos(Omega_k)
z_k = y_p_k*math.sin(i_k)
print("x_k={}".format(x_k))
print("y_k={}".format(y_k))
print("z_k={}".format(z_k))

GPS基础知识(七)、GPS卫星位置解算相关推荐

  1. GPS从入门到放弃(七) --- GPS卫星位置解算

    GPS从入门到放弃(七) - GPS卫星位置解算 上一篇讲了开普勒轨道参数,根据这些参数就可以确定卫星的位置,这一篇我们来实际计算一下. WGS-84基本参数 首先给出几个WGS-84坐标系中的基本参 ...

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

    GPS从入门到放弃(八) - GPS卫星速度解算 在阅读这一篇强烈建议先阅读GPS卫星位置解算. 为了计算卫星速度,需要对卫星的位置求导. 计算各参变量对时间的导数如下: M˙k=n\dot{M}_k ...

  3. [Python从零到壹] 八.数据库之MySQL和Sqlite基础知识及操作万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. 纹理基础知识和过滤模式详解

    转载自 纹理基础知识和过滤模式详解 1. 为什么在纹理采样时候需要 texture filter (纹理过滤) 我们的纹理 要贴到三维图形表面,而三维图形上的pixel中心与纹理上的texel中心并不 ...

  5. GPS接收机设计(5)——定位解算

    1.流程图 (待补充,没人看就不补充了......) 2.代码解析 function [navSolutions, eph] = postNavigation(trackResults, settin ...

  6. RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置)

    RoboMaster视觉教程(6)目标位置解算(PnP求解目标与摄像头间的相对位置) 概览 算法原理 solvePnP的使用流程 实验:测量二维码相对于摄像头的位置 RoboMaster视觉程序中的位 ...

  7. RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角)

    RoboMaster视觉教程(5)目标位置解算(通过像素点获取转角) 概览 直接使用像素坐标的缺陷 摄像头标定 根据小孔成像原理得到需要的转角 角度测量验证 概览 在识别到目标后,有一个很重要的问题: ...

  8. GPS基础知识(十) 、定位方程解算和定位精度

    上一篇伪距与载波相位中我们介绍了伪距的计算方法,也得到了包含 四个未知数的GPS定位基本方程: 那么根据这个方程我们怎么来定位呢? 根据我们第一篇GPS基础原理讲过GPS的基本原理,只需已知四颗卫星的 ...

  9. GNSS的基础知识 (GPS定位原理和组成)(1)

    在这里读了很多关于GNSS的贴子.里面的内容有的是直接翻译外文的文献,也有完全是自己写的. 我准备从今天开始不定期的更新一些关于GNSS 的知识.一是为了分享和探讨,二是记录一下自认为有用的东西,整理 ...

最新文章

  1. 语音合成android代码,百度 TTS 语音合成-Android
  2. Nature子刊:你想成为生物信息学家?
  3. 有趣又好玩的glm库
  4. VTK:PolyData之ThresholdPoints
  5. JAVA数据类型及字符编码
  6. Spring开启注解AOP的支持放置的位置
  7. 俞永福卸任阿里大文娱董事长,改任 eWTP 投资组长
  8. c/c++教程 - 总集1. c基础语法
  9. Android - Broadcast机制
  10. WinCC7.3 Win764位系统安装教程
  11. 阵列信号处理-学习笔记001
  12. 微型计算机原理及应用课程复习与考研指导,微机原理及应用课程复习.doc
  13. Javac源码简单分析之解析和填充符号表
  14. localhost无法连接mysql_详细解说MySQL通过localhost无法连接数据库的问题解决
  15. zutuanxue.com-Linux终端的使用
  16. 研究型论文框架及阅读文献方法
  17. 服务器系统排行榜,服务器操作系统排行榜
  18. css弹性盒子--弹性布局flex-grow、flex-shrink、flex-basis详解
  19. 4.1内网穿透-holer,实现外网访问地址,此处用于webhook地址
  20. Ubuntu20中使用AirSim--亲测可用

热门文章

  1. 生物-大脑极限:大脑极限
  2. Python_Pandas_处理数据的缺失值和重复值
  3. 身份证验证 校验码_用户身份验证最佳做法清单
  4. (CODE:3 MEDIA_ERR_DECODE) Playback cannot continue. No available working or supported playlists
  5. H5页面中添加微信公众号关注链接
  6. 新生研讨课课后感悟2
  7. mysql5.7 删除复制_mysql5.7实现主从复制以及产生问题记录
  8. 【人工智能】观看人工智能 (AI) 入门课程,一起来看看都讲了什么
  9. 电动汽车充电接口通信协议
  10. 微信小程序开发-新闻列表之新闻列表绑定