飞行器坐标
飞行器空间坐标修正
摘要
随着科技的快速发展,人们追求着精益求精。毋庸置疑,精确度问题成了热点问题。特别,高精度要求的航空航天领域对精度的研究更是有很重要的理论意义和应用价值。本题的目的是利用数学的方法对飞行器的测量数据进行坐标修正,使得飞行器的空间坐标位置更加精确。 针对问题一,主要产生误差的原因是电子仪器的精度和噪声干扰等。由于仪器精读造成的误差无法消除,在这里我们只考虑噪声的干扰,可以采用迭代均值法,卡尔曼滤波器模型对坐标数据进行了误差修正。 针对问题二,飞行器坐标在长时间的飞行中,坐标数据的观测值由于误差的累积发生漂移。通过问题一的修正后的数据,采用vx,vy的坐标变换法,对(vx,vy,vh)进行变换并将它与所测数据进行比较,并进行数据融合对数据进行第二次修正。
针对问题三,我们选择的具体飞行器为无人机。由飞行器运动方程,推导出斜距与飞行状态之间的关系。在根据所测数据,利用kalman滤波方法可得斜距估计。根据实际值、最优估计值和GPS推算值进行数据融合,对空间坐标修正。在将结果进行无人机仿真表明,使用此模型可以是无人机的空间坐标位置得到很好的修正,位置更精确。
关键词:迭代均值法 kalman滤波 坐标变换法 飞行器运动方程 数据融合
一. 问题的重述
随着科学技术的高速发展,飞行器得到越来越广泛的运用,而飞行器的导航精度问题一直是航空航天领域研究的重要课题,惯性导航系统是一种不依赖于任何外部信息的自主式导航系统,在航空航天领域起着越来越重要的作用。由于其系统结构误差、惯性测量部件误差、标度系数误差等因素的影响,惯性导航系统的积累误差随着时间的推移而逐渐增大,这一问题严重影响到航空航天技术的发展。目前关于定位精度的研究成果主要是从物理技术(例如红外测距)方面来提高定位的精度,近年来,围绕定位坐标精度问题的相关研究也渐渐展开。因此进一步研究飞行器空间坐标修正方法有重要的理论意义和应用价值。本题的目标是利用数学的方法对飞行器的误差进行修正,并利用结果进行飞行器的仿真。
附录表一中给出的数据是飞行器的空间位置坐标以及其在空间的速度,还有飞行器与观测站之间的偏向角和俯仰角。其中除了观测站的位置坐标(0,0,0)是准确,其余的数据均有一定的误差,请对给出的数据进行以下三项工作:
1.飞行器坐标的数据为观测值,由于电子仪器的精度和噪声干扰等,含有一定的误差波动,建立数学模型对飞行器坐标观测值的随机波动误差进行修正。
2.由于观测数据的仪器误差,飞行器坐标在长时间的飞行中,坐标数据的观测值由于误差的累积发生漂移,建立数学模型,对飞行器的坐标的这种误差进行修正。(提示:在短时间内,可以视为飞行器坐标含有一定的常量误差,或者飞行器的这种误差是线性变化的)。
3.结合具体的飞行器给出误差修正方案。
二. 问题的分析
1.问题一
用matlab做出x-t,y-t,z-t的图像,如下:
x-t图像
y-t图像
z-t图像
由三个图像可知,x与t和y与t的关系呈线性关系,因此噪声信号对x和y的值没有影响,不需要对其进行修正,而y随着t的变化而上下波动,因此需要对其进行修正。消除噪声的干扰可以采用联邦卡尔曼滤波的方法或者使用坐标变换的方法来修正。 1. 问题二
用matlab作出vx-t,vy-t,vz-t的图像,如下:
vx-t
vy-t
vz-t
结合问题一中的x-t,y-t,z-t的图像分析可知,飞行器沿x轴和y轴方向上都是做类似匀速的运动,速度v都为正值,不过都有小幅度的波动,说明可能测量过程中存在很小的误差,x,y的值都有一定的偏差。
从vz-t图像中可以看出vz一直为负值,而且也有小幅度的变化,理论上h应随着t时间的推移而呈现出递增趋势,然而根据数据绘制的h-t图象确实在上下波动的,说明数据中存在偏差,更大可能是所选坐标系不同,导致测量结果的符号不同,需要进行修正。
为了对h方向上的速度和高度进行修正,可采用坐标变换以及迭代均值法以消除一定的常量误差。 2. 问题三
三. 模型假设
1. 飞行器为刚体。
2. 假设飞行器质量不变即dm/dt=0。
3. 假设大气相对于地球是静止的,即忽略了风和大气紊流的影响,则飞行器相对于空气的速度和对地球的速度相等。 4. 不考虑在传输过程中的时间延迟效应。
5. 在使用速度拟合位移曲线的时候假设中间时间间隔做匀速运动。 6. 观测站的坐标与机体的的坐标系存在有相对运动,而且是球面作用
7. 假设噪声的干扰造成的误差可以通过卡尔曼滤波器或者其他方法完全消除。
四. 符号说明
x,y,h········································飞行器的空间坐标位置 vx,vy,vh·····································飞行器在各个方向上的速度 t············································飞行器飞行的时间 alpha··········································飞行器的偏向角 theta···········································飞行器的俯仰角 X’,Y’,H’······························飞行器的变换后的空间位置坐标 i,j,k··································飞行器采用的坐标系的三个基向量 i’,j’,k’··························· 观测站采用的坐标系的三个基向量
五. 问题一的求解
由于仪器精读造成的误差无法消除,在这里我们只考虑噪声的干扰,可以采用迭代均值法,其中由于由于仪器精度造成的误差无法消除,在这里我们只考虑噪声的干扰,可以采用迭代均值法,其中(t,x)(t,y)线性拟合后其近似关系很好.所以对(t,h)进行拟合,所以第一题的工作重点是对(t,h)进行修正,排除数据传输过程中由于噪音等原因造成的误差,对于这类误差的过滤,卡尔曼过滤器是很好的方法,但是数据较少,用起来误差并不能的到很好的消减.。 于是我们采用附录二的程序:
设temp:取正如果h>均值,取负如果h
aver则是一个类似于标准差的定义,即误差绝对值的平均数; 由于二者是元素个数相同的向量故用(.*)
又因为一次迭代的误差依然很大,为了更加精确的过滤误差值,因此我们采用多次迭代的方法,下图为迭代40次的图:
六. 问题二的求解
根据模型假设知,(x,y,z)与(vx,vy,vh)的测量,是在两个有相对运动的坐标系中测量的,
可以假想一下观测站的坐标系即为一个静止的球,而观测站在球心处,而机体就在一个球面上但是他的坐标系永远是面朝外的,而且随着它的相对于观测站的运动不断的变换自己的坐标使得总能保持它面朝外(此处的面朝外可以理解为坐标系里的(1,1,1)向量总是与圆心共线只想背离球心的方向) 可以用下式子表示
3(i+j+k)/3=(cos*cos i' cossin j' sin k')
(其中(i,j,k)为机体所采用坐标系三个基向量(i’,j’ ,k’)是观测站采用的坐标系的三个基向量, 分别为从观测站对机体的俯仰角,偏向角,前提是两个z轴始终共面)
我们可以采用三维坐标中的坐标变换----雅各比行列式设 i=theta,j=alpha (其中雅各比行列式如下)
sin(i)*cos(j) sin(i)*cos(j) cos(i) ; J= cos(i)*cos(j) cos(i)*sin(j) -sin(i); -sin(j) cos(j) 0
而后用v=[vx vy vh]将三个方向上的速度化为一个各时刻个方向的3×41矩阵
V’=J*V(V’即为还算过得速度公式)
利用 S=V’*t得出单位时间内机体分别在(x,y,z)三个方向上的位移,利用cumsum函数对S的三个行向量进行累加运算,得出另一个(X’,Y’,H’) 然后用此组数据对题中给定的(x,y,h)进行减法运算发现二者的差值符合三个与t有关的一次函数
校正方程 x=0.[**************]*t -0.[**************] X=x(测)+x
x的误差校正函数
43.5
32.5
二者误差(X'-x)
21.510.50-0.5
012
3时间t/s
456
(Y-y)的误差误差校正函数
98
76
误差值(Y'-y)
543210
012
3时间t/s
456
校正方程 y=1.[**************]*t+ 0.[**************] Y=y(测)+y
七. 问题三的求解 八.模型改进
本模型对误差的修正并没有达到真正最优的效果,因为数据的组数较少,加之我们对一些程序的设计没有到很好的掌握,未能在卡尔曼滤波器及均值迭代法消除噪声的数值中做太多的分析,所以卡尔曼的最有滤波迭代处理的效果未能很好地展现出来,如果能在问题一采用的卡尔曼滤波和均值迭代处理中通过程序设计消除噪声影响,加上后面的数据融合进行修正效果会更好一些。
九.参考文献
[1].胡永红、史忠科 ,小型飞行器定位数据融合误差修正方法。
[2].周建兴、岂兴明、MATLAB从入门到精通,北京:人民邮电出版社,2008年; [3].马知恩、王绵森,数学分析基础(第二版上册、下册),[M],北京:高等教育出版社,2006年;
[4].王正东,数学软件与数学实验,北京:科学出版社,2004年;
[5].姜启源、谢金星、叶俊,数学模型(第三版)[M],北京:高等教育出版社2003年;
十.附录
一.
题目所给数据: x(m) y(m) x方向y方向坐标 坐标 1360.25 1309.5 1350.5 1299 1340.75 1288.5 1331 1278 1321.25 1267.5 1311.5 1257 1301.75 1246.5 1292 1236 1282.25 1225.5 1272.5 1215 1262.75 1204.5 1253 1194 1243.25 1183.5 1233.5 1173 1223.75 1162.5 1214 1152
h(m) 高度
510.352 510.2122 510.215 510.1984 510.108 510.3356 510.0836 510.4421 510.2035 510.1593 510.0681 510.2475 510.2803 510.4077 510.4327 510.2398
alpha 偏向角 0.794395 0.794668 0.794946 0.795228 0.795514 0.795805 0.7961 0.796399 0.796703 0.797012 0.797326 0.797645 0.797968 0.798297 0.798632 0.798971
theta 俯仰角 -0.24909 -0.25085 -0.25261 -0.25442 -0.25625 -0.2581 -0.25998 -0.26188 -0.26381 -0.26578 -0.26777 -0.26979 -0.27184 -0.27392 -0.27603 -0.27817 vx(m/s) x方向速度 65.71203 65.58372 65.84258 65.44936 65.73986 65.45338 65.78953 65.84546 65.4989 65.65001 65.70493 65.80274 65.51997 65.64495 65.75635 65.42981 vy(m/s) y方向速度 70.73957 70.89399 70.85664 70.53094 70.46828 70.72688 70.75752 70.56708 70.41527 70.63996 70.70883 70.68836 70.84326 70.48396 70.65024 70.74099 vz(m/s) 垂直方向(高度)速度 -0.81219 -0.69203 -0.80888 -0.61263 -0.61144 -0.74797 -0.4344 -0.60381 -0.66567 -0.7894 -0.47683 -0.62871 -0.71885 -0.54453 -0.5274 -0.57223
1204.25 1194.5 1184.75 1175 1165.25 1155.5 1145.75 1136 1126.25 1141.5 1131 1120.5 1110 1099.5 1089 1078.5 1068 1057.5 510.4504 510.293 510.313 510.4912 510.29 510.2421 510.3149 510.0248 510.1027 0.799317 0.799668 0.800025 0.800388 0.800757 0.801133 0.801515 0.801903 0.802299 -0.28034 -0.28255 -0.2848 -0.28708 -0.28939 -0.29174 -0.29412 -0.29655 -0.29901 65.43572 65.80907 65.47493 65.88649 65.6269 65.44173 65.59547 65.43024 65.6084 70.66082 70.80877 70.7298 70.7245 70.6162 70.46659 70.81569 70.59963 70.72843 -0.70109 -0.63122 -0.56124 -0.48794 -0.57056 -0.52142 -0.49433 -0.74168 -0.72381 1116.5 1047 1106.75 1036.5 1097 1026 1087.25 1015.5 1077.5 1005 1067.75 994.5 1058 984 1048.25 973.5 1038.5 963 1028.75 952.5 1019 942 1009.25 931.5 999.5 921 989.75 910.5 980 900 970.25 889.5
二.>> x=[0 0.15 0.3 0.45 0.6 0.75 0.9 1.05 1.2
510.3176 510.2496 510.2452 510.1042 510.103 510.071 510.026 510.0317 510.4295 510.1993 510.1507 510.3241 510.427 510.0886 510.0591 510.4997 0.802702 0.803112 0.803529 0.803954 0.804387 0.804828 0.805277 0.805734 0.806201 0.806676 0.807161 0.807656 0.80816 0.808674 0.809199 0.809735 -0.30152 -0.30406 -0.30665 -0.30928 -0.31196 -0.31468 -0.31744 -0.32026 -0.32312 -0.32603 -0.32899 -0.33201 -0.33508 -0.33819 -0.34138 -0.34461 65.54599 65.89203 65.5862 65.56975 65.42634 65.61142 65.60887 65.75055 65.74905 65.46401 65.4163 65.73459 65.63036 65.82776 65.49546 65.46031 70.61583 70.48358 70.49906 70.87582 70.76893 70.67394 70.89153 70.73317 70.73326 70.89954 70.6806 70.49522 70.89082 70.72238 70.61413 70.69475 -0.50447 -0.70365 -0.78514 -0.82096 -0.69112 -0.55904 -0.63973 -0.67194 -0.50934 -0.60229 -0.71395 -0.49601 -0.6627 -0.59673 -0.57386 -0.42223
1.5
1.65
1.8
1.95
2.1
2.25
2.4
2.55
2.7
2.85
3
3.15
3.3
3.45
3.6
3.75
3.9
4.05
4.2
4.35
4.5
4.8
4.95
5.1
5.25
5.4
5.55
5.7
5.85
6
];
>> h=[510.3520237 510.2121547 510.2149607 510.1983958 510.1080095 510.3356322 510.0836268 510.4421405 510.2034774 510.1592621 510.0681463
510.2802798 510.4076986 510.4327193 510.2397617 510.4504262 510.2929935 510.3129799 510.4911516 510.2900452 510.2421483 510.3149417 510.0247663 510.1027471 510.317599 510.249558 510.2451786 510.1042307 510.1029878 510.0710206 510.0260389 510.0317023
510.1992947 510.150653 510.3240992 510.42705 510.0885538 510.0590776 510.4997458 ];
>> for i=1:1:40 h=nihe(h); end;
>> plot(x,h)