导航仿真程序Word格式.docx

上传人:b****6 文档编号:17217406 上传时间:2022-11-29 格式:DOCX 页数:12 大小:41.38KB
下载 相关 举报
导航仿真程序Word格式.docx_第1页
第1页 / 共12页
导航仿真程序Word格式.docx_第2页
第2页 / 共12页
导航仿真程序Word格式.docx_第3页
第3页 / 共12页
导航仿真程序Word格式.docx_第4页
第4页 / 共12页
导航仿真程序Word格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

导航仿真程序Word格式.docx

《导航仿真程序Word格式.docx》由会员分享,可在线阅读,更多相关《导航仿真程序Word格式.docx(12页珍藏版)》请在冰豆网上搜索。

导航仿真程序Word格式.docx

y通道速度

Vz

(1)=0.007106781;

z通道速度

重力加速度计算参数

g0=9.7803267714;

gk1=0.00193185138639;

gk2=0.00669437999013;

Vx=zeros(1,48001);

Vy=zeros(1,48001);

Vz=zeros(1,48001);

Lamda=zeros(1,48001);

L=zeros(1,48001);

Seita=zeros(1,48001);

Gama=zeros(1,48001);

Ksai=zeros(1,48001);

四元素初始值

e0=cos(0.5*Ksai

(1))*cos(0.5*Seita

(1))*cos(0.5*Gama

(1))-sin(0.5*Ksai

(1))*sin(0.5*Seita

(1))*sin(0.5*Gama

(1));

e1=-cos(0.5*Ksai

(1))*sin(0.5*Seita

(1))*cos(0.5*Gama

(1))+sin(0.5*Ksai

(1))*cos(0.5*Seita

(1))*sin(0.5*Gama

(1));

e2=-cos(0.5*Ksai

(1))*cos(0.5*Seita

(1))*sin(0.5*Gama

(1))-sin(0.5*Ksai

(1))*sin(0.5*Seita

(1))*cos(0.5*Gama

(1));

e3=cos(0.5*Ksai

(1))*sin(0.5*Seita

(1))*sin(0.5*Gama

(1))+sin(0.5*Ksai

(1))*cos(0.5*Seita

(1))*cos(0.5*Gama

(1));

Ctb=[e0^2+e1^2-e2^2-e3^22*(e1*e2+e0*e3)2*(e1*e3-e0*e2);

用四元素表示得姿态矩阵

2*(e1*e2-e0*e3)e0^2-e1^2+e2^2-e3^22*(e2*e3+e0*e1);

2*(e1*e3+e0*e2)2*(e2*e3-e0*e1)e0^2-e1^2-e2^2+e3^2];

E=[e0e1e2e3]'

;

四元素的四个元素值

fori=1:

48000

Ry(i)=Re*(1-2*e+3*e*(sin(L(i)))^2);

计算子午圈主曲率半径

Rx(i)=Re*(1+e*(sin(L(i)))^2);

计算卯酉圈主曲率半径

g=g0*(1+gk1*(sin(L(i)))^2)*(1-2*h/Re)/sqrt(1-gk2*(sin(L(i)))^2);

重力加速度计算

Cbt=Ctb'

f_t=Cbt*f_INSc;

将体轴系中的比例转化到地理系

Vx(i+1)=(f_t(1,i)+2*Wie*sin(L(i))*Vy(i)+Vx(i)*Vy(i)*tan(L(i))/Rx(i))/80+Vx(i);

x通道速度计算

Vy(i+1)=(f_t(2,i)-2*Wie*sin(L(i))*Vx(i)-Vx(i)*Vx(i)*tan(L(i))/Rx(i))/80+Vy(i);

y通道速度计算

Vz(i+1)=(f_t(3,i)+2*Wie*cos(L(i))*Vx(i)+Vx(i)*Vx(i)/Rx(i)+Vy(i)*Vy(i)/Ry(i)-g)/80+Vz(i);

Lamda(i+1)=Vx(i)/cos(L(i))/Rx(i)/80+Lamda(i);

经度计算

ifLamda(i+1)>

pi

Lamda(i+1)=Lamda(i+1)-2*pi;

经度在-180度(西经)到180(东经)范围

end

L(i+1)=Vy(i)/Ry(i)/80+L(i);

纬度计算

ifL(i+1)>

(pi/2)

L(i+1)=pi-L(i+1);

纬度小于90度(北纬)

Wetx_t(i)=-Vy(i)/Ry(i);

Wety_t(i)=Vx(i)/Rx(i);

Wetz_t(i)=Vx(i)*tan(L(i))/Rx(i);

在地理坐标系的位移角速率

Wet_t=[Wetx_t(i)Wety_t(i)Wetz_t(i)]'

Wib_b=[wib_INSc(1,i)wib_INSc(2,i)wib_INSc(3,i)]'

陀螺仪测的角速率值

Wie_t=[0Wie*cos(L(i))Wie*sin(L(i))]'

在地理坐标系的地球角速率

Wtb_b=Wib_b-Ctb*(Wie_t+Wet_t);

姿态矩阵角速率

用角增量法计算四元素姿态矩阵

Mwtb=[0-Wtb_b

(1)-Wtb_b

(2)-Wtb_b(3);

Wtb_b

(1)0Wtb_b(3)-Wtb_b

(2);

Wtb_b

(2)-Wtb_b(3)0Wtb_b

(1);

Wtb_b(3)Wtb_b

(2)-Wtb_b

(1)0]/80;

derta=sqrt((Mwtb(1,2))^2+(Mwtb(1,3))^2+(Mwtb(1,4))^2);

E=[eye(4)*(1-derta^2/8+derta^4/384)+(1/2-derta^2/48)*Mwtb]*E;

>

E=(cos(0.5*derta)*eye(4)+Mwtb*sin(0.5*derta)/derta)*E,采用四阶近似算法

e0=E

(1);

e1=E

(2);

e2=E(3);

e3=E(4);

姿态角计算

Seita(i+1)=asin(Ctb(2,3));

俯仰角计算

Gama(i+1)=atan(-Ctb(1,3)/Ctb(3,3));

横滚角计算

ifabs(Ctb(3,3))>

eps

ifCtb(3,3)>

0

Gama(i+1)=Gama(i+1);

elseif-Ctb(1,3)>

0

Gama(i+1)=Gama(i+1)+pi;

elseGama(i+1)=Gama(i+1)-pi;

Gama(i+1)=pi/2;

elseGama(i+1)=-pi/2;

Ksai(i+1)=atan(Ctb(2,1)/Ctb(2,2));

航向角计算

ifabs(Ctb(2,2))>

ifCtb(2,2)>

Ksai(i+1)=Ksai(i+1);

elseifCtb(2,1)>

Ksai(i+1)=Ksai(i+1)+pi;

elseKsai(i+1)=Ksai(i+1)-pi;

Ksai(i+1)=pi/2;

elseKsai(i+1)=-pi/2;

将弧度换算为角度

Seita=Seita*180/pi;

Gama=Gama*180/pi;

Ksai=Ksai*180/pi;

L=L*180/pi;

Lamda=Lamda*180/pi;

t=0:

1/80:

600;

绘制曲线图

figure

(1);

plot(t,Lamda)%>

绘制经度变化曲线图

gridon

Xlabel('

时间/秒'

);

Ylabel('

经度Lamda/度'

title('

经度变化曲线图'

figure

(2);

plot(t,L)%>

绘制纬度变化曲线图

纬度L/度'

纬度变化曲线图'

figure(3);

plot(Lamda,L)%>

绘制经-纬度变化曲线图

经—纬度坐标曲线图'

figure(4);

plot(t,Seita)%>

绘制俯仰角变化曲线图

俯仰角Seita/度'

俯仰角变化曲线图'

figure(5);

plot(t,Gama)%>

绘制横滚角变化曲线图

横滚角Gama/度'

横滚角变化曲线图'

figure(6);

plot(t,Ksai)%>

绘制航向角变化曲线

航向角Ksai/度'

航向角变化曲线图'

figure(7);

plot(t,Vx)%>

绘制东向速度变化曲线

东向速度Vx米/秒'

东向速度变化曲线图'

figure(8);

plot(t,Vy)%>

绘制北向速度变化曲线

北向速度Vy米/秒'

北向速度变化曲线图'

figure(9);

plot(t,Vz)%>

绘制垂直速度变化曲线

垂直速度Vz米/秒'

垂直速度变化曲线图'

65行有错误,不知道能否更正

缺少了注释号 

修改如下:

这里我有一分钟的数据,是自己模拟的载机S机动,现将其传上来,顺便将这程序进行了一点点的改变,给出的结果并不理想,大家可以拿去跑一下,反正跟我真实的轨迹差别很大

此为基于四元素法,角增量法的捷连惯导系统程序算法

飞行器飞行过程中飞行高度不变

航向角以逆时针为正

以地理系为导航坐标系

运行程序时需导入比力信息及陀螺议角速率信息

clc

clear

closeall

Data=load('

Track_S.txt'

f_INS=Data(:

1:

3);

%加载加表数据

wib_INS=Data(:

4:

6);

%加载陀螺数据

L0=size(Data,1);

Wie=7.292115147e-5;

地球自传角速度

Re=6378245;

地球椭球长半径

h=30;

飞行高度

e=1/298.3;

初始经纬度

Lamda

(1)=116.344695283*pi/180;

初始经度(弧度)

L

(1)=39.975172*pi/180;

初始纬度(弧度)

初始姿态角

Seita

(1)=0.120992605*pi/180;

俯仰角(弧度)

Gama

(1)=0.010445947*pi/180;

横滚角(弧度)

Ksai

(1)=91.637207*pi/180;

航向角(弧度)

初始速度

Vx

(1)=0.000048637;

x通道速度

Vy

(1)=0.000206947;

y通道速度

Vz

(1)=0.007106781;

z通道速度

重力加速度计算参数

g0=9.7803267714;

gk1=0.00193185138639;

gk2=0.00669437999013;

Vx=zeros(1,L0);

Vy=zeros(1,L0);

Vz=zeros(1,L0);

Lamda=zeros(1,L0);

L=zeros(1,L0);

Seita=zeros(1,L0);

Gama=zeros(1,L0);

Ksai=zeros(1,L0);

四元素初始值

e0=cos(0.5*Ksai

(1))*cos(0.5*Seita

(1))*cos(0.5*Gama

(1))-sin(0.5*Ksai

(1))*sin(0.5*Seita

(1))*sin(0.5*Gama

(1));

e1=-cos(0.5*Ksai

(1))*sin(0.5*Seita

(1))*cos(0.5*Gama

(1))+sin(0.5*Ksai

(1))*cos(0.5*Seita

(1))*sin(0.5*Gama

(1));

e2=-cos(0.5*Ksai

(1))*cos(0.5*Seita

(1))*sin(0.5*Gama

(1))-sin(0.5*Ksai

(1))*sin(0.5*Seita

(1))*cos(0.5*Gama

(1));

e3=cos(0.5*Ksai

(1))*sin(0.5*Seita

(1))*sin(0.5*Gama

(1))+sin(0.5*Ksai

(1))*cos(0.5*Seita

(1))*cos(0.5*Gama

(1));

Ctb=[e0^2+e1^2-e2^2-e3^22*(e1*e2+e0*e3)2*(e1*e3-e0*e2);

用四元素表示得姿态矩阵

E=[e0e1e2e3]'

四元素的四个元素值

fori=1:

L0

f_INSc=f_INS(i,:

)'

wib_INSc=wib_INS(i,:

Ry(i)=Re*(1-2*e+3*e*(sin(L(i)))^2);

计算子午圈主曲率半径

Rx(i)=Re*(1+e*(sin(L(i)))^2);

计算卯酉圈主曲率半径

g=g0*(1+gk1*(sin(L(i)))^2)*(1-2*h/Re)/sqrt(1-gk2*(sin(L(i)))^2);

重力加速度计算

Cbt=Ctb'

f_t=Cbt*f_INSc;

将体轴系中的比例转化到地理系

Vx(i)=(f_t

(1)+2*Wie*sin(L(i))*Vy(i)+Vx(i)*Vy(i)*tan(L(i))/Rx(i))/80+Vx(i);

x通道速度计算

Vy(i)=(f_t

(2)-2*Wie*sin(L(i))*Vx(i)-Vx(i)*Vx(i)*tan(L(i))/Rx(i))/80+Vy(i);

y通道速度计算

Vz(i)=(f_t(3)+2*Wie*cos(L(i))*Vx(i)+Vx(i)*Vx(i)/Rx(i)+Vy(i)*Vy(i)/Ry(i)-g)/80+Vz(i);

Lamda(i)=Vx(i)/cos(L(i))/Rx(i)/80+Lamda(i);

经度计算

ifLamda(i)>

pi

Lamda(i)=Lamda(i)-2*pi;

经度在-180度(西经)到180(东经)范围

end

L(i)=Vy(i)/Ry(i)/80+L(i);

纬度计算

ifL(i)>

(pi/2)

L(i)=pi-L(i);

纬度小于90度(北纬)

Wetx_t(i)=-Vy(i)/Ry(i);

Wety_t(i)=Vx(i)/Rx(i);

Wetz_t(i)=Vx(i)*tan(L(i))/Rx(i);

在地理坐标系的位移角速率

Wet_t=[Wetx_t(i)Wety_t(i)Wetz_t(i)]'

Wib_b=[wib_INSc

(1)wib_INSc

(2)wib_INSc(3)]'

陀螺仪测的角速率值

Wie_t=[0Wie*cos(L(i))Wie*sin(L(i))]'

在地理坐标系的地球角速率

Wtb_b=Wib_b-Ctb*(Wie_t+Wet_t);

姿态矩阵角速率

用角增量法计算四元素姿态矩阵

Mwtb=[0-Wtb_b

(1)-Wtb_b

(2)-Wtb_b(3);

derta=sqrt((Mwtb(1,2))^2+(Mwtb(1,3))^2+(Mwtb(1,4))^2);

E=[eye(4)*(1-derta^2/8+derta^4/384)+(1/2-derta^2/48)*Mwtb]*E;

E=(cos(0.5*derta)*eye(4)+Mwtb*sin(0.5*derta)/derta)*E,采用四阶近似算法

e0=E

(1);

e1=E

(2);

e2=E(3);

e3=E(4);

姿态角计算

Seita(i)=asin(Ctb(2,3));

俯仰角计算

Gama(i)=atan(-Ctb(1,3)/Ctb(3,3));

横滚角计算

eps

Gama(i)=Gama(i);

0

Gama(i)=Gama(i)+pi;

elseGama(i)=Gama(i)-pi;

Gama(i)=pi/2;

elseGama(i)=-pi/2;

Ksai(i)=atan(Ctb(2,1)/Ctb(2,2));

航向角计算

Ksai(i)=Ksai(i);

Ksai(i)=Ksai(i)+pi;

elseKsai(i)=Ksai(i)-pi;

Ksai(i)=pi/2;

elseKsai(i)=-pi/2;

将弧度换算为角度

Seita=Seita*180/pi;

Gama=Gama*180/pi;

Ksai=Ksai*180/pi;

L=L*180/pi;

Lamda=Lamda*180/pi;

t=0.01:

0.01:

L0*0.01;

绘制曲线图

figure

plot(L,Lamda)%>

绘制经度变化曲线图

gridon

经度'

维度'

经维度变化曲线图'

绘制俯仰角变化曲线图

绘制横滚角变化曲线图

绘制航向角变化曲线

绘制东向速度变化曲线

绘制北向速度变化曲线

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1