C语言计算GPS卫星位置_第1页
C语言计算GPS卫星位置_第2页
C语言计算GPS卫星位置_第3页
C语言计算GPS卫星位置_第4页
C语言计算GPS卫星位置_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言计算GPS卫星位置1概述在用GPS信号进行导航定位以及制订观测计划时,都必须已知GPS卫星在空间的瞬间位置。卫星位置的计算就是根据卫星电文所提供的轨道参数按一定的公式计算的。本节专门 讲解观测瞬间 GPS卫星在地固坐标系中坐标的计算方法。2卫星位置的计算1、计算卫星运行的平均角速度 n根据开普勒第三定律,卫星运行的平均角速度 nO可以用下式计算:式中为 WGS-84坐标系中的地球引力常数,且卩=3、986005X 1014mi/s2。平均角速度no加上卫星电文给出的摄动改正数n,便得到卫星运行的平均角速度 nn二e+A n(4-12)2、计算归化时间t k首先对观测时刻t作卫星钟差改正t

2、=t - A tt a0a1(t toe) a2(t toe)2然后对观测时刻t归化到GPS时系t k=t-t oe(4-13)式中t k称作相对于参考时刻toe的归化时间(读者注意:toe工toe)。3、 观测时刻卫星平近点角M的计算M=M+ntk(4-14)式中M就是卫星电文给出的参考时刻toe的平近点角。4、计算偏近点角EH=M+esinEk(Ek,Mk 以弧度计)(4-15)上述方程可用迭代法进行解算,即先令Ek=M,代入上式,求出Ek再代入上式计算,因为GPS卫星轨道的偏心率 e很小,因此收敛快,只需迭代计算两次便可求得偏近点角Ek。5、真近点角Vk的计算4 16由于:cosVk(c

3、os Ek e)/(1 eeosEk)4 17sinVk arctg , 1 e2 sin Ek (cosEk e)V k arctg :(1e ) sin E. (cos E k e)4186.升交距角k的计算kVk(419)CO为卫星电文给出的近地点角距。7、 摄动改正项3 u,3 r, 3 i的计算uCuecos(2k )C ussin (2k)rrC rccos(2k )C rssin (2k)(420)riCiccos(2k) Cissin (2k)3u, 3 r,3i分别为升交距角u的摄动量,卫星矢径r的摄动量与轨道倾角因此:摄动量。i的8、计算经过摄动改正的升交距角Uk、卫星矢径

4、rk与轨道倾角i kukk u(4 21)rk a(1 ecosEk)ik i0 i Itk9、计算卫星在轨道平面坐标系的坐标卫星在轨道平面直角坐标系(X轴指向升交点)中的坐标为Xkrk cosuk(4 22) yk rk si nuk10、观测时刻升交点经度Q k的计算升交点经度Q k等于观测时刻升交点赤经Q (春分点与升交点之间的角距 )与格林泥治视 恒星时GAST春分点与格林尼治起始子午线之间的角距)之差,Q k=Q -GAST(4-23)又因为:oetk(4-24)其中Q oe为参与时刻t oe的升交点的赤经就是升交点赤经的变化率,卫星电文每小时更新一次Q与t oe。此外,卫星电文中提

5、供了一周的开始时刻tw的格林尼治视恒星时GAST。由于地球自转作用,GAST不断增加,所以:GAST=GASF3 et(4-25)式中3 e=7、29211567x 10-5rad/s 为地球自转的速率;t为观测时刻。由式 (4-24) 与 (4-25), 得:oeGASTwet由(4-13)式, 得:0(e )t ke toe(4-27)其中 0oeGASTw ,o 、toe的值可从卫星电文中获取。11、计算卫星在地心固定坐标系中的直角坐标把卫星在轨道平面直角坐标系中的坐标进行旋转变换 的三维坐标 :, 可得出卫星在地心固定坐标系中12、XkYkZkxk cos k xk sin k yk

6、sin ikyk cos ik sin k yk cos i i cos k(4-28)卫星在协议地球坐标系中的坐标计算(4 29)考虑极移的影响 , 卫星在协议地球坐标系中的坐标为X10XpXkY01YpYkZ CTSXpYp1Zk利用 C 语言程序实现#include #include #include #include #define u 3 、 986004418e+14 #define WE 7 、292115e-6struct canshuint prn, nian, yue, ri, shi, fen;/ 卫星 PRN号,年,月,日,时,分double miao;/ 秒long

7、double adoe, a0, a1, a2, mo, dn, e, ga, pio, io, w, pid, ii, cuc, cus, cue, crs, crc, cis, cic, toe, aodc, wn;/*参数说明:ADOE值,a0卫星钟偏差,al卫星钟漂移,a2卫星钟频率漂移,M0 平近点角,An平运动差,e偏心率,a1/2半长轴的平方根,Q0轨道平面升交点经度,i0倾角,3近地点角距,* Q升交点速率,IDot倾角速率,Cue Cus升交角距的 摄动改正项 , Crc Crs 地心距的摄动改正项 , Cic Cis 倾角的摄动改正项 ,toe 参考历元 */;void w

8、xzbjx(struet eanshu *pt)long double a, n0, n, t, tk, toe, mk, ek, vk, fik, uk, rk, ik;long double xk, yk ,zk, lk;long double XK, YK, ZK;int temp;pt-nian = pt-nian + 2000;t = (long double)(pt -nian)- 1980) * 365 * 24 * 3600 + (pt -yue - 1) * 30 * 24 * 3600 + pt -ri* 24 * 3600 + pt-shi * 3600 + pt -mi

9、ao);a = pt -ga * pt -ga;n0 = sqrt(WE/(a*a*a);/ 平均角速度 n0n = n0 + pt -dn;tk = t - pt -toe;toe = pt -a0 + pt -a1 * (t - pt -toe) + pt -a2 * (t - pt-toe) * (t - pt - toe);tk = tk - pt -toe;mk = pt -mo + n * tk;ek = mk;for(temp=0;tempe * sin(ek);/ 利用迭代法求偏近点角 ekvk = 2 * atan(sqrt(1+ pt -e) / (1 - pt -e)*

10、(tan(ek) / 2 );fik = vk + pt -w;uk = fik + pt -cuc * cos(2* fik) + pt -cus * sin(2*fik);rk = pt -ga * pt -ga * (1 - pt -e * ek) + pt -crc * cos(2* fik) + pt -crs* sin(2*fik);ik = pt -io + pt -cic * cos(2 * fik) + pt -cis * sin(2* fik) + pt -ii * tk;xk = rk * cos(uk);yk = rk * sin(uk);zk = 0;lk = pt

11、-pio + (pt -pid - WE) * tk - WE * pt-toe;XK = xk * cos(lk) - yk * cos(ik) * sin(lk);YK = xk * sin(lk) + yk * cos(ik) * cos(lk);ZK = yk * sin(ik);printf(n%d 年%d 月 %d 号%d 时%、2f 秒 %d 号卫星的坐标:,pt-nian, pt- yue ,pt-ri , pt-shi ,pt-miao, pt-prn);printf(nXk = %、 9fnYk= % 、 9fnZK = % 、 9fnn, XK, YK, ZK);int

12、main(void)FILE *fp, *fp1, *fp2;struct canshu a;int i=0, hanhao = 1;long double temp1, temp2, temp3, temp5, temp4, temp6, temp7;char ch, ch1;星历文件 guangboxingli2 、 txt, r) = NULL) / 请自定 义星历文件位置及名称printf( 文件无法打开! );exit(0);elseNULL)星历文件 guangboxingli2fu 、txt, w) =printf( 文件无法打开! );exit(0);elsewhile(ch1

13、 = fgetc(fp1) != EOF)if(ch1 = n)i +;putchar(ch1);if(i = 15)break;while(!feof(fp1)ch1=fgetc(fp1);if(ch1 = D)ch1 = e;fputc(ch1,fp2);fclose(fp1);fclose(fp2);printf( 以上就是星历文件的头文件! n);system(pause);printf( 读取文件参数数据 n !);星历文件 guangboxingli2fu 、txt, r) = NULL) /创建计 算结果文档printf( 文件无法打开! );exit(0); while(!fe

14、of(fp)switch(hanhao)case 1:fscanf(fp,n%d%d%d%d%d%d%lf %le %le %le,&a、 prn, &a 、 nian, &a 、yue, &a 、ri, &a 、shi,&a 、fen, &a 、 miao, &a 、a0, &a 、 a1, &a 、a2);printf(%d %d %d %d %d %d %lf %le %le %le, a、prn, a 、 nian, a 、yue, a、ri, a 、shi,a 、fen, a 、 miao, a 、a0, a 、a1, a 、a2);hanhao+; case 2:fscanf(fp

15、,%le %le %le %le, &a&a 、 dn, &a 、 mo);printf(n%le %le %le %le, aa、 mo);hanhao+;case 3:fscanf(fp,%le %le %le %le, &acus, &a 、 ga);ga);printf(n%le %le %le %le, ahanhao+;case 4:fscanf(fp,%le %le %le %le, &apio, &a 、 cis);printf(n%le %le %le %le, aa、 cis);hanhao+;case 5:、adoe, &a 、 crs,adoe, a 、crs, a、d

16、n,、 cue, &a 、 e, &a 、cue, a 、e, a 、 cus, a 、toe, &a 、 cic, &a 、toe, a 、cic, a 、pio,fscanf(fp,%le %le %le %le, &a、io, &a 、crc, &a 、 w,&a 、 pid);P9QO(Dmp2x(Dmp2xC5S职斗wgps 曰mattprinff3n%_e %_e %_e %_e=ahanhao+casepcase T.fscanf(fp=%_e %_e %_e %_e-Qoaprinff3n%_e %_e %_e %_e=ahanhao+=:QO(DmpQOa 丿 wn-J=:(Dmpa wn-fscanf(fp=%_e %_e %_e %_e-ooCDmpwQO(Dm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论