衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告_第1頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告_第2頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告_第3頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告_第4頁
衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、2013級測繪工程專業(yè)衛(wèi)星導(dǎo)航定位算法與程序設(shè)計實驗報告實驗名稱:衛(wèi)星導(dǎo)航基本程序設(shè)計班級:學(xué)號:姓名:實驗時間:2016年6月28日2016年6月30中國礦業(yè)大學(xué)目錄TOC o 1-5 h z HYPERLINK l bookmark4 o Current Document 實驗一時空基準(zhǔn)轉(zhuǎn)換2 HYPERLINK l bookmark6 o Current Document 一、實驗?zāi)康? HYPERLINK l bookmark8 o Current Document 二、實驗內(nèi)容2 HYPERLINK l bookmark10 o Current Document 三、實驗過程2 HY

2、PERLINK l bookmark12 o Current Document 四、實驗感想6 HYPERLINK l bookmark14 o Current Document 實驗二RINEX文件讀寫6 HYPERLINK l bookmark16 o Current Document 一、實驗?zāi)康? HYPERLINK l bookmark18 o Current Document 二、實驗內(nèi)容7 HYPERLINK l bookmark20 o Current Document 三、實驗過程7 HYPERLINK l bookmark26 o Current Document 實驗三衛(wèi)

3、星軌道計算12 HYPERLINK l bookmark28 o Current Document 一、實驗?zāi)康?2 HYPERLINK l bookmark30 o Current Document 二、實驗內(nèi)容12 HYPERLINK l bookmark32 o Current Document 三、實驗過程12 HYPERLINK l bookmark24 o Current Document 四、實驗感想15實驗一時空基準(zhǔn)轉(zhuǎn)換一、實驗?zāi)康?、加深對時空系統(tǒng)及其之間轉(zhuǎn)換關(guān)系的理解2、掌握常用時空基準(zhǔn)之間的轉(zhuǎn)換模型與軟件實現(xiàn)3、每人獨立完成實驗規(guī)定的內(nèi)容二、實驗內(nèi)容本實驗內(nèi)容包括:內(nèi)容一

4、:編程實現(xiàn)GPS起點1980年1月6日0時對應(yīng)的儒略日內(nèi)容二:編程實現(xiàn)2011年11月27日對應(yīng)的GPS周數(shù)與一周內(nèi)的秒數(shù)內(nèi)容三:在WGS84橢球的條件下,編程實現(xiàn)當(dāng)中央子午線為117度時,計算高斯坐標(biāo)x=3548910.811290287,y=179854.6172135982對應(yīng)的經(jīng)緯度坐標(biāo)?內(nèi)容四:WGS84橢球下,表面x=-2408000;y=4698000;z=3566000處的地平坐標(biāo)系坐標(biāo)為:e=704.8615;n=114.8683;u=751.9771的點對應(yīng)的直角坐標(biāo)為多少?三、實驗過程針對第一、二部分內(nèi)容:1.1解決思路:先建立”TimeStruct.h”的頭文件,將格里

5、高利歷、GPS時間結(jié)構(gòu)、儒略日時間結(jié)構(gòu)共結(jié)構(gòu)體的方式放在里面;在建立TimeTr”的頭文件,建立類“CTimeTr”,創(chuàng)建變量“GPSTime”、“Time”、”JulDay”,并且申明函數(shù)“TIME2JUL”、“TIME2GTIME”等,用這些函數(shù)分別實現(xiàn)所需要的轉(zhuǎn)換。1.2具體的實現(xiàn)函數(shù):“TIME2JUL”函數(shù):doubleCTimeTr:TIME2JUL()/TIMETime,JULIANDAY&JulDaydoublem,y;doubleD;/h=Time.byHour+Time.byMinute/60.0+Time.dSecond/3600.00;if(Time.byMonth=2

6、)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);JulDay.lSecond=D-int(JulDay.lDay);return0;“TIME2GTIME”:voidCTimeTr:TIME2GTIME()doubleJD;longm,y;intWN;doubleWsecend;/UT=Time.byHour+Time

7、.byMinute/60.0+Time.dSecond/3600.00;if(Time.byMonth=0.0001&abs(l1-l0)=0.0001B0=B1;aa0=aa1;l0=l1;F_xB=(c*Beta2+(c*Beta4+(c*Beta6+c*Beta8*cos(B0)入2)*cos(B0)入2)*cos(BO)八2)*sin(B0)*cos(B0);F_xBl=a2*l0A2+a4*l0A4+a6*l0A6;F_yBl=a3*l0A3+a5*l0A5;B1=(x-F_xB-F_xBl)/(c*Beta0);aa1=(a*cos(Bl)/sqrt(1-eA2*(sin(Bl)A

8、2);l1=(y-F_yBl)/aa1;endL=rad2deg(l1)+L0;B=rad2deg(B1);2.3實驗結(jié)果四、實驗感想本次試驗是花時間較多的一次實驗,關(guān)于時間轉(zhuǎn)換的部分全部都是自己動手將matlab代碼寫成“C+”的類,進(jìn)行實現(xiàn)的。其中遇到的較大的困難是儒略日向UTC轉(zhuǎn)換的部分,這部分的函數(shù)步驟較多,關(guān)鍵是在一開始的時間結(jié)構(gòu)里面,各時間各部分的數(shù)據(jù)類型大多定義的是“int”型的,但是在進(jìn)行計算的時候有較多的小數(shù),需要用到浮點型的函數(shù),這部分用了較多的時間。在做這個實驗的時候,第一天花了時間主要是轉(zhuǎn)換代碼,使程序沒有錯誤,能夠正常的運行出來,出現(xiàn)黑框框,但是還只有個別功能能夠用,

9、能夠運行出正確的結(jié)果;第二天時間主要是花在修改函數(shù)上頭,能夠使所寫的功能都能運行出正確的結(jié)果。通過做時間轉(zhuǎn)換的實驗,使自己產(chǎn)生了第一次親自編寫“C+”代碼的經(jīng)歷,而且所有錯誤的解決全部都是自己解決,收獲不少。實驗二RINEX文件讀寫一、實驗?zāi)康?、深入了解RINEX文件格式2、進(jìn)一步提高M(jìn)ATLAB程序設(shè)計能力3、掌握N文件、O文件、SP3文件的基本讀寫技巧二、實驗內(nèi)容本實驗內(nèi)容包括:1、任選IGS站,下載N文件、0文件與SP3文件;2、編程實現(xiàn)N文件讀入,并采用中文標(biāo)注出主要參數(shù)的名稱及作用;4、編程實現(xiàn)0文件讀入,并采用中文標(biāo)注出主要參數(shù)的名稱及作用;5、編程實現(xiàn)SP3文件讀入,并采用中文

10、標(biāo)注出主要參數(shù)的名稱及作用;三、實驗過程1、針對第一部分內(nèi)容:編程實現(xiàn)N文件讀入,并采用中文標(biāo)注出主要參數(shù)的名稱及作用1.1、解決思路:按照“GPSeasy”開源代碼提供的函數(shù),按照實驗要求讀取了N文件的內(nèi)容,先用rinexe函數(shù),將N文件讀取成eph.dat文件,然后再用“get_eph函數(shù)將“eph.dat文件讀取成Eph矩陣,此矩陣中包含了N文件中的數(shù)據(jù),在最后用“fprintf函數(shù)將所需要的數(shù)據(jù)輸出成.TXT”文件即可。1.2、主要函數(shù)代碼:“get_eph”函數(shù):functioneph=get_eph(ephemeridesfile)fide=fopen(ephemeridesfil

11、e);eph,count=fread(fide,Inf,double);noeph=count/22;eph=reshape(eph,22,noeph);“rinexe函數(shù)(部分):functionrinexe(ephemerisfile,outputfile)fide=fopen(ephemerisfile);head_lines=0;while1head_lines=head_lines+1;line=fgetl(fide);answer=findstr(line,ENDOFHEADER);ifisempty(answer),break;end;end;head_lines主函數(shù)中輸出結(jié)果

12、得函數(shù)部分:afO=data(19);%衛(wèi)星中差M0=data(3);roota=data(4);deltan=data(5);ecc=data(6);omega=data(7);cuc=data(8);cus=data(9);crc=data(10);crs=data(11);i0=data(12);idot=data(13);toe=data(18);af1=data(20);%寸所要輸出的參數(shù)賦值fprintf(fid,n衛(wèi)星編號:%dn衛(wèi)星鐘差:%dn平近點角距:%dn軌道長半軸的平方根:%dn平均運動修正量:%dn軌道偏心率:%dn近地點角距:%dn緯度幅角的余弦調(diào)和項改正的振幅,p

13、rn,afO,MO,roota,deltan,ecc,omega,cuc);fprintf(fid,緯度幅角的正弦調(diào)和項改正的振幅:%dn軌道半徑的余弦調(diào)和項改正的振幅:%dn軌道半徑的正弦調(diào)和項改正的振幅:%dn軌道傾角:%dn軌道傾角變化率:%dn星歷參考時刻:%dn,cus,crc,crs,i0,idot,toe)fclose(fid);1.3、輸出結(jié)果2、針對第二部分內(nèi)容:編程實現(xiàn)O文件讀入,并采用中文標(biāo)注出主要參數(shù)的名稱及作用;2.1、實現(xiàn)思路:通過matlab的函數(shù)“fopen”讀取0文件,得到0文件的指針,通過“anheader”函數(shù)將文件中的接收機(jī)大致位置”approxxyzi

14、”,天線的偏移值”ant_delta1”,觀測值類型“Obs_typesi”等讀入成為matlab的矩陣,然后通過循環(huán),利用“grabdata”函數(shù)將所需要的歷元的觀測文件依次輸出來,最后通過“fprintf”函數(shù),將所需要的數(shù)據(jù)依次打印出來。2.2、主要函數(shù):“anheader函數(shù):functionObs_types,ant_delta,ifound_types,approx_XYZ=anheader(file)fid=fopen(file,rt);eof=0;ifound_types=0;Obs_types=;ant_delta=;approx_XYZ=;while1%Gobblingth

15、eheaderline=fgetl(fid);answer=findstr(line,ENDOFHEADER);ifisempty(answer),break;end;if(line=-1),eof=1;break;end;answer=findstr(line,ANTENNA:DELTAH/E/N);ifisempty(answer)fork=1:3delta,line=strtok(line);del=str2num(delta);ant_delta=ant_deltadel;end;endanswer=findstr(line,APPROXPOSITIONXYZ);ifisempty(a

16、nswer)fork=1:3app_XYZ,line=strtok(line);del=str2num(app_XYZ);approx_XYZ=approx_XYZdel;end;endanswer=findstr(line,#/TYPESOFOBSERV);ifisempty(answer)NObs,line=strtok(line);NoObs=str2num(NObs);fork=1:NoObsot,line=strtok(line);Obs_types=Obs_typesot;end;ifound_types=1;end;end;%fclose(fid);“grabdata函數(shù):fun

17、ctionObs=grabdata(fid,NoSv,NoObs)%GRABDATAPositionedinaRINEXfileataselectedepoch%readsobservationsofNoSvsatellitesgloballinObs=zeros(NoSv,NoObs);ifNoObs=5%ThiswilltypicalbeTurboSIIdataforu=1:NoSvlin=fgetl(fid);fork=1:NoObsObs(u,k)=str2num(lin(2+16*(k-1):16*k-2);endendelse%ThiswilltypicalbeZ12dataObs

18、=Obs(:,12345);%Wecancelthelasttwocolumns6and7NoObs=5;foru=1:NoSvlin=fgetl(fid);lin_doppler=fgetl(fid);fork=1:NoObs%-1ifisempty(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);end%Obs(u,NoObs)=str2num(lin(65:78);endendend2.3實驗結(jié)果四、實驗感想這部分實驗是我在之前做的,之前自己有看過“gps

19、_eas有關(guān)的代碼,看過相關(guān)的“N文件”“0文件”讀寫函數(shù),并且學(xué)會了如何調(diào)用這些函數(shù),對里面的輸出量有了一點的了解,所以我自己的主要工作就是運用了“fprinf數(shù),將讀取到matlab中的矩陣寫入TXT文檔中,這部分工作量不是很大,但較有意義。實驗三衛(wèi)星軌道計算一、實驗?zāi)康?、進(jìn)一步熟悉N文件的讀入2、掌握開普勒參數(shù)計算衛(wèi)星軌道的過程3、編程實現(xiàn)采用廣播星歷計算衛(wèi)星軌道4、掌握MATLAB函數(shù)調(diào)用步驟二、實驗內(nèi)容本實驗內(nèi)容包括:1、調(diào)試時間轉(zhuǎn)換函數(shù),熟悉內(nèi)容,備主函數(shù)調(diào)用2、調(diào)試廣播星歷導(dǎo)航文件的讀入程序,備主函數(shù)調(diào)用3、根據(jù)衛(wèi)星位置計算公式編寫主函數(shù),同時調(diào)用時間轉(zhuǎn)換、星歷讀取等的子函數(shù)來

20、共同完成衛(wèi)星位置的計算,最后輸出計算結(jié)果4、理清程序各模塊的功能結(jié)構(gòu)三、實驗過程1、實驗思路:在老師提供的“SPP”文件中,直接利用衛(wèi)星位置計算函數(shù),進(jìn)行衛(wèi)星位置的計算,將利用“Gps.cpp”文件中的”GetGpsPosition”函數(shù),利用其中的迭代求解衛(wèi)星位置部分,用“cout”直接將衛(wèi)星迭代后的位置直接輸出,因為星歷文件中有較多的星歷,所以利用循環(huán)語句,將求解出來的衛(wèi)星位置依次輸出出來。2、主要函數(shù)boolCGps:GetGpsPosition()GPSTIMEts;GPSTIMEtr;GPSTIMEts0;GPSTIMEoGTime;GPSTIMEnGTOC;vectorSendSi

21、gnPosition;GpsPosGpsPTemp;GpsSendPositionSdSignPoTemp;intnTheFitPoint=0;PositionpTemp;GpsPosition.clear();if(oData.size()=0)strErr=(PRN=%d沒有對應(yīng)星歷“);returnfalse;if(nData.size()=0)returnfalse;coutfixed;for(inti=0;ioData.size();i+)double*VX=newdouble4;/for(intj=0;j1e-007);/earthrot(tr.lSecond-ts.lSecond

22、,pTemp.XX,pTemp.YY,pTemp.ZZ);TimeToGpsTime(nDatanTheFitPoint.TOC,nGTOC);/SdSignPoTemp.dt=nDatanTheFitPoint.dClkBias+nDatanTheFitPoint.dClkDrift*(ts.lSecond-nGTOC.lSecond)+nDatanTheFitPoint.dClkDriftRate*pow(ts.lSecond-nGTOC.lSecond),2);/SdSignPoTemp.PRN=oDatai.oObserveDataj.PRN;SdSignPoTemp.XX=pTemp

23、.XX;SdSignPoTemp.YY=pTemp.YY;SdSignPoTemp.ZZ=pTemp.ZZ;SdSignPoTemp.SendTime.lWeek=oGTime.lWeek;SdSignPoTemp.SendTime.lSecond=ts.lSecond;SdSignPoTemp.CA=oDatai.oObserveDataj.dC1;if(i10)couti+1SdSignPoTemp.PRNSdSignPoTemp.XXSdSignPoTemp.YYSdSignPoTemp.ZZSdSignPoTemp.SendTime.lWeekSdSignPoTemp.SendTime

24、.lSecond11111112叩衣三20丄6程孚設(shè)計上謀箭科實謝埶SPPPositionSPPPositionDebugSPRexe-16155534.4OU6822020398.78122-112981.21758?1439371024.9116143-J230962.71297424493893.141234-3448830,0082J81439371024.9119467-153132104R992-499752177021121468273.4897711439371024.91648716-7185425.C83518161678B0.57582919835796.961G6114

25、39371824.911349235881344.43256816317554-65934219966J74143?371M24.91179031-20758570.6761169128836.34777814083657.9778581439371024.9109701-1G555872G727420915395210537-1961473.1302171439371039.911G153-?23?305.291?丄724496728-3402677.1649SB143?371039.9119477-1529471?-B44871-5032B07.J9830B21473220.7677091

26、439371039.9104M616-7288151.70206216135223.955143198F5894.S7S9791439371839,911347235e9516.8ei78416349120.077991199473161439371039.91179031-20784709.SQ8?五空29125024.14506814647133丄10732143937103?.916770-16155592.62719220910315.532008-2B0J955.5883051439371054.911615-9247607_7fc7R6124499492.928252-32565G7.7228111429271054號i94Jl?-1E276249-624856-50G8117.33505321470668.4383481439371854.91048516-7226927.38B77716102550.22250719875897.3714291439371054.911346235837736.943B3916380673.51827819927561,8647061439371054.91179021-20S10782皿79121226.95012714010542

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論