第三章卫星信号及位置计算 吉长东

卫星星历计算和轨道参数计算编程实习

专业:地图学与地理信息工程(印刷) 班级:制本49—2 学号:3272009010 姓名:张连杰 时间:2012/9/21 一、概述 在C++6.0中建立基于单文档的MFC工程,利用简洁的界面方便地由卫星轨道根数计算卫星的实时位置和速度,并可以根据卫星的星历反求出卫星轨道根数。 二、目的 通过卫星编程实习,进一步加深理解和掌握卫星轨道参数的计算和卫星星历的计算方法,提高编程能力和实践能力。 三、功能 1、由卫星位置与速度求取卫星轨道参数; 2、由卫星轨道参数计算卫星星历。 四、编程环境及工具 Windows7环境,VC++6.0语言工具 五、计划与步骤 1.深入理解课本上的星历计算方法和轨道根数的求取方法,为编程实习打下算法基础; 2.学习vc++对话框的设计和编程,解决实习过程中的技术难题; 3.综合分析程序的实现过程,一步步编写代码实现。 六、程序异常处理 1.在进行角度转换时候出现的问题导致结果错误。计算三角函数时候先要把角度转换成弧度进行计算,最后输出结果的时候需要再把弧度转换回角度输出。 2.在计算omiga值得时候的错误。对计算出的omiga值要进行象限的判断,如果不符合条件要加或减一个周期pi(因为是反正弦函数)。 七、原创声明 本课程设计报告及相应的软件程序的全部内容均为本人独立完成。其间,只有程序中的中间参量计算值曾与同学共同讨论。特此声明。 八、程序中的关键步骤和代码 1、建立基于单文档的名字为TrackParameter的MFC工程。 2、在资源视图里面增加一个对话框改属性ID为IDD_DIALOG1,在新的对话框IDD_DIALOG1上面添加控件按钮,并建立新的类CsatelliteDlg. 3、在菜单栏里面添加菜单实习一,并添加命令响应函数OnMenuitem32771(),在该函数中编写代码 CsatelliteDlg dlg; dlg.DoModal();

卫星坐标计算

GPS 卫星坐标计算 班级:08测绘一班 姓名:浦绍佼 学号:20080754

目录 实验目的: (3) 卫星坐标计算步骤: (3) 具体过程: (5) 四:运行与结果 (12) 五,心得体会: (13)

实验目的: 根据导航文件求出卫星坐标。 卫星坐标计算步骤: 一:计算平均角速度: n =;n0=;:由导航文件给出二:规划时刻:,为参考历元 三:平近点角: 四:偏近点角:+e;(此处进行迭代运算) 五:真近点角:; 六:升交点角距:; 七:摄动改正:顾及?,I,n的摄动变化以及正弦改正模型的振幅项,;则 升交点角距: 轨道向径:

轨道倾角: 式中:为参考时刻的升交角距; 八:改正后的升交角距: 改正后的轨道向径:; 改正后的轨道倾角:; 九:卫星在升交点轨道直角坐标系的坐标: ;: 十:升交点经度: 7.2921151467*rad/s;:升交点赤经变化率; :GPS周开始时刻的升交点经度; 十一:卫星在地固坐标系的空间直角坐标为: =R(-)(R(-) R(-), (R(-)为旋转矩阵,将其代入展开后得: ; ;

具体过程: 一:原始资料(卫星导航文件) 二:进行必要的界面设计:

三:编写代码: using System; using System.Collections.Generic; using https://www.360docs.net/doc/883791477.html,ponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using System.Diagnostics; namespace 20080754 { public partial class Form1 : Form { private string stFilePath = string.Empty; public Form1() { InitializeComponent(); listView1.Columns.Add("序号", 40, HorizontalAlignment.Center); listView1.Columns.Add("星历参数", 80, HorizontalAlignment.Center); listView1.Columns.Add("参数值", 130, HorizontalAlignment.Center); listView1.GridLines = true; listView1.View = View.Details; listView1.HeaderStyle = ColumnHeaderStyle.Clickable; listView1.FullRowSelect = true;

卫星导航定位算法与程序设计实验报告

2013 级测绘工程专业 卫星导航定位算法与程序设计 实 验 报 告 实验名称:卫星导航基本程序设计 班级: 学号: 姓名: 实验时间: 2016年6月28日~2016年6月30 中国矿业大学

目录 实验一时空基准转换 (2) 一、实验目的 (2) 二、实验内容 (2) 三、实验过程 (2) 四、实验感想 (6) 实验二RINEX文件读写 (6) 一、实验目的 (6) 二、实验内容 (7) 三、实验过程 (7) 实验三卫星轨道计算 (12) 一、实验目的 (12) 二、实验内容 (12) 三、实验过程 (12) 四、实验感想 (15)

实验一时空基准转换 一、实验目的 1、加深对时空系统及其之间转换关系的理解 2、掌握常用时空基准之间的转换模型与软件实现 3、每人独立完成实验规定的内容 二、实验内容 本实验内容包括: 内容一:编程实现GPS起点1980年1月6日0时对应的儒略日 内容二:编程实现2011年11月27日对应的GPS周数与一周内的秒数 内容三:在WGS84椭球的条件下,编程实现当中央子午线为117度时,计算高斯坐标x = 3548910.811290287, y = 179854.6172135982 对应的经纬度坐标? 内容四:WGS84椭球下,表面x=-2408000; y=4698000;z= 3566000处的地平坐标系坐标为: e=704.8615;n=114.8683;u=751.9771的点对应的直角坐标为多少? 三、实验过程 1.针对第一、二部分内容: 1.1解决思路:先建立” TimeStruct.h”的头文件,将格里高利历、GPS时间结构、儒略日时间结构共结构体的方式放在里面;在建立“TimeTr”的头文件,建立类“CTimeT r”,创建变量“GPS Time”、“Time”、”JulDay”,并且申明函数“TIME2JUL”、“TIME2GTIME”等,用这些函数分别实现所需要的转换。 1.2具体的实现函数: “TIME2JUL”函数: double CTimeTr::TIME2JUL()//TIME Time,JULIANDAY &JulDay { double m,y; double D; //h =Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00; if(Time.byMonth<=2) {

现代通信原理指导书 第七章 信源编码 习题详解

第七章 信源编码 7-1已知某地天气预报状态分为六种:晴天、多云、阴天、小雨、中雨、大雨。 ① 若六种状态等概出现,求每种消息的平均信息量及等长二进制编码的码长N 。 ② 若六种状态出现的概率为:晴天—;多云—;阴天—;小雨—;中雨—;大雨—。试计算消息的平均信息量,若按Huffman 码进行最佳编码,试求各状态编码及平均码长N 。 解: ①每种状态出现的概率为 6,...,1,6 1 ==i P i 因此消息的平均信息量为 ∑=- ===6 1 22 /58.26log 1 log i i i bit P P I 消息 等长二进制编码的码长N =[][]316log 1log 22=+=+L 。 ②各种状态出现的概率如题所给,则消息的平均信息量为 6 2 1 2222221log 0.6log 0.60.22log 0.220.1log 0.10.06log 0.060.013log 0.0130.007log 0.0071.63/i i i I P P bit - == = ------ ≈ ∑消息 Huffman 编码树如下图所示: 由此可以得到各状态编码为:晴—0,多云—10,阴天—110,小雨—1110,中雨—11110, 大雨—11111。 平均码长为: 6 1 10.620.2230.140.0650.01350.0071.68 i i i N n P == =?+?+?+?+?+? =∑— 7-2某一离散无记忆信源(DMS )由8个字母(1,2,,8)i X i =???组成,设每个字母出现的概率分别为:,,,,,,,。试求: ① Huffman 编码时产生的8个不等长码字; ② 平均二进制编码长度N ; ③ 信源的熵,并与N 比较。 解:①采用冒泡法画出Huffman 编码树如下图所示 可以得到按概率从大到小8个不等长码字依次为: 0100,0101,1110,1111,011,100,00,1087654321========X X X X X X X X

北斗卫星导航信号串行捕获算法MATLAB仿真报告材料(附MATLAB程序)

北斗卫星导航信号串行捕获算法MATLAB仿真报告 一、原理 卫星导航信号的串行捕获算法如图1所示。 图1 卫星导航信号的串行捕获算法 接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且接收机知道产生的伪码的相位,这个伪码按一定速率抽样后与接收的GPS中频信号相乘,然后再与同样知晓频率的本地产生的载波相乘。GPS中频信号由接收机的射频前端将接收到的高频信号下边频得到。实际产生对应相位相互正交的两个本地载波,分别称为同相载波和正交载波,信号与本地载波相乘后的信号分别成为,产生同相I支路信号和正交的Q 支路信号。 两支路信号分别经过一个码周期时间的积分后,平方相加。分成两路是因为C/A码调制和P码支路正交的支路上,假设是I支路。当然由于信号传输过程中引入了相位差,解调时的I支路不一定是调制时的I支路,Q支路也一样,二者不一定一一对应,因此为了确定是否检测到接收信号,需要同时对两支路信号进行研究。相关后的积分是为了获取所有相关数据长度的值的相加结果,平方则是为了获得信号的功率。最后将两个支路的功率相加,只有当本地伪码和本地载波的频率相位都与中频信号相同时,最后得到的功率才很大,否则结果近似为零。

根据这个结论考虑到噪声的干扰,在实际设计时应该设定一个判定门限,当两路信号功率和大于设定的门限时则判定为捕获成功,转入跟踪过程,否则继续扫描其它的频率或相位。 二、MATLAB仿真过程及结果 仿真条件设置:抽样频率16MHz,中频5MHz,采样时间1ms, 频率搜索步进1khz,相位搜索步进1chip,信号功率-200dBW,载 噪比55dB (1)中频信号产生 卫星导航信号采用数字nco的方式产生,如图2所示。 载波nco控制字为:carrier_nco_word=round(f_carrier*2^N/fs); 伪码nco控制字为:code_nco_word=round(f_code*2^N/fs); 图 2 其中载波rom存储的是正弦信号的2^12个采样点,伪码rom存储长度为2046的卫星伪码。这样伪码采用2psk的方式调制到射频,加性噪声很小是理想接收中频信号如图3所示。

GPS卫星的坐标计算

第三章GPS 卫星的坐标计算 在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。卫星位置的计算是根据卫星导航电文所提供的轨道参数按一定的公式计算的。 3.1卫星运动的轨道参数 3.1.1基本概念 1.作用在卫星上力 卫星受的作用力主要有:地球对卫星的引力,太阳、月亮对卫星的引力,大气阻力,大气光压,地球潮汐力等。 中心力:假设地球为匀质球体的引力(质量集中于球体的中心),即地球的中心引力,它决定卫星运动的基本规律和特征,决定卫星轨道,是分析卫星实际轨道的基础。此种理想状态时卫星的运动称为无摄运动,卫星的轨道称为无摄轨道。 摄动力:也称非中心力,包括地球非球形对称的作用力、日月引力、大气阻力、大气光压、地球潮汐力等。摄动力使卫星运动产生一些小的附加变化而偏离理想轨道,同时这种偏离量的大小随时间而改变。此种状态时卫星的运动称为受摄运动,卫星的轨道称为受摄轨道。 虽然作用在卫星上的力很多,但这些力的大小却相差很悬殊。如果将地球引力当作1的话,其它作用力均小于10-5。 2.二体问题 研究两个质点在万有引力作用下的运动规律问题称为二体问题。 3.卫星轨道和卫星轨道参数 卫星在空间运行的轨迹称为卫星轨道。 描述卫星轨道状态和位置的参数称为轨道参数。 3.1.2卫星运动的开普勒定律 (1)开普勒第一定律 卫星运行的轨道为一椭圆,该椭圆的一个焦点与地球质心重合。此定律阐明了卫星运行轨道的基本形态及其与地心的关系。由万有引力定律可得卫星绕地球质心运动的轨道方程。r 为卫星的地心距离,as 为开普勒椭圆的长半径,es 为开普勒椭圆的偏心率;fs 为真近点角,它描述了任意时刻卫星在轨道上相对近地点的位置,是时间的函数。 (2)开普勒第二定律 卫星的地心向径在单位时间内所扫过的面积相等。表明卫星在椭圆轨道上的运行速度是不断变化的,在近地点处速度最大,在远地点处速度最小。 近地点 远地点 s s s s f e e a r cos 1)1(2+-=

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”(亏秩)。 输入变量:Y double[m],观测方程自由项(米); A double[m×n],系数阵(无量纲),按第1行第1、2……n元素,

计算卫星位置的程序

计算卫星位置 一、C语言程序 #include #include #include #define bGM84 3.986005e14 #define bOMEGAE84 7.2921151467e-5 void main() { long double roota=0.515365263176E+04; //轨道长半轴的平方根(根号a) long double toe=0.720000000000E+04; //观测时刻toe long double m0=-0.290282040486E+00; //参考时刻toe的平近点角 long double e=0.678421219345E-02; //轨道偏心率e long double delta_n=0.451411660250E-08;//卫星的摄动改正数△n long double smallomega=-0.258419417299E+01;//近地点角距ω long double cus=0.912137329578E-05;//纬度幅角正弦调和项改正的振幅(弧度)long double cuc=0.189989805222E-06;//纬度幅角余弦调和项改正的振幅(弧度)long double crs=0.406250000000E+01;//轨道半径的余弦调和项改正的振幅(m)long double crc=0.201875000000E+03;//轨道半径的正弦调和项改正的振幅(m)long double cis=0.949949026108E-07;//轨道倾角的余弦调和项改正的振幅(弧度)long double cic=0.130385160446E-07;//轨道倾角的正弦调和项改正的振幅(弧度)long double idot=-0.253939149013E-09;//轨道倾角变化率I long double i0=0.958512160302E+00; //轨道倾角(弧度) long double bigomega0=-0.137835982556E+01;//升交点赤经 long double earthrate=bOMEGAE84; //地球自转的速率we long double bigomegadot=-0.856928551657e-08; long double t=0.720000000000E+04; //加入卫星钟差改正的归化时间 long double A; long double n0=0,n,tk; long double mk,ek,tak,ik,omegak,phik,uk,rk; long double corr_u,corr_r,corr_i; long double xpk,ypk,xk,yk,zk; int i; printf("输入的数据:\n"); printf("√a=%e \n",roota); printf("toe=%e \n",toe); printf("e=%e \n",e); printf("i0=%e \n",i0); printf("ω=%e \n",smallomega); printf("△n=%e \n",delta_n); printf("Ω0=%e \n",bigomega0); printf("I=%e \n",idot); printf("Cuc=%e \n",cuc);

卫星位置计算程序

#include #include"math.h" #include"float.h" using namespace std; double kpro(double mk,double e){ double f[2000],ek; int i=0; f[0]=mk; do{ f[i+1]=mk+e*sin(f[i]); i++; }while(abs(f[i+1]-f[i])>=0.005); ek=f[i+1]; return ek; } #define PI 3.14159265357589 int main(void){ double toc,a2,a1,a0,dotn,t1,m0,e,roota,toe,cic,crc,cis,crs,cuc,cus,omega0,omega,i0,omegadot,idot; double n,n0,dott,t,tk,mk,ek,vk,ak,u,r,i,uk,rk,ik,xk,yk,wk,we,x,y,z; int k,j; cout<<"输o?入¨?秒?数oy据Y参?数oy toc\n"; cin>>toc; cout<<"输o?入¨?秒?数oy据Y幂Y数oy\n"; cin>>k; toc=toc*pow(10,k); cout<<"输o?入¨?时o?à钟¨?修T正y2 a2\n"; cin>>a2; cout<<"输o?入¨?时o?à钟¨?修T正y1 a1\n"; cin>>a1; cout<<"输o?入¨?时o?à钟¨?修T正y0 a0\n"; cin>>a0; cout<<"输o?入¨?摄|?动?¥改?正y数oy dn\n"; cin>>dotn; cout<<"输o?入¨?观?测a时o?à间? t'\n"; cin>>t1; cout<<"输o?入¨?反¤??常?ê m0\n"; cin>>m0; cout<<"输o?入¨?偏?心?率¨o e\n"; cin>>e; cout<<"输o?入¨?长?è半??径?平?方¤?根¨′ roota\n"; cin>>roota; cout<<"输o?入¨?星?历¤¨2基¨′准á?时o?à间?系|ì数oy toe\n"; cin>>toe; cout<<"输o?入¨?星?历¤¨2基¨′准á?时o?à间?幂Y数oy\n"; cin>>j; toe=toe*pow(10,j); cout<<"输o?入¨?对?倾?角?余?¨¤弦¨?校?ê正y值|ì cic\n"; cin>>cic;

实验10 符号计算基础与符号微积分(第7章)

实验10 符号计算基础与符号微积分 (第7章 MATLAB 符号计算) 一、实验目的 二、实验内容 1. 利用符号表达式求值 已知x=6,y=5,利用符号表达式求 z = 提示:定义符号常数x=sym(‘6’),y=sym(‘5’)。 程序及运行结果(建议在命令窗口输入命令并运行): 2. 分解因式 (1) x 4-y 4 (2) 5135 程序及运行结果(建议在命令窗口输入命令并运行): 《数学软件》课内实验 王平

3. 化简表达式 21212 483(1)sin cos cos sin (2) 21x x x ββββ++-+ 4. 符号矩阵运算 已知 12010100100,010,001101a b c P P A d e f g h k ???? ?? ??????===?????? ???????????? 完成下列运算: (1) B=P 1·P 2·A 。 (2) B 的逆矩阵并验证结果。 (3) 包括B 矩阵主对角线元素的下三角阵。 (4) B 的行列式值。 5. 用符号方法求下列极限或导数 sin tan 301(1)2(1)1cos(2)(1)lim (2)lim ,',''sin x x x x x e e x y y y x x +→→-+---=求 3222(4),,, cos ln x a t dA d A d A A dx dt dxdt t x x ??=???? 已知分别求 程序及运行结果(建议在命令窗口输入命令并运行): 2222 0,1 (5)(,)(2),, x y xy x y y f f x y x x e x x y ---==??=-???已知求 6. 用符号方法求下列积分 48(1) (2)1dx x x ++?

GPS卫星位置的计算

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+00 1.410000000000E+02-1.721875000000E+01 4.502687555010E-09 1.413760604187E+00 -7.990747690201E-07 7.598234573379E-03 1.118145883083E-05 5.153709835052E+03 4.536000000000E+05-1.303851604462E-08-1.095067942661E-01 1.527369022369E-07 9.571235745530E-01 1.640000000000E+02-2.656176299285E+00-8.0374********E-09 -5.193073455211E-10 1.000000000000E+00 1.389000000000E+03 0.000000000000E+00 2.000000000000E+00 0.000000000000E+00-1.024*********E-08 1.410000000000E+02 4.464490000000E+05 4.000000000000E+00 程序设计部分: #include #include 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;

GPS卫星导航信号产生过程

2.1.2 信号结构与特性 2.1.2.1 信号组成 GPS 系统采用典型的CDMA 体制,这种扩频调制信号具有低截获概率特性,系统以码分多址形式区分各卫星信号。目前GPS 系统是部分公开的,采用的伪码有C/A 码、P(Y)码等。该系统主要利用直接序列扩频调制技术,采用1.023MHz (C/A 码)和10.23MHz (P(Y)码)两种速率的伪随机码在L1和L2频率上调制发射50Hz 的导航定位信息,L1和L2频率在和平时期是确知的,分别为1575.42MHz 和1227.6MHz ,其中L1频率上的信号是非平衡QPSK 调制,其I 通道上的伪码序列是C/A 码,其Q 通道的伪码序列是P 码;L2频率上采用P 码扩频的BPSK 调制。目前,GPS 信号组成可由2.1.2-1式表示。式中P A 、C A 和P B 分别为载波L 1、L 2的振幅,)(t P i 、)(t G i 和)(t D i 分别为第i 颗卫星的P 码、C/A 码和导航电文D 码。1ω、2ω分别为载波L 1、L 2的角频率,i 1?和i 2?分别为第i 颗卫星载波L 1、L 2的初始相位。图2.1.2.1为GPS 信号结构。 图2.1.2.1 GPS 卫星信号产生机理 (2.1.2-1) GPS 信号采用L 波段作为载波,主要是因为其独有的频段特性:L 波段的频率占用率低于其他频段,不易发生频率冲突,利于导航定位测量;GPS 卫星采用直接序列扩频通信技术发送导航电文,信号带宽高达20MHz 左右,在占用率低的L 波段上,易于传送扩频后的宽带信号;卫星在约20000km 的高空运行,卫星信号的载波频率越高,多普勒频移就越大,有利于测量用户的行驶速度;GPS 系统使用L 波段的信号工作波长为19cm 和24cm , 12111122()()()cos()()()sin()()()()cos() i L P i i i C i i i i L P i i i S t A P t D t t A G t D t t S t B P t D t t ω?ω?ω??=+++??=+??总和模2和混频器

卫星导航定位算法与程序设计_单点定位程序流程

GPS 单点定位程序流程 、计算流程 读取RINEX N 文件,将所有星历放到一个列表(数组) ephlst 中。 数据预处理 根据epoch 中的卫星号和历元时刻T R 在ephlst 查找相应的卫星星历, 1、 2、 读取RINEX 以件,读取一个历元观测值epoch 3、 4、 准则T R TOE 3600.0s 。 程序初始化,置测站概略位置为X r ,接收机钟差初值dt r 。 X o X 0 X Y dt Z 第一次迭代,取X 。 o cdt r 0 0 0 5、选择epoch 中一颗卫星S i 观测值,设其伪距为 S 6、计算卫星§的信号发射的概略时刻T*方法如下: a )卫星S i 的信号传播时间:0S Si / c dt r dt Si ;dt Si 为卫星钟差,需要进行相 对论改正; b )卫星S i 的信号发射时刻:T S T R Si ; c )卫星S i 在T Si 时刻的位置X S T Si X S Y Si Z Si d )对卫星位置X Si T Si 进行地球自转改正,得到 Xj e )根据X W i T Si 和测站概略位置X r 计算卫星和测站的几何距离 R S f )根据几何距离R Si 求信号传播时间I S R S /c

g ) 如果/ o S 10 7,则退出迭代。T 1Si T R :即为卫星信号发射时刻 h ) 否则0s i Si ,回带到b )进行迭代。 7、 求卫星§方向余弦 V V s i VW S 77S s 入入 I S 丫丫 s ZZ s A t o ' S — ,b i S ,炬’ S ,b ; 1 R i R S R S 8、 求卫星S 在观测方程式中的余数项: 其中: Si —— 卫星S j 的伪距观测值; R Si —— 卫星S 到测站的几何距离; c dt S 以米表示的卫星S i 的钟差; d trop —— 对流层延迟改正量,单位米,用简化的 hopfield 模型计算; d iono —— 电离层延迟改正量,单位米,采用无电离层伪距组合观测值时,此项为 0; D RTCM ——对伪距的差分改正值,此处为 0; 10、 重复第6— 9步,计算每颗卫星的系数和余数项 11、 将所有卫星的系数组成误差方程,以 x,y,z,cdt r 为未知参数进行求解,形 式应该是:AX L b S 0 t 1So 玻。 1 b? b* b ; 1 T S S S A 2 X x y z cdt L I s0 l S1 L l Si M M M M b S b Si b ; 1 i 0,1,L ,svnum 1 12、 求解法方程X A T PA 1 A T PL ,求出定位结果 |Si Si R Si c dt Si d trop d iono D RTC M 9、 选择epoch 中下一颗卫星S j 观测值,设其伪距为 S j

GPS卫星坐标计算

卫星定位技术与方法--根据广播星历参数计算卫星坐标 作业报告 指导教师:熊永良 班级:测绘二班 学生姓名:段海东 学生学号: 2 0 0 8 0 7 8 3 作业日期: 2010 年 12月 08 日

目录 一. 已知数据................................ 错误!未定义书签。 二. 计算步骤............................... 错误!未定义书签。 1.平均角速度 (mean angular speed) ........ 错误!未定义书签。 2.规化时刻(normal time) .................. 错误!未定义书签。 3.平近点角(mean anomaly) ................. 错误!未定义书签。 4.偏近点角(eccentric anomaly) ............ 错误!未定义书签。 5.真近点角(true anomaly) ................. 错误!未定义书签。 6.升交距角(argument of ascending node) ... 错误!未定义书签。 7. 轨道向径(Orbital radius)............ 错误!未定义书签。 8. 扰动改正(Perturbed correction)...... 错误!未定义书签。

10.卫星在升交点轨道直角坐标系中的坐标.... 错误!未定义书签。 11. 升交点经度(Longitude of ascending node)错误!未定义书 签。 三. 源程序.................................. 错误!未定义书签。四.程序运行结果........................... 错误!未定义书签。 七.作业体会................................. 错误!未定义书签。 根据广播星历参数计算卫星坐标 一. 已知数据:根据以下的广播星历参数计算UTC2004年1月30日8点0分00秒—20分00秒,每隔一分钟的PRN7的卫星坐标。Compute the coordinate of PRN7 with interval of 1 minute. Navigation data:

C语言计算GPS卫星位置

C 语言计算GPS 卫星位置 1 概述 在用GPS 信号进行导航定位以及制订观测计划时,都必须已知GPS 卫星在空间的瞬间位置。卫星位置的计算是根据卫星电文所提供的轨道参数按一定的公式计算的。本节专门讲解观测瞬间GPS 卫星在地固坐标系中坐标的计算方法。 2 卫星位置的计算 1. 计算卫星运行的平均角速度n 根据开普勒第三定律,卫星运行的平均角速度n0可以用下式计算: () 114/3 )(30-= =a M a G n μ 式中μ为WGS-84坐标系中的地球引力常数,且μ=3.986005×1014m 3 /s 2 。平均角速度n 0加上卫星电文给出的摄动改正数Δn ,便得到卫星运行的平均角速度n n=n 0+Δn (4-12) 2. 计算归化时间t k 首先对观测时刻t ′作卫星钟差改正 t=t ′-Δt 2)'()'(210oc oc t t a t t a a t -+-+=? 然后对观测时刻t 归化到GPS 时系 t k =t-t oc (4-13) 式中t k 称作相对于参考时刻t oe 的归化时间(读者注意:toc ≠toe )。 3. 观测时刻卫星平近点角M k 的计算 M k =M 0+n tk (4-14) 式中M 0是卫星电文给出的参考时刻toe 的平近点角。 4. 计算偏近点角E k E k =M k +esinE k (E k ,M k 以弧度计) (4-15) 上述方程可用迭代法进行解算,即先令E k =M k ,代入上式,求出E k 再代入上式计算,因为GPS 卫星轨道的偏心率e 很小,因此收敛快,只需迭代计算两次便可求得偏近点角E k 。 5. 真近点角V k 的计算 由于: ()164) cos 1()(cos cos ---=k k k E e e E V

GPS卫星的基本运行规律与GPS卫星位置计算

第3章 卫星的基本运行规律与GPS 卫星位置计算 GPS 卫星定位必须已知其在空间的瞬时位置,而针对GPS 卫星在协议地球坐标系中瞬时位置的研究,就是GPS 卫星的轨道运动理论。本章主要内容包括卫星无摄运动、受摄运动以及卫星瞬时位置与瞬时速度的计算等内容。 3.1 卫星的无摄运动 忽略所有的摄动力,仅考虑地球质心引力的情况下来研究卫星相对于地球的运动,在天体力学中,称之为二体问题。二体问题下的卫星运动虽然是一种近似描述,但能得到卫星运动的严密分析解,从而可以在此基础上再加上摄动力来推求卫星受摄运动的轨道。在摄动力的作用下,卫星的运动将偏离二体问题的运动轨道,常将此称为考虑了摄动力作用的受摄运动。 一、二体意义下卫星的运动方程 将地球和卫星均假设为质量集中的质点,研究二者在万有引力作用下的相对运动问题,在天体力学中称为二体问题。根据万有引力定律,地球受卫星的引力F e 可表示为 r r r m M G F e ? ??= 2 (3-1) 卫星受地球的引力F s 与F e 数值相等方向相反,根据牛顿第二定律卫星和地球在万有引力作 用下产生的加速度a s 和a e 分别为 ?? ?? ? ??=? ?-=r r r m G a r r r M G a e s 2 2 (3-2) 则卫星相对于地球的加速度A 应为 r r r m M G a a A e s ?+?-=-=2 )( (3-3) 因为m<

用MATLAB计算GPS卫星位置-最新文档资料

用MATLAB计算GPS卫星位置 GPS定位的基本原理简单来说就是在WGS-84空间直角坐标系中,确定未知点与GPS卫星的空间几何关系。因此利用GPS进行导航和测量时,卫星是作为位置已知的高空观测目标。那么如何精确快速的解算出卫星在空间运行的轨迹即其轨道是实现未 知点快速定位的关键。 1 标准格式RINEX格式简述 在进行GPS数据处理时,由于接收机出自于不同厂家,所以厂家设计的数据格式也是五花八门的,但是在实际中,很多时候需要把来自不同型号的接收机的数据放在一块进行处理,这就需要数据格式的统一,为了解决这种矛盾,RINEX(英文全称为:The Receiver Independent Exchange Format)格式则应运而生,该格式存储数据的类型是文本文件,数据记录格式是独立于接收机的出自厂家和具体型号的。由此可见,其特点是:由于是通用格式,所以可将不同型号接收机收集的数据进行统一处理,并且大多数大型数据处理软件都能够识别处理,此外也适用于多种型号的接收机联合作业,通用性很强。 RINEX标准文件里不是单一的一个文件,而是包括如下几种类型的文件[1]。 (1)观测数据文件(ssssdddf.yyo),记录的是GPS观测值信息,(OBServation data,简写OBS,为接收机记录的伪距、

相位观测值;O文件,如XG012191.10O)。 (2)导航电文文件(ssssdddf.yyn),记录的是GPS卫星星历信息(NAVavigation data,简写NAV,记录实时发布的广播星历;N文件,如XG012191.10N)。 (3)气象数据文件(ssssdddf.yym),主要是在测站处所测定的气象数据(METerological data,简写MET,记录气象仪器观测的温、压、湿度状况;M文件,如XG012191.10M)。 (4)GLONASS导航电文文件(ssssdddf.yyg),记录的是地球同步卫星的导航电文。 由上述可见,RINEX文件的命名规则为ssssdddf.yyt(t指的是数据类型,不同的文件,t所代表的字母不同),其中文件名前四个字母(ssss)指的是测站名,一般是用字母和数字的组合来定义,方便识别,用户自己定义。紧跟着的三个字母(ddd)指的是第一组数据的年积日(年积日是仅在一年中使用的连续计算日期的方法,是从当年1月1日起开始计算的天数。例如:每年的1月1日为第1日,2月1日为第32日,以此类推)如219表示8月7号,年积日的计算可通过在网上下载软件进行快速计算,也可自己编一个小程序计算。f指的是观测当天文件的观测序列号,其可以在0~9或A~Z中取值,如果文件序号取值为0,则其意味着今天一天观测的所有数据都放在该文件中,用户则不用在所有文件中一一去找当天的某个文件,只需在此文件中进行查询即可。对于f的理解,还有一点需要注意,通过下面的例子

GPS卫星位置计算(C语言)

#include #include #include #define bGM84 3.986005e14 #define bOMEGAE84 7.2921151467e-5 void main() { long double roota=0.515365263176E+04; //轨道长半轴的平方根(根号a) long double toe=0.720000000000E+04; //观测时刻toe long double m0=-0.290282040486E+00; //参考时刻toe的平近点角 long double e=0.678421219345E-02; //轨道偏心率e long double delta_n=0.451411660250E-08;//卫星的摄动改正数△n long double smallomega=-0.258419417299E+01;//近地点角距ω long double cus=0.912137329578E-05;//纬度幅角正弦调和项改正的振幅(弧度)long double cuc=0.189989805222E-06;//纬度幅角余弦调和项改正的振幅(弧度)long double crs=0.406250000000E+01;//轨道半径的余弦调和项改正的振幅(m)long double crc=0.201875000000E+03;//轨道半径的正弦调和项改正的振幅(m)long double cis=0.949949026108E-07;//轨道倾角的余弦调和项改正的振幅(弧度)long double cic=0.130385160446E-07;//轨道倾角的正弦调和项改正的振幅(弧度)long double idot=-0.253939149013E-09;//轨道倾角变化率I long double i0=0.958512160302E+00; //轨道倾角(弧度) long double bigomega0=-0.137835982556E+01;//升交点赤经 long double earthrate=bOMEGAE84; //地球自转的速率we long double bigomegadot=-0.856928551657e-08; long double t=0.720000000000E+04; //加入卫星钟差改正的归化时间 long double A; long double n0=0,n,tk; long double mk,ek,tak,ik,omegak,phik,uk,rk; long double corr_u,corr_r,corr_i; long double xpk,ypk,xk,yk,zk; int i; printf("输入的数据:\n"); printf("√a=%e \n",roota); printf("toe=%e \n",toe); printf("e=%e \n",e); printf("i0=%e \n",i0); printf("ω=%e \n",smallomega); printf("△n=%e \n",delta_n); printf("Ω0=%e \n",bigomega0); printf("I=%e \n",idot); printf("Cuc=%e \n",cuc); printf("Cus=%e \n",cus); printf("Crc=%e \n",crc); printf("Crs=%e \n",crs);

相关文档
最新文档