2012高教社杯全国大学生数学建模竞赛
承 诺 书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写): A 我们的参赛报名号为(如果赛区设置报名号的话): 所属学校(请填写完整的全名): 参赛队员 (打印并签名) :1. 李敏 2. 陶建 3. 刘靖 指导教师或指导教师组负责人 (打印并签名):
日期: 年 月 日
赛区评阅编号(由赛区组委会评阅前进行编号):
2012高教社杯全国大学生数学建模竞赛
编 号 专 用 页
评 阅 人 评 分 备 注
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用): 全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
数学建模GPS定位问题
摘要
本次建模中要解决根据GPS卫星位置来确定GPS信号接收机位置的问题,在本次建立的模型中主要用到的是点定位的数学模型,用码伪距进行点定位。再用Matlab编程解得地点位置,最后转换成其经度和纬度。
对于问题一,我们采用GPS定位中单点定位的方法(单点定位利用一点采集的观测数据和广播星历确定点的坐标)。题目中假定了卫星所在的空间位置是准确值因此不考虑广播星历。往往伪距方程解算的基本思路是将非线性观测方程进行Taylor级数展开至一阶,忽略二阶及以上的高阶项,得到线性观测方程。我们将上面的每两个非线性观测方程相减消去二阶及以上的高阶项可得到C462i2i242i个四元
2一次方程。在此基础上派生出C个线性方程组并用x?y?z?R
进行验证选择最符合的坐标,得到四个地点在地心空间直角坐标系的坐标是(-2179,4373,4081) ; (-2174,3,4381,4090);(-2169,4410.1,4123);(-2159,4382.4,4142.3);再转换成经度和纬度就是(40:08:38.58167N ,116:10:14.01669E); (40:05:39.12131N ,116:23:48.72859E); (40:10:46.58408N ,116:11:20.90291E); (40:29:04.29791N ,116:13:23.03773E)然后再在地图上标出各个点的位置
对于问题二,由于添加了一个点,多出了一个数据,可以同样的继续采用上述方法,只是每两个非线性观测方程相减消去二阶及以上的高阶项可得到C4102i2i2i25个四元
2一次方程。在此基础上派生出C个线性方程组并用x?y?z?R进行
验证选择最符合的坐标(2129,4361,4125)转换成经纬度(40°33′05.71354″N,116°01′10.64958″E)
关键词:点定位 码伪距 钟差 单点定位 MATALAB编程
一、问题重述
全球定位系统(GPS)是美国国防部研制的导航定位授时系统,由24颗等间隔分布在6个轨道面上20200公里高度的卫星组成。GPS用户从接收的GPS信号可以得到足够的信息进行精密定位和定时。卫星所在的空间位置由卫星的轨道参数确定,为简化问题,本题题目里假定它是准确值。题目中为了简化问题,假定卫星所在的空间位置是准确值。GPS信号到达接收机的时间是由卫星上的时钟(铯原子钟)和地面接收机上的时钟(低成本钟)决定,钟差是未知的。
今给出了4颗卫星在地心空间直角坐标系上的坐标(地心空间直角坐标系就是将坐标系的原点O与地球质心重合,Z轴指向地球北极,X轴指向经度原点E,Y轴垂直于XOZ平面构成右手坐标系),地球的半径,光速,以及4颗卫星的GPS信号到达四个GPS接收机地点处的时间。
根据4颗卫星在地心空间直角坐标系上的坐标见表A.1,以及4颗卫星的GPS信号到达四个GPS接收机地点处的时间见表A.2,求得四个GPS接收机地点处在地心空间直角坐标系上的坐标。然后将坐标转换成经度与纬度。
对于多于四颗卫星的问题,怎么建立一个更好的模型,才能精确的确定某个地点的位置,并将其转化为经纬度在图中标出。对于多点定位问题,应该考虑周全,误差值,偏差值,并使得每颗卫星都能准确的将其地位。
二、问题分析
在问题一的求解上,已知四颗卫星的地心直角坐标系位置,并且知道每颗卫星GPS信号到达每个地点的时间,由于卫星在发送时有时延,并且GPS接收仪在接收的过程中也会有时延,但这题题目中假定了卫星所在的空间位置是准确值,那我们就直接通过码伪距进行点定位,用派生出的线性方程组求解得到4个GPS接收仪在地心空间直角坐标系上的坐标,并通过google地球在地图上标明位置所在;
对于第二问,在通常的情况下,地面的GPS接收机能收到5—8颗卫星的信号,对于多于4颗卫星的情况,应该周全考虑派生出的C410个线性方程组,因此
在模型一的基础上,在码伪距的测量上对其时间误差进行考虑,从而得到
Rki?c*(Tji??),并通过卫星坐标列出四个方程组成方程组,求得新加点的坐
标,并在google地球上表明。特别要注意的是,在地球上,每个点的空间直角坐标x,y,z都必须满足x2i?y2i?z2i?R2 (R为地球的半径=6371公里),
我们将以这个式子来检验方程组解得的数据
三、模型假设
1假设每一颗卫星的发送时延都是一样的
2 假设每一个GPS接收仪的接收时延都是一样的
3 假设每颗卫星到达每个地点的时间值天气状况一样,所得的结果都是准确的
4 忽略GPS信号在传播过程中所收到的干扰
5 忽略大气层和电离层的残差对水平位置定位误差
6 假定单点定位的精度不受广播星历误差和钟信息(包括选择可用性误差)的限制。
四、符号说明
符号 Rki说明 卫星i与测站k的码伪距观测值 接收机钟差和卫星钟差之差 光速 卫星在的地心坐标 接收机和卫星之间的实际距离 ? c Xi,Yi,Zi Di (x,y,z) iii随机一致性指标 a b Tji系数矩阵 常数项矩阵 第j颗卫星到第i个地点的时间 Di 接收机和卫星之间的实际距离 R 地球半径
五、模型分析、建立及求解
5.1用码伪距进行点定位:
码伪距的观测方程可表示为:
Rki?c*(Tji??)
Ri为卫星
i与测站k的码伪距观测值,c为光速, ?为接收机钟差和卫星钟差之
差,几何距离
Di=(Xi?x)?(Yi?y)?(Zi?z)
iii2i2i2i2222并且满足:x?y?z?R
根据以上可以列出地点位置关于卫星位置的关系等式:
(X?x)ii2?(Y?y)ii2?(Z?z)ii2?c*(Tji-?)
可列出第一个地点的
(8747?x)12?(15150?y)122?(10100?z)122?299792.458*(0.054354-?)
(?9756?x)12?(16898?y)12?(5228?z)122?299792.458*(0.0489226-?)
(?x)1?(10100?y)12?(17494?z)12?299792.458*(0.0491307-?)
(?12370?x)1?(7142?y)1?(14284?z)12?299792.458*(0.0489224-?)
并用x21?y21?z21?R2检验最后的结果。
往往伪距方程解算的基本思路是将非线性观测方程进行Taylor级数展开至一阶,忽略二阶及以上的高阶项,得到线性观测方程。我们将上面的每两个相减消去二阶及以上的高阶项在此基础上派生出来的方法有解线性方程组: a=[37006 -3496 9744 1.0808e+009 17494 10100 -14788 1.0434e+009 42234 16016 -8368 1.0805e+009 5228 19512 -18112 -3.2355e+005]; b=[-5.6125e+007-11415 -5.4291e+007-7527 -5.6109e+007-15211 1.5829e+004-3796];
用MATLAB求解可以得到第一个地点在地心空间直角坐标系的坐标(x,y,z)大
111致为(-2179,4373,4081) ;
同样的方法可以得到剩下的三个地点的坐标分别是 (-2174.3 , 4381 , 4090); (-2169 , 4410.1 , 4123); (-2159 , 4382.4 , 4142.3);
转换成经度和纬度,这四个地点就分别为
40°08′16.90161″N 116°10′14.30207″E
2. 40°05′39.1213″N, 116°23′48.72859″E
3. 40°10′46.58408″N, 116°11′20.90291″E
4. 40°29′04.29791″N, 116°13′23.03773″E
5.2第二问
对于多于4颗卫星的情况
(8747?x)52?(15150?y)52?(10100?z)52?299792.458*(0.0547118-?)
(?9756?x)522?(16898?y)522?(5228?z)522?299792.458*(0.0489472-?)
(?x)5?(10100?y)52?(17494?z)52?299792.458*(0.0489068-?)
(?12370?x)52?(7142?y)5?(14284?z)52?299792.458*(0.0488635-?)
(?7669?x)5?(15723?y)52?(?10100?z)52?299792.458*(0.0633407-?)
用MATLAB求解可以得到第五个地点在地心空间直角坐标系大致为 (-2129,4361,4125)
转换成经度和纬度,这个点就为
40°33′05.71354″N,116°01′10.64958″E
六、模型评价
6.1缺点
1.伪距定位法是利用全球卫星定位系统进行导航定位的最基本的方法,其基本原理是:在某一瞬间利用GPS接收机同时测定至少四颗卫星的伪距,根据已知的卫星位置和伪距观测值,采用距离交会法求出接收机的三维坐标和时钟改正数。伪距定位法定一次位的精度并不高,存在着误差
2.对于伪距的测量与计算中,某些时候忽略了时间的误差,造成数据的偏差 3.对于点定位问题,往往考虑的更多的是点对点定位,却忽略了相互点位 6.2优点
对于点定位模型,定位速度快,很容易通过卫星的位置以及信号接收时间求得定位点的位置
七、模型的改进与推广
1.,在接收机多余于四个的求解过程中,如果考虑用到由最小二乘原理求未知数的未知量则最好不过;
2. 由于轨道误差和电离层效应,基准站接收机直接测量的伪距不同于精确距离,两者之间的差异应该伪距该正数;
3.对于此模型,可以推广到对于四点定位的求解上,在四点定位中能快速确定地点坐标。
八、参考文献
【1】《卫星导航定位算法与程序设计》主讲 刘晖.武汉大学卫星导航定位技术研究中心
【2】张守信.GPS卫星测量定位理论与应用[M].长沙:国防科技大学出 版社,1996.
【3】王婵媛、徐建城、陈远均.《计算机工程与应用》.2011.05
附录:
程序1:依次得到四个地点的坐标位置 syms X; syms Y; syms Z; syms a;
X1=8747;Y1=15150;Z1=10100;X2=-9756;Y2=16898;Z2=5228;X3=0;Y3=10100;Z3=17494;X4=-12370;Y4=7142;Z4=14284;
T1=0.0549354;T2=0.0489226;T3=0.0491307;T4=0.0489244; %T1=(0.0549906),T2=(0.0490084),T3=(0.0491953),T4=(0.0490126); %T1=(0.0552587),T2=(0.0493557),T3=(0.0494843),T4=(0.0493610); %T1=((0.0551766),T2=(0.0493397),T3=(0.0493486),T4=(0.0492496); c=299792.458;
d1=c*T1;d2=c*T2;d3=c*T3;d4=c*T4;
%Location=GetLocation([Position1,d1],[Position2,d2],[Position3,d3],[Position4,d4]); %GetLocation()
%X2^2-X1^2+2*(X1-X2)*X+Y2^2-Y1^2+2*(Y1-Y2)*Y+Z2^2-Z1^2+2*(Z1-Z2)*Z=d2^2-d1^2;
%X3^2-X1^2+2*(X1-X3)*X+Y3^2-Y1^2+2*(Y1-Y3)*Y+Z3^2-Z1^2+2*(Z1-Z3)*Z=d3^2-d1^2; %X4^2-X1^2+2*(X1-X4)*X+Y4^2-Y1^2+2*(Y1-Y4)*Y+Z4^2-Z1^2+2*(Z1-Z4)*Z=d4^2-d1^2; %X4^2-X2^2+2*(X2-X4)*X+Y4^2-Y2^2+2*(Y2-Y4)*Y+Z4^2-Z2^2+2*(Z2-Z4)*Z=d4^2-d2^2; %X4^2-X3^2+2*(X3-X4)*X+Y4^2-Y3^2+2*(Y3-Y4)*Y+Z4^2-Z3^2+2*(Z3-Z4)*Z=d4^2-d3^2; %X3^2-X2^2+2*(X2-X3)*X+Y3^2-Y2^2+2*(Y2-Y3)*Y+Z3^2-Z2^2+2*(Z2-Z3)*Z=d3^2-d2^2; 415+37006*X-3496*Y+9744*Z==-1.8026e+003; u27+17494*X+10100*Y-14788*Z== -1.7402e+003; 211+42234*X+16016*Y-8368*Z==-1.8021e+003;
%simplify(X2^2-X1^2+2*(X1-X2)*X+Y2^2-Y1^2+2*(Y1-Y2)*Y+Z2^2-Z1^2+2*(Z1-Z2)*Z) a=[37006 -3496 9744 1.0808e+009 17494 10100 -14788 1.0434e+009 42234 16016 -8368 1.0805e+009 5228 19512 -18112 -3.2355e+005];
b=[-5.6125e+007-11415 -5.4291e+007-7527 -5.6109e+007-15211 1.5829e+004-3796]; linsolve(a,b')
程序2: syms X; syms Y; syms Z; syms a
X1=8747;Y1=15150;Z1=10100;X2=-9756;Y2=16898;Z2=5228;X3=0;Y3=10100;Z3=17494;X4=-12370;Y4=7142;Z4=14284; X5=-7669;Y5=15723;Z5=-10100;
T1=0.0547118;T2=0.0489472;T3=0.0489068;T4=0.0488635;T5=0.0633407; %T1=0.0549354;T2=0.0489226;T3=0.0491307;T4=0.0489244; %T1=(0.0549906),T2=(0.0490084),T3=(0.0491953),T4=(0.0490126); %T1=(0.0552587),T2=(0.0493557),T3=(0.0494843),T4=(0.0493610); %T1=((0.0551766),T2=(0.0493397),T3=(0.0493486),T4=(0.0492496); c=299792.458;
d1=c*T1;d2=c*T2;d3=c*T3;d4=c*T4;d5=c*T5;
%Location=GetLocation([Position1,d1],[Position2,d2],[Position3,d3],[Position4,d4]); %GetLocation()
%X2^2-X1^2+2*(X1-X2)*X+Y2^2-Y1^2+2*(Y1-Y2)*Y+Z2^2-Z1^2+2*(Z1-Z2)*Z=(T2^2-T1^2)*c^2+2*(T1-T2)*a*c^2;
%X3^2-X1^2+2*(X1-X3)*X+Y3^2-Y1^2+2*(Y1-Y3)*Y+Z3^2-Z1^2+2*(Z1-Z3)*Z=(T3^2-T1^2)*c^2+2*(T1-T3)*a*c^2;
%X4^2-X1^2+2*(X1-X4)*X+Y4^2-Y1^2+2*(Y1-Y4)*Y+Z4^2-Z1^2+2*(Z1-Z4)*Z=(T4^2-T1^2)*c^2+2*(T1-T4)*a*c^2;
%X5^2-X1^2+2*(X1-X5)*X+Y5^2-Y1^2+2*(Y1-Y5)*Y+Z5^2-Z1^2+2*(Z1-Z5)*Z=(T5^2-T1^2)*c^2+2*(T1-T5)*a*c^2;
415+37006*X-3496*Y+9744*Z==-7208210836756889/134217728+2446641123059313113983115151673/2361183241434822606848*a;
u27+17494*X+10100*Y-14788*Z==-7255899070444017/134217728+6838385131608113727/6553600000*a;
211+42234*X+16016*Y-8368*Z==-3653483375490965/67108864+1241082753355635753706848429249/1180591620717411303424*a;
%-6219+32832*X-1146*Y+40400*Z==6144010053861751/67108864-7324644064381407470926805223071/4722366482869645213696*a
%simplify(X2^2-X1^2+2*(X1-X2)*X+Y2^2-Y1^2+2*(Y1-Y2)*Y+Z2^2-Z1^2+2*(Z1-Z2)*Z) a=[37006 -3496 9744 -1.0362e+009 17494 10100 -14788 -1.0435e+009 42234 16016 -8368 -1.0512e+009 32832 -1146 40400 1.5511e+009 ];
b=[-5.3705e+007-11415 -5.4061e+007-7527 -5.4441e+007-15211 9.1553e+007+6219]; linsolve(a,b')