版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z. - - . 可修编. 2013 级测绘工程专业卫星导航定位算法与程序设计实验报告实验名称:卫星导航根本程序设计班级:*:*:实验时间: 2016年6月28日2016年6月30 中国矿业大学目录 TOC o 1-3 h z u HYPERLINK l _Toc455149467实验一时空基准转换 PAGEREF _Toc455149467 h 2HYPERLINK l _Toc455149468一、实验目的 PAGEREF _Toc455149468 h 2HYPERLINK l _Toc455149469二、实验内容 PAGEREF _Toc455149469 h 2HYPERLI
2、NK l _Toc455149470三、实验过程 PAGEREF _Toc455149470 h 2HYPERLINK l _Toc455149471四、实验感想 PAGEREF _Toc455149471 h 2HYPERLINK l _Toc455149472实验二 RINE*文件读写 PAGEREF _Toc455149472 h 2HYPERLINK l _Toc455149473一、实验目的 PAGEREF _Toc455149473 h 2HYPERLINK l _Toc455149474二、实验内容 PAGEREF _Toc455149474 h 2HYPERLINK l _To
3、c455149475三、实验过程 PAGEREF _Toc455149475 h 2HYPERLINK l _Toc455149476实验三卫星轨道计算 PAGEREF _Toc455149476 h 2HYPERLINK l _Toc455149477一、实验目的 PAGEREF _Toc455149477 h2HYPERLINK l _Toc455149478二、实验内容 PAGEREF _Toc455149478 h 2HYPERLINK l _Toc455149479三、实验过程 PAGEREF _Toc455149479 h 2HYPERLINK l _Toc455149480四、实
4、验感想 PAGEREF _Toc455149480 h 2-. z.实验一时空基准转换一、实验目的1、加深对时空系统及其之间转换关系的理解2、掌握常用时空基准之间的转换模型与软件实现3、每人独立完成实验规定的内容二、实验内容本实验内容包括:内容一:编程实现GPS起点1980年1月6日0时对应的儒略日内容二:编程实现2011年11月27日对应的GPS周数与一周内的秒数内容三:在WGS84椭球的条件下,编程实现当中央子午线为117度时,计算高斯坐标* = 3548910.811290287, y = 179854.6172135982 对应的经纬度坐标?内容四:WGS84椭球下,外表*=-2408
5、000; y=4698000;z= 3566000处的地平坐标系坐标为: e=704.8615;n=114.8683;u=751.9771的点对应的直角坐标为多少?三、实验过程1.针对第一、二局部内容:1.1解决思路:先建立 TimeStruct.h的头文件,将格里高利历、GPS时间构造、儒略日时间构造共构造体的方式放在里面;在建立“TimeTr的头文件,建立类“CTimeTr,创立变量“GPSTime、“Time、JulDay,并且申明函数“TIME2JUL、“TIME2GTIME等,用这些函数分别实现所需要的转换。1.2具体的实现函数:“TIME2JUL函数:double CTimeTr:
6、TIME2JUL()/TIME Time,JULIANDAY &JulDaydouble m,y;double D;/h =Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00;if(Time.byMonth=2)y=Time.wYear-1;m=Time.byMonth+12;elsey=Time.wYear;m=Time.byMonth;D=floor(365.25*(y+4716)+floor(30.6001*(m+1)+Time.byDay+Time.byHour/24.0-1537.5;JulDay.lDay = int(D);Jul
7、Day.lSecond = D-int(JulDay.lDay);return 0;“TIME2GTIME:void CTimeTr:TIME2GTIME()double JD;long m,y;int WN;double Wsecend;/UT=Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00;if(Time.byMonth=0.0001 & abs(l1-l0)=0.0001 B0=B1; aa0=aa1; l0=l1; F_*B=(c*Beta2+(c*Beta4+(c*Beta6+c*Beta8*cos(B0)2)*cos(B0)2
8、)*cos(B0)2)*sin(B0)*cos(B0); F_*Bl=a2*l02+a4*l04+a6*l06; F_yBl=a3*l03+a5*l05; B1=(*-F_*B-F_*Bl)/(c*Beta0); aa1=(a*cos(B1)/sqrt(1-e2*(sin(B1)2); l1=(y-F_yBl)/aa1;endL=rad2deg(l1)+L0;B=rad2deg(B1);2.3实验结果四、实验感想本次试验是花时间较多的一次实验,关于时间转换的局部全部都是自己动手将matlab代码写成“C+的类,进展实现的。其中遇到的较大的困难是儒略日向UTC转换的局部,这局部的函数步骤较多,关
9、键是在一开场的时间构造里面,各时间各局部的数据类型大多定义的是“int型的,但是在进展计算的时候有较多的小数,需要用到浮点型的函数,这局部用了较多的时间。在做这个实验的时候,第一天花了时间主要是转换代码,使程序没有错误,能够正常的运行出来,出现黑框框,但是还只有个别功能能够用,能够运行出正确的结果;第二天时间主要是花在修改函数上头,能够使所写的功能都能运行出正确的结果。通过做时间转换的实验,使自己产生了第一次亲自编写“C+代码的经历,而且所有错误的解决全部都是自己解决,收获不少。实验二 RINE*文件读写一、实验目的1、深入了解RINE*文件格式2、进一步提高MATLAB程序设计能力3、掌握N
10、文件、O文件、SP3文件的根本读写技巧二、实验内容本实验内容包括:1、任选IGS站,下载N文件、O文件与SP3文件;2、编程实现N文件读入,并采用中文标注出主要参数的名称及作用;编程实现O文件读入,并采用中文标注出主要参数的名称及作用;5、编程实现SP3文件读入,并采用中文标注出主要参数的名称及作用;三、实验过程1、针对第一局部内容:编程实现N文件读入,并采用中文标注出主要参数的名称及作用1.1、解决思路:按照“GPSeasy开源代码提供的函数,按照实验要求读取了N文件的内容,先用“rine*e函数,将N文件读取成“eph.dat文件,然后再用“get_eph函数将“eph.dat文件读取成“
11、Eph矩阵,此矩阵中包含了N文件中的数据,在最后用“fprintf函数将所需要的数据输出成.T*T文件即可。1.2、主要函数代码:“get_eph函数:function eph = get_eph(ephemeridesfile)fide = fopen(ephemeridesfile);eph, count = fread(fide, Inf, double);noeph = count/22;eph = reshape(eph, 22, noeph);“rine*e函数局部:function rine*e(ephemerisfile, outputfile)fide = fopen(eph
12、emerisfile);head_lines = 0;while 1 head_lines = head_lines+1; line = fgetl(fide); answer = findstr(line,END OF HEADER);if isempty(answer), break; end;end;head_lines主函数中输出结果得函数局部:af0=data(19);%卫星中差 M0=data(3); roota=data(4); deltan=data(5); ecc=data(6); omega=data(7); cuc=data(8); cus=data(9); crc=da
13、ta(10); crs=data(11); i0=data(12); idot=data(13); toe=data(18); af1=data(20);%对所要输出的参数赋值fprintf(fid,n卫星编号:%dn卫星钟差:%dn平近点角距:%dn轨道长半轴的平方根:%dn平均运动修正量:%dn轨道偏心率:%dn近地点角距:%dn纬度幅角的余弦调和项改正的振幅,prn,af0,M0,roota,deltan,ecc,omega,cuc);fprintf(fid,纬度幅角的正弦调和项改正的振幅:%dn轨道半径的余弦调和项改正的振幅:%dn轨道半径的正弦调和项改正的振幅:%dn轨道倾角:%dn
14、轨道倾角变化率:%dn星历参考时刻:%dn,cus,crc,crs,i0,idot,toe)fclose(fid);1.3、输出结果2、针对第二局部内容:编程实现O文件读入,并采用中文标注出主要参数的名称及作用;2.1、实现思路:通过matlab的函数“fopen读取O文件,得到O文件的指针,通过“anheader函数将文件中的接收机大致位置 appro*_*YZ1,天线的偏移值 ant_delta1,观测值类型“Obs_types1等读入成为matlab的矩阵,然后通过循环,利用“grabdata函数将所需要的历元的观测文件依次输出来,最后通过“fprintf函数,将所需要的数据依次打印出来
15、。2.2、主要函数:“anheader函数:function Obs_types, ant_delta,ifound_types,appro*_*YZ = anheader(file)fid = fopen(file,rt);eof = 0;ifound_types = 0;Obs_types = ;ant_delta = ;appro*_*YZ = ;while 1 % Gobbling the header line = fgetl(fid); answer = findstr(line,END OF HEADER);if isempty(answer), break; end;if (l
16、ine = -1), eof = 1; break; end; answer = findstr(line,ANTENNA: DELTA H/E/N);if isempty(answer)for k = 1:3 delta, line = strtok(line); del = str2num(delta); ant_delta = ant_delta del;end;end answer = findstr(line,APPRO* POSITION *YZ);if isempty(answer)for k = 1:3 app_*YZ, line = strtok(line); del = s
17、tr2num(app_*YZ); appro*_*YZ = appro*_*YZ del;end;end answer = findstr(line,# / TYPES OF OBSERV);if isempty(answer) NObs, line = strtok(line); NoObs = str2num(NObs);for k = 1:NoObs ot, line = strtok(line); Obs_types = Obs_types ot;end; ifound_types = 1;end;end;%fclose(fid);“grabdata函数:function Obs =
18、grabdata(fid, NoSv, NoObs)%GRABDATA Positioned in a RINE* file at a selected epoch% reads observations of NoSv satellitesglobal linObs = zeros(NoSv, NoObs);if NoObs = 5 % This will typical be Turbo SII datafor u = 1:NoSv lin = fgetl(fid);for k = 1:NoObs Obs(u,k) = str2num(lin(2+16*(k-1):16*k-2); end
19、endelse% This will typical be Z12 data Obs = Obs(:,1 2 3 4 5); % We cancel the last two columns 6 and 7 NoObs = 5;for u = 1:NoSv lin = fgetl(fid); lin_doppler = fgetl(fid);for k = 1:NoObs %-1if isempty(str2num(lin(1+16*(k-1):16*k-2) = 1, Obs(u,k) = nan; else% Obs(u,k) = str2num(lin(1+16*(k-1):16*k-2
20、); end% Obs(u,NoObs) = str2num(lin(65:78);endendend2.3实验结果四、实验感想这局部实验是我在之前做的,之前自己有看过“gps_easy有关的代码,看过相关的“N文件“O文件读写函数,并且学会了如何调用这些函数,对里面的输出量有了一点的了解,所以我自己的主要工作就是运用了“fprintf函数,将读取到matlab中的矩阵写入T*T文档中,这局部工作量不是很大,但较有意义。实验三卫星轨道计算一、实验目的1、进一步熟悉N文件的读入2、掌握开普勒参数计算卫星轨道的过程3、编程实现采用播送星历计算卫星轨道4、掌握MATLAB函数调用步骤二、实验内容本实
21、验内容包括:1、调试时间转换函数,熟悉内容,备主函数调用2、调试播送星历导航文件的读入程序,备主函数调用3、根据卫星位置计算公式编写主函数,同时调用时间转换、星历读取等的子函数来共同完成卫星位置的计算,最后输出计算结果4、理清程序各模块的功能构造三、实验过程1、实验思路:在教师提供的“SPP文件中,直接利用卫星位置计算函数,进展卫星位置的计算,将利用“Gps.cpp文件中的 GetGpsPosition函数,利用其中的迭代求解卫星位置局部,用“cout直接将卫星迭代后的位置直接输出,因为星历文件中有较多的星历,所以利用循环语句,将求解出来的卫星位置依次输出出来。2、主要函数bool CGps:
22、GetGpsPosition()GPSTIME ts;GPSTIME tr;GPSTIME ts0;GPSTIME oGTime;GPSTIME nGTOC;vectorSendSignPosition;GpsPos GpsPTemp;GpsSendPosition SdSignPoTemp;int nTheFitPoint=0;Position pTemp;GpsPosition.clear();if (oData.size()=0)strErr = (PRN=%d没有对应星历);returnfalse;if (nData.size()=0)returnfalse;coutfi*ed;for (int i=0;ioData.size();i+)double *V*=newdouble4;/for (int j=0;j1e-007);/earthrot(tr.lSecond-ts.lSecond,pTemp.*,pTemp.YY,pTemp.ZZ);TimeToGpsTime(nDatanTheFitPoint.TOC,nGTOC);/SdSignPoTemp.dt=nDatanTheFitPoint.d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024产品销售区域代理合同模板
- 2024租车合同协议书公司单位租车协议书
- 2024版独家代理合同样本
- 2024年广场文化建设施工合同
- 2024年度货物采购与供应协议
- 陀螺课件图片教学课件
- 2024年度劳动合同标的:高级管理人员雇佣
- 2024解除土地流转合同
- 2024年度环保项目技术研发与许可使用合同
- 2024年度房屋买卖合同(高档住宅)
- 比亚迪唐DM-i说明书
- 2022年上海市徐汇区中考一模英语试题(含详细解析和答案)
- 世界问候日介绍你的问候温暖着这个世界礼貌礼仪打招呼优秀课件两篇
- 2022年公务员联考公安专业科目真题与答案
- 2018年大学英语六级CET6真题试卷及答案(共6套)
- 《物联网应用系统开发》课程标准
- 平台型企业的崛起(TheRiseofthePlatformEnterprise)
- 2023年副主任医师(副高)-口腔内科学(副高)考试上岸题库(历年真题)答案
- 农业昆虫分类-螨类
- MT-T 1201.1-2023 煤矿感知数据联网接入规范 第1部分:安全监控
- 胎盘早剥应急预案演练脚本
评论
0/150
提交评论