GPS广播星历计算卫星位置和速度 下载本文

内容发布更新时间 : 2024/5/21 20:33:35星期一 下面是文章的全部内容请认真阅读。

“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元素,

1

第2行……顺序存放;

P double[m],权矩阵对角线元素,0或1(无量纲);

m int,观测值个数; n int,未知参数个数;

输出变量: X double[n],未知参数(米)。

T-1T

原理:X=(APA)APY

例: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;

3-2

MU 字符常量,地球引力常数(米秒),3.986005e14;

-1

OMEGAE 字符常量,地球自转角速度(弧度·秒),7.292115e-5; fp_Obs 文件指针,观测数据文件; fp_Pos 文件指针,位置结果文件。

Structure Eph_Str {

Mark 整型,标识,“1”有,“-1”无 wn 整型,星期数 toc 卫星钟差改正参考时刻(秒)

2

af2 卫星钟差改正系数(秒/秒) af1 (秒/秒) af0 (秒) aode 数据龄期

deltan 平均角速度改正(半周/秒) m0 参考时刻平近点角(半周) e 偏心率;

1/21/2

roota a(米) toe 星历参考时刻(秒) cic (弧度) crc (米) cis (弧度) crs (米) cuc (弧度) cus (弧度)

omega0 准升交点赤经(半周) omega 近地点角距(半周) i0 轨道倾角(半周) omegadot 升交点赤经变化率(半周/秒) idot 轨道倾角变化率(半周/秒) }Ephemeris[32] 星历数据结构体。

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

2

4.文件说明

4.1 观测数据文件Observation.dat

Time, Time, ……

n Rho_1, …… Rho_n, n

n_1 n_n

伪距观测时间,卫星颗数

伪距(米),卫星号 伪距(米),卫星号

伪距观测时间,卫星颗数

4.2 卫星星历数据文件Ephemeris.dat

svprn 整数,卫星号 wn 整数,星期数 …… idot 轨道倾角变化率(半周/秒) (详细说明请参见数据结构体Structure Eph_Str Ephemeris[32]) svprn 整数,卫星号 ……

3