GPS广播星历计算卫星位置和速度-Read
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 的倒数。
从广播星历计算卫星位置
从广播星历计算卫星位置: 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系统是由一组位于中轨道上的卫星组成,它们每天绕地球运行两次,以提供全球的覆盖范围。
每个卫星都携带有高精度的原子钟,用来产生精确的时间信号。
GPS接收机位于地面上,它接收到来自多颗卫星的信号,并测量信号的到达时间和卫星位置。
经过计算,接收机可以确定自身的空间坐标。
计算GPS卫星坐标的过程可以分为以下几个步骤:1.接收卫星信号:GPS接收机通过天线接收到来自多颗卫星的信号。
2.测量信号到达时间:接收机测量每个信号的到达时间,这需要精确的时钟。
由于GPS接收机一般没有原子钟那样的高精度时钟,所以需要利用接收到的卫星信号来校准本地时钟。
3.计算卫星位置:GPS接收机需要知道每颗卫星在接收时间点的准确位置。
每颗卫星通过广播自身的位置和时间信息,接收机可以根据接收到的信号来计算卫星的位置。
4.求解距离:接收机通过测量信号到达时间和卫星位置计算出距离。
由于信号的传播速度是已知的大约是光速,我们可以根据距离和到达时间计算出信号的传播时间。
5.根据接收到的信号来计算自身的位置。
接收机通过多个卫星信号的距离来确定自身的位置,这涉及到多种解算方法,例如最小二乘估计等。
接收机需要至少接收到四颗卫星的信号来解算自身的位置。
这些步骤涉及到大量的数学和物理计算,例如测量时间、测量距离、计算坐标等。
为了提高计算的精度,还需要考虑一些因素,例如信号传播时的大气延迟等。
总的来说,GPS卫星坐标计算是一项复杂而精确的工程,涉及到多个步骤和数学模型。
随着技术的不断进步,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卫星的位置
时 的参 考 历 元 的 卫 星 位 置 参 数 。笔 者 通 过 实 验 发
现 . 多 G S接收 机 只 能 接 收 到观 测 时 间段 附 近 的 很 P
广播 星历 。 若观 测 时段在 两参 考 历 元 中 间 。 只能 接 则 受到 后一 参考 历 元 的 广播 星历 . 观 测 时 段 刚 好 跨 若 过某 一参 考历 元 . 接 受 机 能 接 收 到 本 参 考 历 元 和 则 后续参 考 历 元 的 两组 广播 星历 。因 此 。 计 算 较 短 要 观测 时段 内任 意 时 刻 的卫 星 位 置 。 时 只能 应 用 唯 有
表 1 广 播 星 历 坐 标 和 精 密 星 历 坐 标 差 值
内的卫 星 的某 些 时 刻 的 地 心 坐 标 . 一 步 通 过 内插 进
广 播 星历 的情况 下 。 为保 证卫 星 定 位 的精 度 . 计算 在 卫 星 的任意 时刻 的坐 标 的时 候一 般 限制卫 星 星 历外 推 的时 间不超 过 1 时 。当 只接 收 到 一 组卫 星 的 广 小 播 星历 时 。 同样 应 用 时 间外 推 的方 法计 算 卫 星在 该
位 的需 要 。但是 精 密星历 只 能在 G S观测 的几 天 后 P
1 应 用 单组 广播 星历 计算 G S卫 星的 位置及 其 结 P
果 分 析
G S卫 星 的广播 星 历 提供 1 P 6个 卫 星星 历 参 数 . 其 中包括 1 参考 时刻 . 相 应参 考 时刻 的开普 勒 个 6个 轨 道 根数 和 9个 轨 道摄 动 改正 参 数 。可 应 用这 些 参 数 计算 任 意 时刻 卫 星 在 地 固 系 WG 8 S 4中 的 三 维 坐 标 [ 。G S接 收机 接 收到 的卫 星 的广 播 星历 每 隔 两 5 P 3
GPS广播星历计算卫星位置和速度
GPS广播星历计算卫星位置和速度GPS(全球定位系统)是一种通过卫星定位的技术,它利用卫星发射的广播星历来计算卫星的位置和速度。
星历数据是需要事先计算和上传给卫星的。
在GPS系统中,有31颗运行在中轨道上的卫星,其中至少有24颗是激活状态的。
这些卫星分布在不同的轨道上,每个轨道上约有4颗卫星。
卫星轨道分为6个球形环,每个环的倾角不同,倾角越大表示距离地球赤道越远。
每颗GPS卫星都具有精确的时钟,它们通过广播信号发送自身的位置和速度信息。
这些广播信号被接收器接收后,通过计算接收时间差来确定卫星与接收器之间的距离。
利用三个以上的卫星的广播信号,可以计算出接收器所在的位置。
星历数据是卫星的位置和速度信息,它用于计算接收器附近的卫星位置和速度。
星历数据包括每颗卫星的轨道参数(半长轴、偏心率、轨道倾角、升交点赤经、近地点幅角、运动角频率)、卫星钟差和卫星偏差改正参数等。
星历数据的计算是一个复杂的过程,需要考虑多个因素。
首先,需要从测量数据中估算卫星位置和速度。
接着,根据卫星轨道的数学模型和测量数据,通过插值和拟合等算法计算出卫星的位置和速度数据。
最后,通过计算误差和改正项进行数据校正。
这些校正项包括大气延迟、钟差、轨道摄动等。
星历数据的计算过程是集中在地面控制站完成的,然后通过双向通信链路上传给卫星。
卫星接收到星历数据后,会将其存储在内部存储器中,并通过广播信号发送给地面的接收器。
在接收器接收到卫星广播信号后,会利用星历数据来计算卫星与接收器之间的距离。
首先,接收器会粗略估算卫星位置,然后通过星历数据进行细化校正,最终得到精确的卫星位置和速度信息。
利用卫星位置和速度信息,接收器可以计算出自身的位置。
通过接收多个卫星的广播信号,接收器可以确定自身在地球的经度、纬度和海拔高度。
在接收器上,还可以通过计算卫星位置的变化来确定速度。
通过不同时刻测量卫星位置的变化,可以计算出接收器的速度矢量。
总结起来,GPS广播星历是用于计算卫星位置和速度的关键数据。
GPS星历
GPS 信号结构及卫星星历。
GPS 卫星发射的信号是由载波、测距码和导航电文三部分组成的。
载波是指可运载调制信号的高频振荡波。
GPS 卫星所用的载波有两个。
由于它们均位于微波的L 波段,故分别称为L1 载波和L2 载波。
其中L1 载波是由卫星上的原子钟所产生的基准频率f0=10.23MHz 倍频154 倍后形成的,即f1=154*f0=1575.42MHz,其波长λ1 为19.03cm。
载波是基准频率f0 倍频120 L2 后形成的,即f2= 120*f0=1227.60MHz,其波长λ2 为24.42cm。
采用两个频率的目的是为了较完善地消除电离层延迟。
采用高频率载波的目的是为了更精确地测定多普勒频移,从而提高测速的精度;减少信号的电离层延迟,因为电离层延迟是与信号频率f 的平方成反比的。
测距码是用于测定从卫星到接收机之间距离的二进制码。
GPS 卫星中所用的测距码从性质上讲属于伪随机噪声码。
根据其性质和用途的不同,测距码可分为粗码(C/A 码)和精码(P 码或Y 码)两类,每个卫星所用的测距码互不相同且相互正交。
粗码C/A 码,又称为粗捕获码,它被调制在L1 载波上,是1MHz 的伪随机噪声码(PRN 码),其码长为1023 位(周期为1ms )。
由于每颗卫星的C/A 码都不一样,因此,经常用它们的PRN 号来区分它们。
C/A 码是普通用户用以测定监测站到卫星间的距离的一种主要信号。
精码P(Y)码,又称为精码,它被调制在L1 和L2 载波上,是10MHz 的伪随机噪声码,其周期为7 天。
在实施AS 时,P 码与W 码进行模二相加生成保密的Y 码,此时,一些用户无法利用P 码来进行导航定位。
导航电文是GPS 卫星向用户播发的一组反映卫星在空间的位置、卫星的工作状态、卫星钟的修正参数,电离层延迟修正参数等重要数据的二进制代码,也称数据码(D 码)。
广播星历,这种星历是主控站利用跟踪站收集的观测资料计算并外推出未来两周的星历,然后注入到GPS 卫星,形成导航电文供用户使用。
GPS卫星坐标计算分解
主要内容 2.1卫星坐标系简介 2.2偏近点角E与真近点角f的关系公式推导 2.3卫星位置计算推导过程 2.4二体问题的星位置计算解析
第二章 GPS卫星位置的计算
2.1卫星坐标系简介
一、WGS-84大地坐标系 1、WGS-84大地坐标系定义
WGS-84(World Geodetic System,1984年)是美国国防 部研制确定的大地坐标系,其 坐标系的几何定义是:
顶为正),以子午线方向为x轴(向北为正 ),y轴与x、z轴垂直(向东为正)。
站心赤道直角坐标系与站心地平直角坐 标系之间的关系
X sin B cos L
Y
sin
B
sin
L
Z
站赤
cos B
sin L cos L
0
cos B cos L x
cos
B
sin
L
y
sin B z 地平
站心地平直角坐标系与球心空间直角坐
椭球第一偏心率: e2=0.00669437999013 地球引力常数: GM=(39860050.6)108(m3/s2)
正常化二阶带谐系数:J2=(–484.166851.30)10–9(rad/s) 地球自转角速度: ω=(72921150.1500)10–11(rad/s)
国际大地测量与地球物理联合会(IUGG)——International Union of Geodesy and Geophysics
1 e2 sin E
cos f
,sin f
1 e cos E
1 e cos E
第二章 GPS卫星坐标的计算 2.3 卫星在轨瞬时位置计算
2.3.1 广播星历
GPS导航定位原理以及定位解算算法
GPS导航定位原理以及定位解算算法全球定位系统(GPS)是英文Global Positioning System的字头缩写词的简称。
它的含义是利用导航卫星进行测时和测距,以构成全球定位系统。
它是由美国国防部主导开发的一套具有在海、陆、空进行全方位实时三维导航与定位能力的新一代卫星导航定位系统。
GPS用户部分的核心是GPS接收机。
其主要由基带信号处理和导航解算两部分组成。
其中基带信号处理部分主要包括对GPS卫星信号的二维搜索、捕获、跟踪、伪距计算、导航数据解码等工作。
导航解算部分主要包括根据导航数据中的星历参数实时进行各可视卫星位置计算;根据导航数据中各误差参数进行星钟误差、相对论效应误差、地球自转影响、信号传输误差(主要包括电离层实时传输误差及对流层实时传输误差)等各种实时误差的计算,并将其从伪距中消除;根据上述结果进行接收机PVT(位置、速度、时间)的解算;对各精度因子(DOP)进行实时计算和监测以确定定位解的精度。
本文中重点讨论GPS接收机的导航解算部分,基带信号处理部分可参看有关资料。
本文讨论的假设前提是GPS接收机已经对GPS卫星信号进行了有效捕获和跟踪,对伪距进行了计算,并对导航数据进行了解码工作。
1地球坐标系简述要描述一个物体的位置必须要有相关联的坐标系,地球表面的GPS接收机的位置是相对于地球而言的。
因此,要描述GPS接收机的位置,需要采用固联于地球上随同地球转动的坐标系、即地球坐标系作为参照系。
地球坐标系有两种几何表达形式,即地球直角坐标系和地球大地坐标系。
地球直角坐标系的定义是:原点O与地球质心重合,Z轴指向地球北极,X轴指向地球赤道面与格林威治子午圈的交点(即0经度方向),Y轴在赤道平面里与XOZ构成右手坐标系(即指向东经90度方向)。
地球大地坐标系的定义是:地球椭球的中心与地球质心重合,椭球的短轴与地球自转轴重合。
地球表面任意一点的大地纬度为过该点之椭球法线与椭球赤道面的夹角φ,经度为该点所在之椭球子午面与格林威治大地子午面之间的夹角λ,该点的高度h为该点沿椭球法线至椭球面的距离。
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坐标计算
������������ = ������0 + ������������ + i������������ (9) 计算卫星在轨道平面上的坐标 ������������ = ������������ ������������������������������ ������������ = ������������ ������������������������������ (10) 计算观测时刻 t 的升交点经度������������ ������������ = Ω0 + Ω − ������������ ������������ − ������������ ������������������ (11) 计算卫星在 WGS-84 坐标系中的坐标 ������������ = ������������ ������������������������������ − ������������ ������������������������������ ������������������������������ ������������ = ������������ ������������������������������ + ������������ ������������������������������ ������������������������������ ������������ = ������������ ������������������������������
下面是用户位置Байду номын сангаас算
估计位置坐标表示估计位置与真实位置的偏移量
设
GPS 卫星的广播星历提供 16 个星历参数,其中包括 1 个参考时刻、6 个相应参考时刻的开普 勒轨道参数和 9 个轨道摄动修正参数。 用广播星历参数计算任一时刻 t 的卫星位置的步骤如 下: (1) 计算卫星运行的平均角速度 n 卫星运行的平均角速度������ = ������0 + ∆������,式中������0 =
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卫星的星历
GPS卫星星历对基线解算的影响鄞州区土地勘测规划所张苏红宁波冶金勘察设计研究股份有限公司徐军{摘要}随着GPS应用范围的扩展,GPS定位技术在高精度变形观测中得到充分发展。
由于工程建设的需要,运用GPS相对定位技术对施工控制网进行变形监测,本文主要分析了采用不同的卫星星历对GPS基线解算的影响,提出了采用GPS精密星历进行GPS控制网变形监测。
关键词:GPS精密星历一、前言卫星的星历就是描述卫星运行轨道和状态的各种参数值,它是计算卫星瞬时位置的依据。
卫星星历按其来源的不同,可以分为两种:预报星历(广播星历)和实测星历(精密星历)。
1、广播星历卫星将地面监测站注入的有关卫星轨道的信息,通过发射导航电文传递给用户,用户接收到这些信号进行解码即可获得所需要的卫星星历。
即广播星历。
由卫星向用户播发。
可用于实时定位。
分C/A码星历和P码星历。
内容:分三部分,开普勒六参数、轨道摄动九参数、时间二参数。
由地面监测站测定卫星轨道外推轨道,精度25m。
2、实测星历一些国家根据自己的卫星跟踪站观测资料,经过事后处理直接计算的卫星星历,称为实测星历。
其精度忧于5cm利用精密星历及其它手段进行精密单点定位,精度可达0.1m。
GPS测量是通过地面接收设备接收卫星传送来的信息,计算同一时刻地面接收设备到多颗卫星之间的伪距离,采用空间距离后方交会方法,来确定地面点的三维坐标。
因此,对于GPS卫星、卫星信号传播过程和地面接收设备都会对GPS 测量产生误差。
主要误差来源可分为:与GPS卫星有关的误差;与信号传播有关的误差;与接收设备有关的误差。
与卫星有关的误差主要有:卫星星历误差、卫星钟差、SA干扰误差、相对论效应的影响。
卫星星历误差是指卫星星历给出的卫星空间位置与卫星实际位置间的偏差,由于卫星空间位置是由地面监控系统根据卫星测轨结果计算求得的, 所以又称为卫星轨道误差。
它是一种起始数据误差, 其大小取决于卫星跟踪站的数量及空间分布、观测值的数量及精度、轨道计算时所用的轨道模型及定轨软件的完善程度等。
卫星导航定位程序设计_5_星历数据读取
卫星导航定位程序设计_5_星历数据读取在卫星导航定位程序设计中,读取星历数据是非常重要的一步。
以下是一个星历数据读取的程序设计示例:1.首先,需要确定星历数据的格式。
星历数据通常以文本文件的形式存储,每行包含一个卫星的信息。
常见的星历数据格式包括RINEX格式、SP3格式等。
根据星历数据的格式,可以编写相应的读取函数。
2.创建一个类或函数,用于读取星历数据。
这个类或函数应该包含以下功能:-打开星历数据文件,获取文件句柄。
-逐行读取文件内容,解析每一行的数据。
-将解析后的数据存储到合适的数据结构中,例如数组、字典或类的实例。
3.解析星历数据行。
根据星历数据的格式,解析每一行的内容。
例如,如果使用RINEX格式,每一行包含卫星的编号、观测时间、卫星的位置和速度等信息。
可以使用字符串分割操作或正则表达式等工具来解析每一行的内容。
4.将解析后的数据存储到数据结构中。
根据程序的需求,可以选择适当的数据结构来存储星历数据。
例如,如果需要按卫星编号检索卫星的位置和速度信息,可以使用字典或类的实例。
5.关闭星历数据文件。
在读取完星历数据后,需要关闭文件句柄,释放资源。
以下是一个简单的星历数据读取程序设计示例:```pythonclass EphemerisReader:def __init__(self, file_path):self.file = open(file_path, 'r')def read_ephemeris(self):ephemeris_data = {}for line in self.file:if line.startswith('**'):continuesatellite_id = line[0:3]position = line[10:30]velocity = line[30:50]ephemeris_data[satellite_id] = {'position': position, 'velocity': velocity}return ephemeris_datadef close(self):self.file.close#使用示例ephemeris_file = 'ephemeris.txt'ephemeris_reader = EphemerisReader(ephemeris_file)ephemeris_data = ephemeris_reader.read_ephemerisephemeris_reader.closeprint(ephemeris_data)```上述示例代码使用了一个`EphemerisReader`类来读取星历数据。
GPS卫星导航电文
1.2.2P码
P码又被称为精码,它被调制在L1和L2载波上,是10.23MHz的伪随机噪声码,直接使用由卫星上的原于钟所产生的基准频率,即:fp=f0=1.023MHz,其周期为七天。在实施AS时,P码与W码进行模二相加生成保密的Y码,此时,一般用户无法利用P码来进行导航定位。
L1、、L2由卫星上的原于钟所产生的基准频率f0=1.023MHz倍频154倍和120倍产生。
1.2测距码
1.2.1C/A码
C/A码又称为粗捕获码,它被调制在L1载波上,是1.023MHz的伪随机噪声码(PRN码),由卫星上的原子钟所产生的基准频率f0降频10倍产生,即:fC/A=f0/10=1.023MHz。由于每颗卫星的C/A码都不一样,因此,我们经常用它们的PRN号来区分它们。C/A码是普通用户用以测定测站到卫星间的距离的一种主要的信号。
2.3L2C码
目前,C/A码只调制在Ll载波上,故无法精确地消除电离层延迟。随着全球定位系统的现代化,在卫星上增设调制了C/A码的第二民用频率码L2C码后,该问题将可得到解决。采用窄相关间隔(Narrow Correlator Spacing)技术后测距精度可达分米级,与精码的测距精度大体相当。
3.CPS卫星的载波信号
4.GPS导航电文
GPS卫星导航电文是用户利用GPS定位和导航所必须的基础数据。它主要提供了卫星在空间的位置、卫星的工作状态、卫星钟的修正参数、电离层延迟修正参数等重要信息。这些信息是以二进制码的形式按规定格式编码,并按帧发给用户接收机,因此又称之为数据码(D码)。
导航电文的传输速率为50bit/s,以“帧”为单位向外发送。每帧的长度为1500bit,播发完一个主帧需30s。一个主帧包括5个子帧。每个子帧均包含300bit,播发时间为6s。每个子帧又可分为10个字,每个字都由30bit组成。其中第四、五两个子帧各有25个页面,需要750s才能将25个页面全部播发完。第一、二、三子帧每30s重复一次,其内容每隔2h更新一次。第四、五子帧每30s翻转一页,12.5min完整地播发一次,然后再重复。其内容仅在卫星注入新的导航数据后才得以更新。
02-4.4 卫星位置计算-利用星历计算信号发射时刻卫星的位置
k = 0 + tk − etoe
11.(1)计算 GEO 卫星在自定义坐标系系中的坐标
xGK = xk cos k − yk cos ik sin k
yGK
=
yk
sin k
+
yk
cos ik
cos k
zGK = yk sin ik
卫星位置计算—利用星历计算信号发射时刻卫星的位置 ➢BDS卫星在轨位置计算
开普勒参数表示 的卫星位置
轨道摄动修正
卫星在轨道平面 坐标系下的位置
地心地固坐标系 下的位置
卫星位置计算—利用星历计算信号发射时刻卫星的位置 ➢BDS卫星在轨位置计算
1. 计算归化时间
电文中给出的BDS卫星轨道参数是对应于星历参考时刻toe的。因
此,于某时刻t 观测卫星,需将观测时间t 归化为tk:tk= t -toe
由开普勒第三定律知:卫星运动周期的平方与轨道椭圆长半轴
的立方之比为一常数,该常数等于地球引力常数GM的倒数。
T 2 4 2
a3
= GM
如果
n0 代表卫星的平均角速度,即
n0
=
2
T
பைடு நூலகம்
=
GM a3
故卫星的平均角速度: n = n0 + n
n -导航电文给出的摄动改正数
卫星位置计算—利用星历计算信号发射时刻卫星的位置 ➢BDS卫星在轨位置计算
李慧卫星位置计算利用星历计算信号发射时刻卫星的位置010203卫星运动卫星轨道bds卫星在轨位置计算卫星运动卫星位置计算利用星历计算信号发射时刻卫星的位置卫星轨道卫星位置计算利用星历计算信号发射时刻卫星的位置卫星轨道六要素升交点赤经轨道倾角i近地点张角真近点角m轨道长半轴a近地点赤道平面轨道偏心率卫星位置计算利用星历计算信号发射时刻卫星的位置bds卫星在轨位置计算计算卫星运行的平均角速度n开普勒参数表示的卫星位置卫星在轨道平面坐标系下的位置地心地固坐标系下的位置轨道摄动修正近地点升交点春分点轨道赤道开普勒六参数计算流程卫星位置计算利用星历计算信号发射时刻卫星的位置bds卫星在轨位置计算计算归化时间电文中给出的bds卫星轨道参数是对应于星历参考时刻toe此于某时刻t观测卫星需将观测时间t归化为toe在计算t时应注意toe是由每星期历元星期六星期日子夜零点开始计量的
GPS广播星历计算卫星位置和速度-Read
GPS广播星历计算卫星位置和速度-Read“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”(亏秩)。
基于广播星历的卫星速度和加速度实时计算方法
基于广播星历的卫星速度和加速度实时计算方法孙伟;孔莹;段顺利;丁伟【摘要】Aiming at the problem that satellite speed and acceleration cannot be obtained in real time based on pre-cise ephemeris,which affects the timeliness of speed and acceleration of mobile vehicle,a new method is proposed to calculate the satellite velocity and acceleration based on broadcast ephemeris in real time.The limitations of the ex-isting satellite velocity programs is analyzed in this paper,and the formula of satellite velocity based on the matrix is deduced. The measured data are compared with the satellite speed and acceleration results calculated by broadcast ephemeris and precise ephemeris respectively. The results show thatthe error of satellite position obtained by broad-cast ephemeris is controlled with in 2 m,the velocity error is better than 1.4 mm per second,the acceleration error is better than 0.05 mm per second squared,and the real-time performance is good.%针对当前利用精密星历不能实现卫星速度和加速度实时获取,进而影响移动载体速度和加速度解算的时效性问题,提出一种基于广播星历实时计算卫星速度和加速度方法.分析现有广播星历求取卫星速度方案存在的局限性,推导基于矩阵形式的卫星运动速度求解公式,通过实测数据分别对广播星历和精密星历计算的卫星速度和加速度结果进行对比分析,结果表明:广播星历计算卫星位置误差在2 m以内,速度误差优于1.4 mm/s,加速度误差优于0.05 mm/s2,且具有良好的实时性.【期刊名称】《传感技术学报》【年(卷),期】2017(030)012【总页数】5页(P1890-1894)【关键词】卫星速度;卫星加速度;广播星历;实时解算【作者】孙伟;孔莹;段顺利;丁伟【作者单位】辽宁工程技术大学测绘与地理科学学院,辽宁阜新123000;辽宁工程技术大学测绘与地理科学学院,辽宁阜新123000;辽宁工程技术大学测绘与地理科学学院,辽宁阜新123000;辽宁工程技术大学测绘与地理科学学院,辽宁阜新123000【正文语种】中文【中图分类】U666.134卫星速度和加速度信息获取是实现载体速度和加速度计算的前提,其精度直接影响载体速度和加速度的解算结果[1-2]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 字符常量,光速(米/秒),299 792 458;
PI 字符常量,圆周率,3.141 592 653 589 793;
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.4 GPS_Positioning.cpp
作为主函数,调用Parameter.h、Function.h、F1.cpp、F2.cpp。
逐一时刻读取广播星历、伪距等信息,计算卫星位置、速度及载体位置。
4.5 Parameter.h
字符常量定义、全局变量说明。
4.6 Function.h
函数说明。
4.7 F1.cpp
包含辅助函数如下;
广播星历读取函数EFileReading() ;
观测数据(时间、卫星个数、伪距、卫星号)读取函数ObsReading();
最小二乘法求解函数LeastSquareEstimation();
矩阵相乘计算函数MatrixMultiply();
高斯选主元消去法矩阵求逆函数MatrixInverse();
三维向量长度计算函数VectorLength()。
4.8 F2.cpp
包含函数如下:
卫星位置、速度计算函数SatPos_Vel();
伪距定位函数Positioning()。
5.首历元观测时刻参考答案(Position.dat)
193645.0
29 -15567798.7 945675.6 21321624.5 249.3 -2743.6 303.3
0 14665363.6 9394841.8 20224091.6 -2310.3 1043.6 1194.9
20 -10127606.0 21492092.3 -10899994.3 -90.1 -1466.0 -2807.9
21 -1578334.5 26219741.9 -284477.9 -409.9 -14.9 3151.8
28 -20375527.0 15214719.7 7639734.1 -975.7 140.2 -2976.3
24 -2456690.1 16712706.9 20740220.7 -2203.1 -1370.0 828.0
5 -24924627.9 3359562.9 9069955.
6 937.9 -673.8 2850.3
13 11881411.2 12148251.4 20386065.1 -509.3 2539.5 -1217.6 -2196881.6 5177555.2 2998042.2。