作业报告卫星坐标计算.docx

上传人:b****1 文档编号:2465266 上传时间:2023-05-03 格式:DOCX 页数:13 大小:212.46KB
下载 相关 举报
作业报告卫星坐标计算.docx_第1页
第1页 / 共13页
作业报告卫星坐标计算.docx_第2页
第2页 / 共13页
作业报告卫星坐标计算.docx_第3页
第3页 / 共13页
作业报告卫星坐标计算.docx_第4页
第4页 / 共13页
作业报告卫星坐标计算.docx_第5页
第5页 / 共13页
作业报告卫星坐标计算.docx_第6页
第6页 / 共13页
作业报告卫星坐标计算.docx_第7页
第7页 / 共13页
作业报告卫星坐标计算.docx_第8页
第8页 / 共13页
作业报告卫星坐标计算.docx_第9页
第9页 / 共13页
作业报告卫星坐标计算.docx_第10页
第10页 / 共13页
作业报告卫星坐标计算.docx_第11页
第11页 / 共13页
作业报告卫星坐标计算.docx_第12页
第12页 / 共13页
作业报告卫星坐标计算.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

作业报告卫星坐标计算.docx

《作业报告卫星坐标计算.docx》由会员分享,可在线阅读,更多相关《作业报告卫星坐标计算.docx(13页珍藏版)》请在冰点文库上搜索。

作业报告卫星坐标计算.docx

作业报告卫星坐标计算

 

GPS卫星导航定位技术与方法作业报告之

卫星坐标计算

 

1作业任务------------------------------------------------------------------------------------3

2作业思想---------------------------------------------------------------------------------------3

3作业条件及数据--------------------------------------------------------------------3

4作业过程---------------------------------------------------------------------------4

5源程序-----------------------------------------------------------------------------5

6计算结果---------------------------------------------------------------------------9

7心得体会与建议-----------------------------------------------------------------------------9

1作业任务

根据教材所给广播星历参数,编程计算UTC2004年1月30日8点0分00秒—20分00秒,每隔1分钟的卫星号为7的卫星坐标。

2作业思想

根据教材提供广播星历参数,按照卫星坐标计算步骤一步一步求解表示卫星位置的量,最后求出卫星在地固坐标系中的空间直角坐标。

根据历元间隔,计算出共21个历元的卫星坐标。

此次作业的已知条件及计算步骤均为教材提供且思路清晰,简明易懂,只要在编程过程中注意个已知量、中间量和待求量的表示及数据对应正确,涉及角度的计算时小心避免错误即可。

3作业条件及数据

由GPS卫星导航文件(表3.1)提取出7号卫星的轨道参数及其摄动改正项

表3.1

提取及整理后的广播星历参数:

 

星历参数

参数值

参数含义

Δn

4.85305928777E-09

给定的星历参数计算值的平均速度no之改正数(弧度)

√a

5.15373039818E+03

卫星轨道长半轴的平方根

t0e

4.60800000000E+05

星历的参考时刻,从星期日零时开始量度,以秒计

M0

-2.14992476872E+00

参考时刻t0e的平近点角(弧度)

e

1.25958691351E-02

轨道偏心率

ω

-1.85137234909E+00

近地点角距(弧度)

Cuc

2.75485217571E-06

升交点角距的余弦调和改正项的振幅(弧度)

Cus

9.03755426407E-06

升交点角距的正弦调和改正项的振幅(弧度)

Crc

1.91875000000E+02

轨道半径的余弦调和改正项的振幅(弧度)

Crs

5.37812500000E+01

轨道半径的正弦调和改正项的振幅(弧度)

Cic

2.06753611565E-07

轨道倾角的余弦调和改正项的振幅(弧度)

Cis

-7.26431608200E-08

轨道倾角的正弦调和改正项的振幅(弧度)

IDOT

-1.31434044204E-10

轨道倾角的变率

i0

9.37690094716E-01

参考时刻的轨道倾角(弧度)

Ω

-7.91890109042E-09

升交点赤经的变率(弧度/s)

Ω0

1.93198315097E+00

GPS周开始时刻的升交点经度(弧度)

4作业过程

(10)升交点经度:

λt=Ω0+(Ω-ωe)(t-t0e)-ωet0e

式中:

ωe为地球自转角速度,ωe=7.2921151467×10-5rad/s;Ω为升交点赤经变化率,Ω0为GPS周开始时刻的升交点经度,Ω和Ω0均由星历文件给出;t0为参考时刻,一般取t0=0,为一周的开始(星期日的子夜);t0e为广播星历的参考历元时刻,从t0开始起算;

(11)卫星在地固坐标系中的空间直角坐标为:

式中:

为旋转矩阵,将其代入并展开后得

5源程序

#include

#include

#include

#include

#include

 

constintk=20;//历元数

doubleX[k],Y[k],Z[k];//计算所得卫星坐标

constdoubleGM=3986004.418E8;//地球引力常数

constdoublewe=7.2921151467E-5;//地球自转角速度

doubledn,a05,t0e,M0,e,w,Cuc,Cus,Crc,Crs,Cic,Cis,IDOT,i0,WMG,WMG0;//定义广播星历参数

 

//广播星历参数导入

voidInput()

{

ifstreamf1("广播星历参数.txt");

if(!

f1)

{

cerr<<"广播星历参数.txtfilenotopen!

"<

exit

(1);

}

f1>>dn;

f1>>a05;

f1>>t0e;

f1>>M0;

f1>>e;

f1>>w;

f1>>Cuc;

f1>>Cus;

f1>>Crc;

f1>>Crs;

f1>>Cic;

f1>>Cis;

f1>>IDOT;

f1>>i0;

f1>>WMG;

f1>>WMG0;

f1.close();

}

//卫星坐标计算

voidCompute(doublet,intk)

{

doublen0,n,tk,Mk,E0,Ek,Vk,fk,du,dr,di,uk,rk,ik,xk,yk,Lt;//定义卫星坐标计算过程中间量

//()计算平均角速度n:

n0=sqrt(GM/pow(a05,6));

n=n0+dn;

//()计算规化时刻tk:

tk=t-t0e;

//()计算平近点角Mk:

Mk=M0+n*tk;

//()迭代计算偏近点角Ek:

E0=Mk;

do

{

Ek=Mk+e*sin(E0);

E0=Ek;

}while(Mk+e*sin(E0)-E0>=1e-8);

//()计算真近点角Vk:

doublev1=sqrt(1-e*e)*sin(Ek);

doublev2=cos(Ek)-e;

Vk=atan2(v1,v2);

//()计算升交角距fk:

fk=Vk+w;

//()摄动改正:

du=Cuc*cos(2*fk)+Cus*sin(2*fk);//升交角距改正du

dr=Crc*cos(2*fk)+Crs*sin(2*fk);//轨道向径改正dr

di=Cic*cos(2*fk)+Cis*sin(2*fk);//轨道倾角改正di

uk=fk+du;//改正后的升交角距uk

rk=a05*a05*(1-e*cos(Ek))+dr;//改正后的轨道向径rk

ik=i0+di+IDOT*tk;//改正后的轨道倾角ik

//()计算卫星在升交点轨道直角坐标系的坐标:

xk=rk*cos(uk);

yk=rk*sin(uk);

//()计算升交点精度:

Lt=WMG0+(WMG-we)*(t-t0e)-we*t0e;

//()计算卫星空间直角坐标:

X[k]=xk*cos(Lt)-yk*cos(ik)*sin(Lt);

Y[k]=xk*sin(Lt)+yk*cos(ik)*cos(Lt);

Z[k]=yk*sin(ik);

}

 

voidmain()

{

Input();

for(inti=0;i

{

doublet=t0e+i*60;

Compute(t,i);

}

cout<<"历元/s卫星号X/mY/mZ/m卫地距离"<

for(i=0;i

{

cout.precision(11);

cout<

}

 

//输出结果到“卫星坐标计算结果.txt”

ofstreamoutfile;

outfile.open("卫星坐标计算结果.txt");

if(outfile.is_open())

{

outfile<<"历元/s卫星号X/mY/mZ/m卫地距离"<

for(inti=0;i

{

outfile.precision(11);

outfile<

}

}

outfile.close();

}

 

6计算结果

表6.1卫星坐标计算结果

历元/s

卫星号

X/m

Y/m

Z/m

460800

7

-13413856.780

16092624.867

16628017.859

460860

7

-13535898.784

16110553.892

16507426.350

460920

7

-13657027.021

16128646.858

16385596.447

460980

7

-13777233.046

16146894.386

16262536.953

461040

7

-13896508.546

16165287.016

16138256.762

461100

7

-14014845.333

16183815.202

16012764.866

461160

7

-14132235.351

16202469.318

15886070.351

461220

7

-14248670.673

16221239.658

15758182.394

461280

7

-14364143.505

16240116.437

15629110.267

461340

7

-14478646.186

16259089.796

15498863.336

461400

7

-14592171.191

16278149.799

15367451.057

461460

7

-14704711.126

16297286.439

15234882.978

461520

7

-14816258.739

16316489.636

15101168.738

461580

7

-14926806.913

16335749.242

14966318.067

461640

7

-15036348.668

16355055.042

14830340.783

461700

7

-15144877.166

16374396.755

14693246.795

461760

7

-15252385.710

16393764.036

14555046.099

461820

7

-15358867.742

16413146.476

14415748.781

461880

7

-15464316.851

16432533.610

14275365.013

461940

7

-15568726.765

16451914.911

14133905.053

462000

7

-15672091.358

16471279.797

13991379.245

7心得体会与建议

此次作业是本学期“GPS卫星导航定位技术与方法”课程的第一次编程实践作业。

在学习了教材第三章“卫星轨道运动及卫星坐标计算”之后,初步对卫星坐标计算有一定认识,担不是很深刻。

开始此次作业时,又温习了一遍这个部分的内容,进一步理解勒表示卫星位置的一些参数和量,还有计算的过程和步骤,然后根据已知条件从GPS导航文件中提取出计算所需的广播星历计算参数,按照程序导入文件要求的相应格式输入到txt文本中,作为导入已知数据准备。

在编程的过程中,由于去年摄影测量课程的编程基础,感觉编写的代码还算得心应手,没有遇到什么特别大的困难。

不过有些小地方出错,例如:

1.忘记调用导入已知数据的子程序;2.还有计算过程中,求弧度值的反正切涉及的函数选择问题,一开始使用的是tan()函数,但是这个函数不能很好解决弧度区间的问题,以至计算错误,后来改用了tan2()函数便解决这个问题;3.当解决了前两个问题,调用函数之后对比计算结果与教材中计算结果,发现差别很大,于是又找原因,在与同学的交流之后才发现原来是书上的地球自转角速度we的数量级写错了,不是12而是-5,改正之后再次调用,得到正确的计算结果,总算完成了作业的主要任务。

完成此次作业的过程中,不仅加深了对该部分内人的理解和记忆,也提供机会使我们对c++编程更为熟悉。

这次作业最大的收获,不只是完成了作业任务,从中我也体会了不少,自己以后应该更加耐心,出现错误不要紧,要学会细心找原因然后解决问题,同时,多和老师同学交流一定是有益的,多学习别人的思想的优处,多反思自己的缺陷。

也感谢老师让我们又锻炼了一次。

谢谢老师的审阅!

辛苦了!

O(∩_∩)O

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2