GPS广播星历计算卫星位置和速度

合集下载

读取广播星历文件计算卫星位置及显示读取原始观测文件实现单点定位

读取广播星历文件计算卫星位置及显示读取原始观测文件实现单点定位

读取广播星历文件计算卫星位置及显示读取原始观测文件实现单点定位单点定位是一种基本的卫星定位方法,通过读取广播星历文件和原始观测文件,可以计算出卫星的位置,并进行显示。

首先,我们需要读取广播星历文件。

广播星历文件中包含了卫星的轨道信息,可以通过它来计算卫星的位置。

广播星历文件通常是以文本格式存储的,包含了每颗卫星的编号、时间、位置、速度等信息。

我们需要逐行读取文件,并将每颗卫星的信息提取出来。

1.打开星历文件,使用文件流读取文件内容。

2.逐行读取文件内容,将每行数据存储为字符串。

3.提取有用的信息,例如卫星编号、时间、位置、速度等。

4.将提取的信息存储到数据结构中,例如列表或字典,便于后续计算和显示。

在读取星历文件时需要注意的是,星历文件可能是以不同格式存储的,例如SP3格式、RINEX格式等,需要根据实际情况选择相应的解析方法。

接下来,我们需要读取原始观测文件。

原始观测文件包含了接收机对卫星信号的观测结果,通常包括时间、卫星编号、接收机接收到的卫星信号信息等。

通过观测文件,我们可以得到接收机与卫星之间的距离,从而实现单点定位。

读取原始观测文件的大致步骤如下:1.打开观测文件,使用文件流读取文件内容。

2.逐行读取文件内容,将每行数据存储为字符串。

3.提取有用的信息,例如时间、卫星编号、观测结果等。

4.根据卫星编号和广播星历文件中的数据,计算出接收机与卫星之间的距离。

在读取观测文件时需要注意的是,观测文件也可能是以不同格式存储的,例如RINEX格式、UBX格式等,需要根据实际情况选择相应的解析方法。

计算卫星位置的方法有多种,常用的方法包括伪距定位(Pseudorange Positioning)、载波相位定位(Carrier Phase Positioning)等。

伪距定位是一种简单、常用的卫星定位方法,通过接收机和卫星之间的距离差(伪距)计算出接收机的位置。

单点定位的大致步骤如下:1.获取接收机的位置,可以通过其他方法获得,例如使用全球定位系统(GPS)接收机或输入当前位置坐标。

从广播星历计算卫星位置

从广播星历计算卫星位置

从广播星历计算卫星位置: 1. 计算卫星运动的平均角速度n首先根据广播星历中给出的参数A 计算出参考时刻TOE 的平均角速度0n :30)(A GM n =,式中,GM 为万有引力常数G 与地球总质量M 之积。

然后根据广播星历中给出的摄动参数n ∆计算观测时刻卫星的平均角速度n :n n n ∆+=0。

2. 计算观测瞬间卫星的平近点角M :)(0TOE t n M M -+=式中,0M 为参考时刻TOE 时的平近点角,由广播星历给出。

3. 计算偏近点角E :E e M E sin +=解上述方程可用迭代法或微分方程改正法。

4. 计算真近点角f⎪⎪⎩⎪⎪⎨⎧--=--=E e E e f Ee e Ef cos 1sin 1sin cos 1cos cos 2式中,e 为卫星轨道的偏心率,由广播星历给出。

5. 计算升交距角u ':f u +='ω式中,ω为近地点角距,由广播星历给出。

6. 计算摄动改正项i r u δδδ,,:广播星历中给出了下列6个摄动参数:is ic rs rc us uc C C C C C C ,,,,,,据此可以求出由于2J 项而引起的升交距角u 的摄动改正项u δ、卫星矢径r 的摄动改正项u δ和卫星轨道倾角i 的摄动改正项i δ。

计算公式如下:⎪⎩⎪⎨⎧'+'='+'='+'=u C u C u C u C u C u C is ic irs rc r us uc u 2sin 2cos 2sin 2cos 2sin 2cos δδδ 7. 计算0,,i r u ''进行摄动改正⎪⎪⎩⎪⎪⎨⎧-++=+-=+'=+'=)()cos 1(0TOE t dt di i i E a r r u u i r r u δδδδ 式中:a 为卫星轨道的长半径,2)(A a =,0i 为TOE 时刻的轨道倾角,由广播星历中的开普勒六参数给出,dtdi为i 的变化率,由广播星历中的摄动九参数给出。

GPS卫星的坐标计算

GPS卫星的坐标计算

第三章GPS 卫星的坐标计算在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。

卫星位置的计算是根据卫星导航电文所提供的轨道参数按一定的公式计算的。

3.1卫星运动的轨道参数3.1.1基本概念 1.作用在卫星上力卫星受的作用力主要有:地球对卫星的引力,太阳、月亮对卫星的引力,大气阻力,大气光压,地球潮汐力等。

中心力:假设地球为匀质球体的引力(质量集中于球体的中心),即地球的中心引力,它决定卫星运动的基本规律和特征,决定卫星轨道,是分析卫星实际轨道的基础。

此种理想状态时卫星的运动称为无摄运动,卫星的轨道称为无摄轨道。

摄动力:也称非中心力,包括地球非球形对称的作用力、日月引力、大气阻力、大气光压、地球潮汐力等。

摄动力使卫星运动产生一些小的附加变化而偏离理想轨道,同时这种偏离量的大小随时间而改变。

此种状态时卫星的运动称为受摄运动,卫星的轨道称为受摄轨道。

虽然作用在卫星上的力很多,但这些力的大小却相差很悬殊。

如果将地球引力当作1的话,其它作用力均小于10-5。

2.二体问题研究两个质点在万有引力作用下的运动规律问题称为二体问题。

3.卫星轨道和卫星轨道参数卫星在空间运行的轨迹称为卫星轨道。

描述卫星轨道状态和位置的参数称为轨道参数。

3.1.2卫星运动的开普勒定律 (1)开普勒第一定律卫星运行的轨道为一椭圆,该椭圆的一个焦点与地球质心重合。

此定律阐明了卫星运行轨道的基本形态及其与地心的关系。

由万有引力定律可得卫星绕地球质心运动的轨道方程。

r 为卫星的地心距离,as 为开普勒椭圆的长半径,es 为开普勒椭圆的偏心率;fs 为真近点角,它描述了任意时刻卫星在轨道上相对近地点的位置,是时间的函数。

(2)开普勒第二定律卫星的地心向径在单位时间内所扫过的面积相等。

表明卫星在椭圆轨道上的运行速度是不断变化的,在近地点处速度最大,在远地点处速度最小。

近地点远地点ss s s f e e a r cos 1)1(2+-=(3卫星运行周期的平方与轨道椭圆长半径的立方之比为一常量,等于GM 的倒数。

GPS广播星历计算卫星位置和速度

GPS广播星历计算卫星位置和速度

GPS广播星历计算卫星位置和速度GPS(全球定位系统)是一种通过卫星定位的技术,它利用卫星发射的广播星历来计算卫星的位置和速度。

星历数据是需要事先计算和上传给卫星的。

在GPS系统中,有31颗运行在中轨道上的卫星,其中至少有24颗是激活状态的。

这些卫星分布在不同的轨道上,每个轨道上约有4颗卫星。

卫星轨道分为6个球形环,每个环的倾角不同,倾角越大表示距离地球赤道越远。

每颗GPS卫星都具有精确的时钟,它们通过广播信号发送自身的位置和速度信息。

这些广播信号被接收器接收后,通过计算接收时间差来确定卫星与接收器之间的距离。

利用三个以上的卫星的广播信号,可以计算出接收器所在的位置。

星历数据是卫星的位置和速度信息,它用于计算接收器附近的卫星位置和速度。

星历数据包括每颗卫星的轨道参数(半长轴、偏心率、轨道倾角、升交点赤经、近地点幅角、运动角频率)、卫星钟差和卫星偏差改正参数等。

星历数据的计算是一个复杂的过程,需要考虑多个因素。

首先,需要从测量数据中估算卫星位置和速度。

接着,根据卫星轨道的数学模型和测量数据,通过插值和拟合等算法计算出卫星的位置和速度数据。

最后,通过计算误差和改正项进行数据校正。

这些校正项包括大气延迟、钟差、轨道摄动等。

星历数据的计算过程是集中在地面控制站完成的,然后通过双向通信链路上传给卫星。

卫星接收到星历数据后,会将其存储在内部存储器中,并通过广播信号发送给地面的接收器。

在接收器接收到卫星广播信号后,会利用星历数据来计算卫星与接收器之间的距离。

首先,接收器会粗略估算卫星位置,然后通过星历数据进行细化校正,最终得到精确的卫星位置和速度信息。

利用卫星位置和速度信息,接收器可以计算出自身的位置。

通过接收多个卫星的广播信号,接收器可以确定自身在地球的经度、纬度和海拔高度。

在接收器上,还可以通过计算卫星位置的变化来确定速度。

通过不同时刻测量卫星位置的变化,可以计算出接收器的速度矢量。

总结起来,GPS广播星历是用于计算卫星位置和速度的关键数据。

GPS(5):GPS星历计算

GPS(5):GPS星历计算

1.2、广播星历文件格式(2)

• • • • • • • • • • • • • • • •
+--------------------------------+--------------------------------------------------------+-----------------+ *|ION ALPHA | Ionosphere parameters A0-A3 of almanac | 2X,4D12.4 |* | | (page 18 of subframe 4) | | +--------------------------------+---------------------------------------------------------+----------------+ *|ION BETA | Ionosphere parameters B0-B3 of almanac | 2X,4D12.4 |* +---------------------------------+--------------------------------------------------------+----------------+ *|DELTA-UTC: A0,A1,T,W | Almanac parameters to compute time in UTC | 3X,2D19.12, |* | | (page 18 of subframe 4) | 2I9 | | | A0,A1: terms of polynomial | | | | T : reference time for UTC data | *) || | | W : UTC reference week number. | | | | Continuous number, not mod(1024)! | | +---------------------------------+-------------------------------------------------------+-----------------+ *|LEAP SECONDS | Delta time due to leap seconds | I6 |* +--------------------------------+--------------------------------------------------------+-----------------+ |END OF HEADER | Last record in the header section. | 60X | +--------------------------------+--------------------------------------------------------+-----------------+

GPS广播星历参数说明

GPS广播星历参数说明
GPS广播星历参数说明
序号
符号
名称
单位
1
卫星PRN号
卫星编号
---
2

年份后两位
a
3

月份
mon
4

日期
d
5


h6Leabharlann 分分min
7


s
8
卫星钟差常数项
s
9
卫星钟差漂移项
s/s
10
卫星钟差漂移速率项
s/s2
11
星历数据的年龄
12
在星历参考时刻 在轨道径向方向上周期改正正弦项的振幅
m
13
平近点角的长期变化(近地点参数)
rad/s
28
Code on channel
29
GPS星期数
30
P data flag
31
本广播星历精度指标
m
32
卫星是否健康指标
33
电离层群延迟改正参数
s
34
卫星钟数据年龄
35
信息传送时间(与接收机对接收到的卫星信号解码有关)
s
rad/s
14
参考时刻的平近点角
rad
15
在星历参考时刻 在轨道延迹方向上周期改正余弦项的振幅
rad
16
偏心率
17
在星历参考时刻 在轨道延迹方向上周期改正正弦项的振幅
rad
18
长半轴的平方根
m1/2
19
星历参考时刻(星期中的秒数)
s
20
在星历参考时刻 轨道倾角(近似于法向)周期改正余弦项的振幅
rad
21

广播星历的名词解释

广播星历的名词解释

广播星历的名词解释广播星历是一种用于卫星导航系统的重要数据源,广泛应用于全球定位系统(GPS)和其他卫星导航系统中。

它提供了卫星位置、速度以及时间等信息,帮助用户确定其精确的地理位置和导航方向。

在本文中,我们将详细解释广播星历的含义、作用以及相关的技术原理,以帮助读者更好地理解广播星历的重要性。

一、广播星历的定义广播星历指的是卫星导航系统通过无线电信号将卫星的轨道参数等信息广播到用户终端,以便用户准确进行定位和导航的一种数据格式。

它包含了卫星编号、卫星位置、速度、钟差等信息,以及其他一些校验和控制数据。

用户通过接收卫星发送的广播星历数据,根据其中的信息进行计算,从而确定其准确的地理位置。

二、广播星历的作用广播星历在卫星导航系统中起着至关重要的作用。

首先,它是用户终端确定自身位置所必需的数据源。

用户终端通过接收到的广播星历数据,根据卫星的位置和其他参数,进行复杂的计算和推算,从而确定自身的地理位置。

其次,广播星历还提供了卫星的速度和时间等信息,为用户终端提供了更为准确和可靠的导航指引。

三、广播星历的技术原理广播星历的传输技术主要借助无线电信号,通过卫星发射到空中,由用户设备接收并解码。

卫星导航系统通过卫星上搭载的精密钟表不断生成星历数据,并定期对其进行更新。

然后,系统将更新后的星历数据编码成特定格式,通过卫星的无线电信号进行广播。

用户设备接收到信号后,通过信号解码器将广播星历数据还原,并基于其中的信息进行位置计算。

四、广播星历的特点广播星历具有以下几个特点。

首先,广播星历的数据是间接测量而得,其定位精度受到卫星本身定位误差、卫星钟差以及传输和接收误差等多种因素的影响。

因此,在实际应用中,需要对广播星历数据进行相应的纠正和校准。

其次,广播星历具有广播性质,任何连接到卫星导航系统的用户终端都可以接收到相同的广播星历数据,这意味着无需与地面的信息中心进行实时的数据交换。

最后,广播星历具有一定的延迟性,即卫星发送的星历数据需要经过一定的传输时间才能到达用户终端,因此,在位置计算时需要考虑这种延迟。

GPS考试名词解释简答

GPS考试名词解释简答

1卫星星历:是描述卫星运动轨道的信息,是一组对应某一时刻的轨道根数及其变率。

根据卫星星历可以计算出任时刻的卫星位置及其速度,GPS卫星星历分为预报星历和后处理星历。

2广播星历:是定位卫星发播的无线电信号上载有预报一定时间内卫星根数的电文信息。

3导航电文:导航信息的二进制数据码。

包括卫星星历、时钟改正数、卫星工作状态、轨道摄动改正、大气折射改正等信息。

4无摄运动:仅考虑地球质心引力作用的卫星运动称为无摄运动。

5受摄运动:在摄动力的作用下的卫星运动称为受摄运动。

6载波重建:重建载波相位是输入的(经多普勒位移的)GPS载波相位与接收仪产生的(名为固定的)参考频率相位,两者之的差。

7周跳:在GPS载波相位观测中,因卫星信号失锁引起的相位整周跳变。

8章动:指真北天极绕平北天极所做的顺时针椭圆运动。

9重复基线闭合差:当某条基线被两个或多个时段观测时,就构成了所谓的重复基线闭合差条件。

(不同观测时段,对于同一条基线的观测结果就是重复基线)10世界时:以平子夜为0时起算的格林威治平太阳时UT。

11岁差:地球在绕太阳运行时,地球自转轴的方向在天球上缓慢移动,春分点在黄道上随之缓慢移动的现象。

12黄道:地球绕太阳公转的轨道平面称为黄道面,它与天球相交的大圆称为黄道。

它就是当地球绕太阳公转时,观测者所看到的太阳在天球上运动的轨道。

13 伪距:GPS定位采用的是被动式单程测距。

它的信号发射时刻是卫星钟确定的,收到时刻则是由接收机钟确定的,这就在测定的卫星至接收机的距离中,不可避免地包含着两台钟不同步的误差影响,所以称其为伪距。

14整周未知数:指卫星信号从发射时刻到接收机接受时刻这个阶段载波的整个周数。

15升交点:指当卫星轨道平面与地球赤道平面的夹角即轨道倾角不等于零时,轨道与赤道面有两个交点,卫星由南向北飞行时的交点称为升交点。

16升交点赤经:含地轴和春分点的子午面与含地轴和升交点的子午面之间的交角等。

17真近点角:天体从近点起沿轨道运动时其向径扫过的角度。

从广播星历计算卫星位置

从广播星历计算卫星位置

从广播星历计算卫星位置:1. 计算卫星运动的平均角速度n首先根据广播星历中给出的参数A 计算出参考时刻TOE 的平均角速度0n :30)(A GMn =,式中,GM 为万有引力常数G 与地球总质量M 之积。

然后根据广播星历中给出的摄动参数n ∆计算观测时刻卫星的平均角速度n :n n n ∆+=0。

2. 计算观测瞬间卫星的平近点角M :式中,0M 为参考时刻TOE 时的平近点角,由广播星历给出。

3. 计算偏近点角E :解上述方程可用迭代法或微分方程改正法。

4. 计算真近点角f式中,e 为卫星轨道的偏心率,由广播星历给出。

5. 计算升交距角u ':式中,ω为近地点角距,由广播星历给出。

6. 计算摄动改正项i r u δδδ,,:广播星历中给出了下列6个摄动参数:is ic rs rc us uc C C C C C C ,,,,,,据此可以求出由于2J 项而引起的升交距角u 的摄动改正项u δ、卫星矢径r 的摄动改正项u δ和卫星轨道倾角i 的摄动改正项i δ。

计算公式如下:7. 计算0,,i r u ''进行摄动改正式中:a 为卫星轨道的长半径,2)(A a =,0i 为TOE 时刻的轨道倾角,由广播星历中的开普勒六参数给出,dtdi 为i 的变化率,由广播星历中的摄动九参数给出。

8. 计算卫星在轨道面坐标系中的位置在轨道平面直角坐标系中(坐标原点位于地心,X 轴指向升交点)卫星的平面直角坐标为:9. 计算观测瞬间升交点的经度L若参考时刻TOE 时升交点的赤经为TOE Ω,升交点对时间的变化率Ω,那么观测瞬间t 的升交点赤经Ω应为:Ω可从广播星历的摄动参数中给出。

设本周开始时刻(星期日0时)格林尼治恒星时为week GAST ,则观测瞬间的格林尼治恒星时为:式中:e ω为地球自转角速度;t 为本周内的时间)(s 。

这样就可求得观测瞬间升交点的经度值为:令week TO E GAST -Ω=Ω0,则有:t TOE t L e ω--Ω+Ω=)(010. 计算卫星在瞬时地球坐标系中的位置已知升交点的大地经度L 以及轨道平面的倾角i 后,就可通过两次旋转方便地求得卫星在地固坐标系中的位置:11. 计算卫星在协议地球坐标系中的位置观测瞬间卫星在协议地球坐标系中的位置。

gps经纬度计算速度的公式

gps经纬度计算速度的公式

gps经纬度计算速度的公式
GPS经纬度计算速度的公式为:速度= (经度变化量* 111.413 - 0.094 * 经度变化量的三次方根) / 时间变化量。

其中,经度变化量是指在一段时间内,经度的变化量(单位:度),时间变化量是指对应的时间段(单位:小时)。

这个公式的原理是基于经纬度与地球表面距离的关系,以及地球自转的影响。

具体来说,经度每变化1度,对应的地球表面距离约为111.413公里,但同时考虑到地球自转的影响,这个距离会略有变化,因此需要减去0.094乘以经度变化量的三次方根来进行修正。

需要注意的是,这个公式计算得到的速度是瞬时速度,即某一时间点上的速度。

如果要计算平均速度,需要对多个瞬时速度进行平均。

此外,由于GPS信号受到多
种因素的影响,包括大气干扰、多路径效应等,因此计算得到的速度可能会存在一定的误差。

GPS卫星坐标计算

GPS卫星坐标计算

卫星定位技术与方法--根据广播星历参数计算卫星坐标作业报告指导教师:熊永良班级:测绘二班学生姓名:段海东学生学号: 2 0 0 8 0 7 8 3作业日期:2010 年12月08 日目录一. 已知数据 (2)二. 计算步骤 (2)1.平均角速度 (mean angular speed) (2)2.规化时刻(normal time) (3)3.平近点角(mean anomaly) (3)4.偏近点角(eccentric anomaly) (3)5.真近点角(true anomaly) (3)6.升交距角(argument of ascending node) (3)7. 轨道向径(Orbital radius) (3)8. 扰动改正(Perturbed correction) (4)10.卫星在升交点轨道直角坐标系中的坐标 (4)11. 升交点经度(Longitude of ascending node) (5)三. 源程序 (5)四.程序运行结果 (14)七.作业体会 (15)根据广播星历参数计算卫星坐标一. 已知数据: 根据以下的广播星历参数计算UTC2004年1月30日8点0分00秒—20分00秒,每隔一分钟的PRN7的卫星坐标。

Compute the coordinate of PRN7 with interval of 1 minute.Navigation data:卫星导航文件格式:二. 计算步骤:The steps for satellite coordinates1.平均角速度 (mean angular speed):∆n 由广播星历获得, GM=3.986005e+14 nn n ∆+=030a GM n =2.规化时刻(normal time):t0已知(由广播星历获得),t 为GPS 周秒3.平近点角(mean anomaly):M0已知(由广播星历获得)4.偏近点角(eccentric anomaly):迭代求解:初始值取E=M ,以弧度为单位5.真近点角(true anomaly):6.升交距角(argument of ascending node):ω近地点角距(argument of perigee)7. 轨道向径(Orbital radius ):k k t n M M ⋅+=0)cos 1(k k E e a r ⋅-⋅=e E E e V k kk --=cos sin 1arctan 2k k k E e M E sin ⋅+=0t t t k -=ωφ+=k 0V8. 扰动改正(Perturbed correction ):• 升交角距(Argument of ascending node )•• 轨道向径(Orbital radius )• 轨道顷角(Orbital inclination )是升交角距 (the argument of ascending node)9. 改正后升交角距、轨道向径、轨道倾角改正后升交角距(Corrected argument of ascending nod )改正后的轨道向径(Corrected orbital radius)改正后的轨道倾角(Corrected orbital inclination )10.卫星在升交点轨道直角坐标系中的坐标:如下图所示0φ00i 2sin 2cos φφδiS iC C C +=00r 2sin 2cos φφδrS rC C C +=00u 2sin 2cos φφδuS uC C C +=rk k )cosE e 1(a r δ+⋅-⋅=u0k u δφ+=ki 0k t )IDOT (i i ++=δ11. 升交点经度(Longitude of ascending node ):如下图所示12. 在地固坐标系中的卫星位置(Expressed in spheric coordinate system )三. 源程序:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Text.RegularExpressions;kk k k k k sinu r y cosu r x ==s/rad 102921151467.7t t )(5-e 0e k e 0t ⨯=--Ω+Ω=ωωωλekk k k k k k k k k i y Z i y x Y i y x sin cos cos sin sin cos cos k k k k k =+=-=X λλλλnamespace Test{public partial class Form1 : Form{public Form1(){InitializeComponent();listView1.Columns.Add("序号", 40);listView1.Columns.Add("星历内容", 130);listView1.Columns.Add("导航数据", 130);listView1.GridLines = true; //显示表格线listView1.View = View.Details;//显示表格细节listView1.HeaderStyle = ColumnHeaderStyle.Clickable;//对表头进行设置listView2.Columns.Add("时间", 60);listView2.Columns.Add("x坐标", 150);listView2.Columns.Add("y坐标", 150);listView2.Columns.Add("z坐标", 150);listView2.GridLines = true; //显示表格线listView2.View = View.Details;//显示表格细节listView2.HeaderStyle = ColumnHeaderStyle.Clickable;//对表头进行设置}private void button1_Click(object sender, EventArgs e){//读取相对路径string str1 =AppDomain.CurrentDomain.SetupInformation.ApplicationBase;string filename = str1 + "navigation data.txt ";//读取卫星广播星历文件StreamReader myreader = new StreamReader(filename, Encoding.Default);string myinfo = myreader.ReadToEnd();myreader.Close();//把卫星广播星历里的D改为e,以便后续计算string mystring = myinfo;string myinfor = mystring;myinfor = mystring.Replace("D", "e");//把数据分开读入到一个数组中存储string[] split = new string[] { " " };string[] arrs = myinfor.Split(split,StringSplitOptions.RemoveEmptyEntries);double[] M = new double[arrs.Length];//星历代码string[] N = new string[arrs.Length];N[0] = "PRN"; N[1] = "Yer"; N[2] = "Mon"; N[3] = "day"; N[4] = "H"; N[5] = "M"; N[6] = "sec"; N[7] = "a0"; N[8] = "a1"; N[9] = "a2"; N[10] = "IODE"; N[11] = "Crs"; N[12] = "delta-n"; N[13] = "M0";N[14] = "Cuc"; N[15] = "e"; N[16] = "Cus"; N[17] = "sqrt(a)"; N[18] = "t0e"; N[19] = "Cic"; N[20] = "omega0"; N[21] = "Cis"; N[22] = "i0"; N[23] = "Crc"; N[24] = "omega"; N[25] = "omega-spot";N[26] = "IDOT"; N[27] = "Codes on L2 channel"; N[28] = "GPS Week"; N[29] = "L2 P data flag";N[30] = "SV accuracy"; N[31] = "SV health"; N[32] = "TGD"; N[33] = "IODC Issue of Data";N[34] = "Transmission time of message";//把卫星广播星历读入到数组中for (int i = 0; i < arrs.Length; i++){ListViewItem li = new ListViewItem();li.Text = (i + 1).ToString();li.SubItems.Add(N[i]);li.SubItems.Add(arrs[i]);listView1.Items.Add(li);M[i] = double.Parse(arrs[i]);}double t0e=460800.00;double t;double[] XK = new double[21];double[] YK = new double[21];double[] ZK = new double[21];for (int l = 0; l < 21;l++ ){//计算平均角速度double GM = 3986004.418e008;double n, n0;n0 = Math.Sqrt(GM / (Math.Pow(M[17], 6)));n = M[12] + n0;//规划时刻t=t0e+l*60;double tk = t-t0e;double Mk = M[13] + n * tk;// 迭代计算平近点角的计算double Ek, Ek1;Ek = Mk;Ek1 = Mk + M[15] * Math.Sin(Ek);do{Ek = Ek1;Ek1 = Mk + M[15] * Math.Sin(Ek);}while (Math.Abs(Ek1 - Ek) > 1e-15);//计算真近点角double Vk = Math.Atan(((Math.Sqrt(1 - M[15] * M[15]) * Math.Sin(Ek))) / (Math.Cos(Ek) - M[15]));//反正切值的象限处理double A1 = Math.Atan(((Math.Sqrt(1 - M[15] * M[15]) * Math.Sin(Ek))));double A2 = Math.Cos(Ek) - M[15];if (Vk < 0){if (A1 < 0 && A2 > 0){Vk += 2 * Math.PI;}if (A1 > 0 && A2 < 0){Vk += Math.PI;}}else{if (A1 <= 0 && A2 <= 0)Vk = Vk + Math.PI;}//计算升交角距double fk = Vk + M[24];//摄动改正值的计算double du = M[14] * Math.Cos(2 * fk) + M[16] * Math.Sin(2 * fk);double dr = M[23] * Math.Cos(2 * fk) + M[11] * Math.Sin(2 * fk);double di = M[19] * Math.Cos(2 * fk) + M[21] * Math.Sin(2 * fk);//摄动改正double uk = fk + du;double rk = Math.Pow(M[17], 2) * (1 - M[15] * Math.Cos(Ek))+ dr;double ik = M[22] + di + M[26] * tk;//计算卫星在升交点轨道直角坐标系的坐标double xk = rk * Math.Cos(uk);double yk = rk * Math.Sin(uk);//计算升交点经度double we = 7.2921151467e-05;double jdt = M[20] + (M[25] - we) * tk - we * M[18];//卫星在地固坐标系中的空间直角坐标XK[l] = xk * Math.Cos(jdt) - yk * Math.Cos(ik) * Math.Sin(jdt);YK[l] = xk * Math.Sin(jdt) + yk * Math.Cos(ik) * Math.Cos(jdt);ZK[l] = yk * Math.Sin(ik);}//输出卫星在地固坐标系中的空间直角坐标for (int i = 0; i < 21; i++){ListViewItem list = new ListViewItem();list.Text = "第" + i.ToString() + "分钟";list.SubItems.Add(XK[i].ToString());list.SubItems.Add(YK[i].ToString());list.SubItems.Add(ZK[i].ToString());listView2.Items.Add(list);}}private void button2_Click(object sender, EventArgs e) {//读取相对路径string str1 =AppDomain.CurrentDomain.SetupInformation.ApplicationBase;string filename = str1 + "navigation data.txt ";//读取卫星广播星历文件StreamReader myreader = new StreamReader(filename, Encoding.Default);string myinfo = myreader.ReadToEnd();myreader.Close();//把卫星广播星历里的D改为e,以便后续计算string mystring = myinfo;string myinfor = mystring;myinfor = mystring.Replace("D", "e");//把数据分开读入到一个数组中存储string[] split = new string[] { " " };string[] arrs = myinfor.Split(split, StringSplitOptions.RemoveEmptyEntries);//星历代码string[] N = new string[arrs.Length];N[0] = "PRN"; N[1] = "Yer"; N[2] = "Mon"; N[3] = "day"; N[4] = "H"; N[5] = "M"; N[6] = "sec"; N[7] = "a0"; N[8] = "a1"; N[9] = "a2"; N[10] = "IODE"; N[11] = "Crs"; N[12] = "delta-n"; N[13] = "M0";N[14] = "Cuc"; N[15] = "e"; N[16] = "Cus"; N[17] = "sqrt(a)"; N[18] = "t0e"; N[19] = "Cic"; N[20] = "omega0"; N[21] = "Cis"; N[22] = "i0"; N[23] = "Crc"; N[24] = "omega"; N[25] = "omega-spot";N[26] = "IDOT"; N[27] = "Codes on L2 channel"; N[28] = "GPS Week"; N[29] = "L2 P data flag";N[30] = "SV accuracy"; N[31] = "SV health"; N[32] = "TGD"; N[33] = "IODC Issue of Data";N[34] = "Transmission time of message";//把卫星广播星历文件内容输出到listView进行查看for (int i = 0; i < arrs.Length; i++){ListViewItem li = new ListViewItem();li.Text = (i + 1).ToString();li.SubItems.Add(N[i]);li.SubItems.Add(arrs[i]);listView1.Items.Add(li);}}}}四.程序运行结果:星历内容的读取、显示:卫星坐标计算结果:运行界面:作业体会:此次作业,收获颇多。

GPS卫星WGS-84坐标计算

GPS卫星WGS-84坐标计算

������������ = ������0 + ������������ + i������������ (9) 计算卫星在轨道平面上的坐标 ������������ = ������������ ������������������������������ ������������ = ������������ ������������������������������ (10) 计算观测时刻 t 的升交点经度������������ ������������ = Ω0 + Ω − ������������ ������������ − ������������ ������������������ (11) 计算卫星在 WGS-84 坐标系中的坐标 ������������ = ������������ ������������������������������ − ������������ ������������������������������ ������������������������������ ������������ = ������������ ������������������������������ + ������������ ������������������������������ ������������������������������ ������������ = ������������ ������������������������������
下面是用户位置Байду номын сангаас算
估计位置坐标表示估计位置与真实位置的偏移量

GPS 卫星的广播星历提供 16 个星历参数,其中包括 1 个参考时刻、6 个相应参考时刻的开普 勒轨道参数和 9 个轨道摄动修正参数。 用广播星历参数计算任一时刻 t 的卫星位置的步骤如 下: (1) 计算卫星运行的平均角速度 n 卫星运行的平均角速度������ = ������0 + ∆������,式中������0 =

GPS星历要点范文

GPS星历要点范文

GPS星历要点范文一、GPS星历的定义和作用1.GPS星历是指卫星轨道参数数据,包括卫星位置、速度和时钟差等信息。

2.GPS星历是导航接收机确定自身位置的基础数据,它通过计算卫星和接收机之间的距离来推算出接收机的位置。

3.GPS星历的更新频率较高,通常每2小时更新一次,以确保定位的准确性。

二、GPS星历的数据格式1.GPS星历数据有两种格式:广播星历和精密星历。

2.广播星历是由GPS卫星通过无线信号广播给全球的接收机,它包含了卫星的序号、健康状态、位置、速度、时钟差等信息。

3.精密星历是由地面控制站通过测量卫星信号并进行数据处理得到的,它比广播星历更加精确,能够提供更准确的定位结果。

三、GPS星历的更新和分发1.GPS星历的更新是由GPS卫星和地面控制站共同完成的,地面控制站负责测量卫星信号并计算星历参数,然后将更新后的星历数据上传到卫星中。

2.更新后的星历数据由卫星广播给全球范围内的接收机,接收机通过接收到的星历数据确定卫星的位置和时钟差等参数。

3.接收机还可以通过互联网等方式获取精密星历,以提高定位的准确性。

四、GPS星历的使用和影响因素1.GPS星历是导航接收机定位的重要数据源,它直接影响到定位的准确性和可靠性。

2.GPS星历的准确性受多种因素影响,包括卫星的状态、地球引力、大气层延迟、信号干扰等。

3.对于移动接收机,由于接收到的卫星信号会不断变化,因此定位的准确性也会随着时间的推移而下降,需要及时更新GPS星历。

五、GPS星历的维护和管理1.GPS星历的维护和管理是由GPS系统的运营商负责的,他们负责收集、处理和分发星历数据。

2.运营商会定期更新GPS星历数据,并通过卫星广播、互联网等方式分发给接收机。

六、GPS星历的发展趋势1.随着科技的不断发展,GPS星历的数据量和精确性将进一步提高,可以提供更高精度的定位结果。

2.GPS星历的更新频率可能会增加,以进一步提高定位的实时性和准确性。

3.GPS星历的使用范围也将扩大,不仅在导航领域有广泛应用,还可以用于精确测量和科学研究等领域。

GPS卫星位置的计算(C++程序计算)

GPS卫星位置的计算(C++程序计算)

GPS卫星位置的计算利用C++编写了一段能计算单一瞬时卫星坐标的程序,在运行程序之前,需做部分准备工作:(1)在F盘下建立一名为“单一卫星广播星历”的txt文件。

(2)从“广播星历.txt”文件中拷贝从卫星PRN号开始的8行数据到“单一卫星广播星历.txt”中(3)在编辑选项中,将全部的“D”替换为“E”。

下面为我所选取的一个广播星历:18 06 8 25 6 0 0.0-2.472363412380E-04-1.023*********E-12 0.000000000000E+001.410000000000E+02-1.721875000000E+01 4.502687555010E-09 1.413760604187E+00-7.990747690201E-07 7.598234573379E-03 1.118145883083E-05 5.153709835052E+034.536000000000E+05-1.303851604462E-08-1.095067942661E-01 1.527369022369E-079.571235745530E-01 1.640000000000E+02-2.656176299285E+00-8.0374********E-09-5.193073455211E-10 1.000000000000E+00 1.389000000000E+03 0.000000000000E+002.000000000000E+00 0.000000000000E+00-1.024*********E-08 1.410000000000E+024.464490000000E+05 4.000000000000E+00程序设计部分:#include<stdio.h>#include<math.h>int main(){int i = 0;double n[50], n0, nn, t, tk, Mk, Ek, Vk, Yk, Gu, Gr, Gi, uk, rk, ik, xk, yk, zk, X, Y, Z, Lk, UT, yy, mm, JD, gpsz;FILE *fp;fp = fopen("F:\\单一卫星广播星历.txt", "r");if (fp == NULL){printf ("文件打开失败!\n");return 0;}while (! feof (fp)){fscanf(fp, "%lf", &n[i]);i++;}n0 = (sqrt(3986005E+8))/pow(n[17], 3);nn = n0 + n[12];/*计算卫星运行的平均角速度*/UT = n[4] + (n[5] / 60) + (n[7] / 3600);/*民用日的时分秒化为实数时*/if (n[1] >= 80)/*广播星历中年只有后两位,化为4位,参考1980年1月6日0点*/ {if (n[1] == 80 && n[2] == 1 && n[3] < 6){n[1] = n[1] + 2000;}n[1] = n[1] + 1900;}else{n[1] = n[1] + 2000;}if (n[2] <= 2){yy = n[1] - 1;mm = n[2] + 12;}if (n[2] > 2){yy = n[1];mm = n[2];}JD = (int)(365.25 * yy) + (int)(30.6001 * (mm + 1)) + n[3] + (UT / 24) + 1720981.5;/*化为儒略日*/gpsz = (int)((JD - 2444244.5) / 7);/*计算GPS周*/t = (JD - 2444244.5 - 7 * gpsz) * 24 * 3600;/*得出GPS秒*/tk = t - n[18];/*tk1为中间值,用以判断tk与正负302400的关系,然后返回到tk上*/ while (tk > 302400 || tk < -302400){if (tk > 302400){tk = tk - 604800;}else{tk = tk + 604800;}}/*计算归化观测时间*/Mk = n[13] + nn * tk;/*观测时刻的卫星平近点角*/Ek = Mk;Ek = Mk + n[15] * sin(Ek);Ek = Mk + n[15] * sin(Ek);/*迭代两次计算观测时刻的偏近点角*/Vk = atan(sqrt(1 - n[15] * n[15]) * sin(Ek)) / (cos(Ek) - n[15]);/*真近点角*/Yk = Vk + n[24];/*升交距角*/Gu = n[14] * cos(2 * Yk) + n[16] * sin(2 * Yk);Gr = n[23] * cos(2 * Yk) + n[11] * sin(2 * Yk);Gi = n[19] * cos(2 * Yk) + n[21] * sin(2 * Yk);/*摄动改正项*/uk = Yk + Gu;rk = n[17] * n[17] * (1 - n[15] * cos(Ek)) + Gr;ik = n[22] + Gi + n[26] * tk;/*经摄动改正后的升交距角、卫星矢径、轨道倾角*/xk = rk * cos(uk);yk = rk * sin(uk);zk = 0;/*卫星在轨道坐标系的坐标*/Lk = n[20] + (n[25] - 7.29211515E-5) * tk - 7.29211515E-5 * n[18];/*观测时刻t的升交点经度*/X = xk * cos(Lk) - yk * cos(ik) * sin(Lk);Y = xk * sin(Lk) + yk * cos(ik) * cos(Lk);Z = yk * sin(ik);/*卫星在WGS-84坐标系的坐标*/printf("该卫星在WGS-84坐标系中的坐标为:\nX = %lf m\nY = %lf m\nZ = %lf m\n", X, Y, Z);fclose(fp);return 0;}计算结果:该卫星在WGS-84坐标系中的坐标为:X = 9223153.692525 mY = 24133486.931401 mZ = 6032585.919385 m。

C语言计算星历位置GPS广播星历计算卫星位置和速度

C语言计算星历位置GPS广播星历计算卫星位置和速度

C语言计算星历位置GPS广播星历计算卫星位置和速度GPS(全球定位系统)广播星历是一种用于计算卫星位置和速度的星历数据。

星历是一种描述卫星在天空中的位置和速度的数据,可以通过接收卫星广播的星历数据来计算卫星的当前位置和速度。

GPS广播星历数据通常由地面控制站维护和广播,卫星周期性地发送星历数据以更新接收器上的星历数据库。

接收器通过接收到的星历数据计算卫星的位置和速度,并使用这些信息来计算接收器的位置。

星历数据通常包括卫星的轨道参数和时间参数。

轨道参数包括卫星的半长轴、偏心率、轨道倾角、升交点经度、近地点幅角和平近点角速度。

时间参数包括卫星的时钟校正参数和广播时间。

接收器使用这些参数来计算卫星的位置和速度。

首先,接收器通过测量卫星信号的到达时间和广播时间来计算卫星信号的传播时间。

然后,接收器使用传播时间和卫星的时间参数来计算卫星的时间误差。

接下来,接收器使用卫星的轨道参数来计算卫星的真实位置和速度。

接收器使用卫星的时间误差来修正卫星的广播时间,并将其转换为GPS时间。

然后,接收器使用修正后的广播时间和卫星的轨道参数来计算卫星的位置和速度。

计算得到的卫星位置和速度可以用于定位接收器的位置。

接收器通过测量多个卫星的信号传播时间来计算卫星到接收器的距离。

然后,接收器使用卫星的位置和速度来计算接收器的位置。

GPS广播星历计算卫星位置和速度是GPS定位的核心技术之一、接收器通过接收到的星历数据来计算卫星的位置和速度,然后使用这些信息来计算接收器的位置。

这种计算过程是GPS定位的基础,可以用于估计接收器的位置和速度。

总结起来,GPS广播星历是一种用于计算卫星位置和速度的星历数据。

接收器通过接收到的星历数据和卫星信号的传播时间来计算卫星的位置和速度。

这些计算结果可以用于定位接收器的位置,并在导航和定位应用中发挥重要作用。

GPS单点定位算法及实现

GPS单点定位算法及实现

升交角距:
摄动改正项:
u0 = ω0 + fs
(6)
δu = cus sin 2u0 + cuc cos 2u0 δr = crs sin 2u0 + crc cos 2u0 δi = cis sin 2u0 + cic cos 2u0
7)计算经过摄动改正的升交角距 u 、卫星到地心距离 r 、轨道倾角 i
星的瞬时地心坐标,可由卫星星历电文中求出;( X p ,Yp , Z p ) 为接收机的地心坐标, 是待求量。
为了求解方便和数据处理的需要,将式(17)进行微分,作线性化处理,
并将接收机的概略坐标 ( X p0 ,Yp0 , Z p0 ) 作为初始值代入,得到
dρ = Xs − X p0 dX + Ys − Yp0 dY + Zs − Z p0 dZ + dt
Crs , Crc 卫星地心距的调和改正项振幅
Ms
参考时刻的平近点角
AODE
星历数据的龄期
其中,AODE 表示从最后一次注入电文起外推星历时 0 的外推时间间隔, 它反映了外推星历的可靠程度。根据上述数据,便可外推出观测时刻 t 的轨道参 数,从而计算卫星在不同参考系中的相应坐标。
2.1 用广播星历参数计算卫星位置
卫星的星历, 是描述有关卫星运动轨道的信息。利用 GPS 进行定位, 就是根 据已知的卫星轨道信息和用户的观测资料, 通过数据处理来确定接收机的位置 及其载体的航行速度。所以, 精确的轨道信息是精密定位的基础。GPS 的卫星星 历按照精度可分为精密星历和广播星历。精密星历是由国际 GPS 服务中心( IGS) 通过 Internet 发布,它的轨道精度可达到 10cm 左右, 足以满足精密定位的需 要。但是精密星历只能在卫星观测的 11d 后获得, 无法为实时定位、导航、气象 等实时性要求很强的应用提供有效的服务。广播星历是通过接收机接收卫星发射 的含有轨道信息的导航电文, 经过解码获得的卫星星历推算得到卫星位置, 可 以实现实时的导航和定位。本程序以 2009 年 11 月 21 日上海跟踪站(SHAO) 的 RINEX 格式广播星历 shao3250.09n 和观测数据 shao3250.09o 为例,取了 200 个连续观测历元,在不同历元求出坐标值,最后求出坐标平差值,对平差值的各 分量作比较。

GPS卫星坐标计算

GPS卫星坐标计算

GPS卫星位置计算程序编制一、目的了解GPS广播星历的结构和内容,掌握利用广播星历计算卫星位置的算法。

二、内容利用广播星历计算卫星在指定观测历元的卫星位置。

三、资料准备一组广播星历参数。

四、实习过程选用熟悉的计算机程序设计语言或工具包,上机编制程序。

五、参考资料利用GPS广播星历计算卫星位置的算法。

GPS卫星的导航电文和卫星信号GPS卫星位置的计算1概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置。

卫星位置的计算是根据卫星电文所提供的轨道参数按一定的公式计算的。

本节专门讲解观测瞬间GPS卫星在地固坐标系中坐标的计算方法。

2卫星位置的计算2.1 计算卫星运行的平均角速度n根据开普勒第三定律,卫星运行的平均角速度n0可以用下式计算:式中μ为WGS-84坐标系中的地球引力常数,且μ=3.986005×1014m3/s2。

平均角速度n0加上卫星电文给出的摄动改正数Δn,便得到卫星运行的平均角速度nn=n0+Δn (4-12) 2.2 计算归化时间t k然后对观测时刻t归化到GPS时系t k=t-t oe(4-13)式中t k称作相对于参考时刻t oe的归化时间。

2.3 观测时刻卫星平近点角M k的计算M k=M0+n tk(4-14)式中M0是卫星电文给出的参考时刻toe的平近点角。

2.4 计算偏近点角E kE k=M k+esinE k(E k,M k以弧度计)(4-15)上述方程可用迭代法进行解算,即先令E k=M k,代入上式,求出E k再代入上式计算,因为GPS卫星轨道的偏心率e很小,因此收敛快,只需迭代计算两次便可求得偏近点角E k。

2.5 真近点角V k的计算由于:因此:2.6 升交距角Φk的计算ω为卫星电文给出的近地点角距。

2.7 摄动改正项δu,δr,δi的计算δu,δr,δi分别为升交距角u的摄动量,卫星矢径r的摄动量和轨道倾角i的摄动量。

C语言计算星历位置GPS广播星历计算卫星位置和速度

C语言计算星历位置GPS广播星历计算卫星位置和速度

C语言计算星历位置GPS广播星历计算卫星位置和速度C语言是一种通用的高级编程语言,可以用于计算星历位置以及计算GPS卫星位置和速度。

下面将详细介绍如何使用C语言来实现这些计算。

首先,我们需要了解星历和GPS广播星历的概念。

星历是一种描述天体位置的方法,它包含了每个天体的位置坐标、速度以及其他相关的信息。

星历常用于天文学研究和导航系统中。

GPS广播星历是由GPS卫星广播的星历信息,它包含了GPS卫星所处的位置、速度等信息。

通过接收并解码广播星历,我们可以计算出卫星的位置和速度。

在C语言中,我们可以使用数学库和一些公式来计算星历位置和GPS 卫星位置以及速度。

首先,我们需要导入数学库,可以使用`#include <math.h>`导入。

数学库提供了一些常用的数学函数,如计算平方根、计算三角函数等。

然后,我们需要根据星历或广播星历的信息,计算出卫星的位置和速度。

对于星历位置的计算,可以使用开普勒方程来逼近天体的真实位置。

开普勒方程的计算公式如下:E - e * sin(E) = M其中,E为偏近点角,e为偏心率,M为平近点角。

通过迭代计算,可以得到E的近似值。

然后,利用半长轴、偏心率和E的值,可以计算出卫星在轨道平面上的坐标。

对于GPS卫星位置和速度的计算,可以使用广播星历中的卫星钟差、偏心率修正项等信息。

具体的计算公式较为复杂,需要使用专门的算法进行计算。

在计算过程中,我们还需要考虑坐标系的转换,以确保最终计算得到的是相对于地球的地心坐标系中的位置和速度。

最后,我们可以将计算得到的卫星位置和速度输出,以便进行后续的处理或导航操作。

总结来说,使用C语言计算星历位置和GPS卫星位置和速度需要导入数学库并使用开普勒方程以及其他相关的计算公式来进行计算。

同时,还需要考虑坐标系的转换和其他相关的因素。

这只是一个简单的介绍,具体的实现可能需要更多的代码和算法。

第三讲 GPS星历计算

第三讲 GPS星历计算

b 2 a 2 (1 e 2 )
1 e cos( ) 1 e cos f 比较椭圆曲线和轨道方程有:
h a (1 e 2 )
r
a 1 e 2
a 1 e 2
r
ae
f
O
a、e为轨道的半长径和偏心率
3.2.5 轨道积分与轨道方程(7)
而ω为近地点和升交点之间的夹角,称为近升角距。 i, , a, e, 是不随时间而变化的常量,当 时: r a (1 e) 为近地点的距离,当 180 时: r 180 a (1 e) 为远地点的距离,当 90 时: r 90 a (1 e 2 ) 为半通径。卫星向径在一个周期内扫过的面 积就是椭圆的面积,则面积速度可表示为:
2 2
ra aa (1 e)
v2 v2 p v2 v2 p
,1/a>0, a为正值,
,1/a=0,a为无穷大,则轨 ,1/a<0,a为负值,则轨道
3.2.5 轨道积分与轨道方程(1)
1、轨道平面中的开普勒元素 a, b, b a 1 e2
f
3.2.5 轨道积分与轨道方程(2)
2、轨道方程的推导
如图所示的轨道极坐标系中 微分得:
r r r3 d r2 d ( ) ( ) dt 2 dt r r2 C 2 r
r r
xx yy zz xx yy zz r3 1 d 2 1 d (r 2 ) 2 2 (x y z ) 3 2 dt 2 r dt dr 2 r dt d 1 ( ) dt r
sin f a (1 e 2 ) cos f e
2
(
2 1 ) r a
2 P
a3
即为Kepler第三定律
与轨道相关的术语
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“GPS广播星历计算卫星位置和速度”
及“GPS伪距定位”计算试验
1.试验内容及上交成果
1.1试验内容
应用C语言按预定格式(函数、输入输出变量之名称、类型)编写“GPS广播星历计算卫星位置和速度”函数SatPos_Vel()、“GPS伪距定位”函数Positioning()。

将此两个函数组成文件F2.cpp,并包含于文件GPS_Positioning.cpp中。

编译、连接并运行文件GPS_Positioning.cpp,逐一时刻读取广播星历(Ephemeris.dat)、观测时间及伪距、卫星号(Observation.dat)信息,计算WGS84坐标系中观测时刻相应的卫星位置、速度以及载体位置,结果保存于文件Position.dat中。

1.2上交成果
磁盘文件F2.cpp、Position.dat,并存于“学号作者中文姓名”目录中。

2.函数说明
2.1星历文件读取函数
void EFileReading(Efile)
功能:读取星历文件,给星历数据结构体Ephemeris赋值。

输入变量:EFile字符串,文件名。

2.2观测数据读取函数
int ObsReading(fp_Obs,Time,Rho,Mark)
功能:从文件Observation.dat中读取某一时刻的伪距、卫星号。

读取成功函数值返回“1”,失败返回“-1”(读错,或至文件尾)。

输入变量:fp_Obs文件指针;
输出变量:Time double,时间(秒);
Rho double[12],伪距(米);
Mark int[12],卫星号,“-1”表示此通道无卫星、无伪距。

2.3最小二乘估计函数
int LeastSquareEstimation(Y,A,P,m,n,X)
功能:最小二乘方法求解观测方程Y=AX+ε,其中观测值方差阵的逆阵为P(也称为权阵),得未知参数X。

成功返回“1”,失败返回“-1”(亏秩)。

输入变量:Y double[m],观测方程自由项(米);
A double[m×n],系数阵(无量纲),按第1行第1、2……n元素,
第2行……顺序存放;
P double[m],权矩阵对角线元素,0或1(无量纲);
m int,观测值个数;
n int,未知参数个数;
输出变量:X double[n],未知参数(米)。

原理:X=(A T PA)-1A T PY
例:Y=[1,2,3,6],A=[1,0,0,0,1,0,0,0,1,1,1,1],P=[1,1,1,1],m=4,n=3。

调用LeastSquareEstimation(Y,A,P,m,n,X),求得X=[1,2,3]。

2.4计算卫星位置、速度函数
int SatPos_Vel(Num,Time,SatPos,SatVel)
功能:计算WGS84坐标系中卫星位置、速度。

成功返回“1”,失败返回“-1”(无星历)。

输入变量:Num int,卫星号;
Time double,时间(秒)。

(隐含引用全局变量Ephemeris[32],星历数据结构体)输出变量:SatPos double[3],位置(米,WGS84);
SatVel double[3],速度(米/秒,WGS84)。

2.5伪距测量定位
int Positioning(Time,Rho,Mark,Pos,dt)
功能:由单一时刻伪距计算载体位置,并保存接收机钟面时、卫星位置、速度及载体位置于定位结果文件Position.dat中。

成功返回“1”,失败返回“-1”(观测
值数量不够,亏秩)。

输入变量:Time double,伪距观测时刻接收机钟面时(秒);
Rho double[12],伪距(米);
Mark int[12],卫星号,“-1”表示此通道无信号;
输出变量:Pos double[3],载体位置(米,WGS84);
dt double,钟差(秒)。

3.全局变量说明
LightVelocity字符常量,光速(米/秒),299792458;
PI字符常量,圆周率,3.141592653589793;
MU字符常量,地球引力常数(米3秒-2),3.986005e14;
OMEGAE字符常量,地球自转角速度(弧度·秒-1),7.292115e-5;
fp_Obs文件指针,观测数据文件;
fp_Pos文件指针,位置结果文件。

Structure Eph_Str
{
Mark整型,标识,“1”有,“-1”无
wn整型,星期数
toc卫星钟差改正参考时刻(秒)
af2卫星钟差改正系数(秒/秒2)
af1(秒/秒)
af0(秒)
aode数据龄期
deltan平均角速度改正(半周/秒)
m0参考时刻平近点角(半周)
e偏心率;
roota a1/2(米1/2)
toe星历参考时刻(秒)
cic(弧度)
crc(米)
cis(弧度)
crs(米)
cuc(弧度)
cus(弧度)
omega0准升交点赤经(半周)
omega近地点角距(半周)
i0轨道倾角(半周)
omegadot升交点赤经变化率(半周/秒)
idot轨道倾角变化率(半周/秒)
}Ephemeris[32]星历数据结构体。

注:数据类型除注明整型外,其余为双精度型。

4.文件说明
4.1观测数据文件Observation.dat
Time,n伪距观测时间,卫星颗数
Rho_1,n_1伪距(米),卫星号
……
Rho_n,n_n伪距(米),卫星号
Time,n伪距观测时间,卫星颗数
……
4.2卫星星历数据文件Ephemeris.dat
svprn整数,卫星号
wn整数,星期数
……
idot轨道倾角变化率(半周/秒)
(详细说明请参见数据结构体Structure Eph_Str Ephemeris[32])svprn整数,卫星号
……
4.3位置计算结果文件Position.dat
Time伪距观测时刻(秒)
n_1,x_1,y_1,z_1,xdot_1,ydot_1,zdot_1卫星号,卫星坐标(米,WGS84),速度(米/秒)……
n_n,x_n,y_n,z_n,xdot_n,ydot_n,zdot_n卫星号,卫星坐标(米,WGS84),速度(米/秒)x,y,z载体坐标(米,WGS84)
Time伪距观测时刻(秒)
……
4.4GPS_Positioning.cpp
作为主函数,调用Parameter.h、Function.h、F1.cpp、F2.cpp。

逐一时刻读取广播星历、伪距等信息,计算卫星位置、速度及载体位置。

4.5Parameter.h
字符常量定义、全局变量说明。

4.6Function.h
函数说明。

4.7F1.cpp
包含辅助函数如下;
广播星历读取函数EFileReading();
观测数据(时间、卫星个数、伪距、卫星号)读取函数ObsReading();
最小二乘法求解函数LeastSquareEstimation();
矩阵相乘计算函数MatrixMultiply();
高斯选主元消去法矩阵求逆函数MatrixInverse();
三维向量长度计算函数VectorLength()。

4.8F2.cpp
包含函数如下:
卫星位置、速度计算函数SatPos_Vel();
伪距定位函数Positioning()。

5.首历元观测时刻参考答案(Position.dat)
193645.0
29-15567798.7945675.621321624.5249.3-2743.6303.3 014665363.69394841.820224091.6-2310.31043.61194.9 20-10127606.021492092.3-10899994.3-90.1-1466.0-2807.9 21-1578334.526219741.9-284477.9-409.9-14.93151.8 28-20375527.015214719.77639734.1-975.7140.2-2976.3 24-2456690.116712706.920740220.7-2203.1-1370.0828.0 5-24924627.93359562.99069955.6937.9-673.82850.3
1311881411.212148251.420386065.1-509.32539.5-1217.6 -2196881.65177555.22998042.2。

相关文档
最新文档