卫星导航定位算法与程序设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)
{
y=Time.wYear-1;
m=Time.byMonth+12;
}
else
{
y=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);
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<=2)
{
y=Time.wYear-1;
m=Time.byMonth+12;
}
else
{
y=Time.wYear;
m=Time.byMonth;
}
JD=int(365.25*y)+int(30.6001*(m+1))+Time.byDay+Time.byHour/24.0+1720981.5;
WN = floor((JD-2444244.5)/7.0);
GpsTime.lWeek=WN;
Wsecend=(JD-2444244.5-7*WN)*604800;
GpsTime.lSecond=Wsecend;
}
1.3实验结果:
2 针对第三部分内容:
2.1解决思路:
运用实验指导书中提供的matlab高斯反算的代码,进行解算;将高斯反算的公式直接输成matlab代码,绕后在函数“function [B,L] = gauss_fansuan(x,y,L0)”中,将坐标x = 3548910.811290287,y = 179854.6172135982,L0 = 117,带入函数的坐边,即可得到所需要的经纬度。
2.2主要函数的代码:
function [B,L]=gauss_fansuan(x,y,L0)
a=6378137;
f=1/298.257223563;
b=a-a*f;
c=a^2/b;
e=sqrt(a^2-b^2)/a;
e1=sqrt(a^2-b^2)/b;
Beta0=1-(3/4)*e1^2+(45/64)*e1^4-
(175/256)*e1^6+(11025/16384)*e1^8;
Beta2=Beta0-1;
Beta4=(15/32)*e1^4-(175/384)*e1^6+(3675/8192)*e1^8;
Beta6=-(35/96)*e1^6+(735/2048)*e1^8;
Beta8=(315/1024)*e1^8;
B0=x/(c*Beta0);
aa0=(a*cos(B0))/sqrt(1-e^2*sin(B0)^2);
l0=y/aa0;