⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdzcx.m

📁 一个惯性导航子对准程序
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 惯性导航系统
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
close all;
load mwains.txt;
load gps1.dat;
format long
fid10 = fopen('mcszdz154.txt','w+');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
kkkk=3000;
for i=1:kkkk
    mwains0(i,:)=mean(mwains(i:i+100,:));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%地球自转角速率、地球半径、曲率半径、经度、纬度、高度、重力加速度
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Wie=0.000072722;Rr=6378245;e=1/298.3;g0=9.7803267714;g00=9.7803267714;
Tins=0.010;
mvn=0;mvu=0;mve=0;mL=0;mh=0;mJ=0;
mp=0;mr=0;my=-(0+0/60+0/3600)/(180/pi);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
g0=g00*(1+5.27094e-3*sin(mL)^2+2.32718e-5*sin(mL)^4)-3.086e-6*mh;
Rn=(1-2*e+3*e*sin(mL)^2)*Rr;
Re=(1+e*sin(mL)^2)*Rr;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x00=[mr my mp];
mx00=x00;
mq=[cos(x00(3)/2.0)*cos(x00(2)/2.0)*cos(x00(1)/2.0)-sin(x00(3)/2.0)*sin(x00(2)/2.0)*sin(x00(1)/2.0);
   cos(x00(3)/2.0)*cos(x00(2)/2.0)*sin(x00(1)/2.0)+sin(x00(3)/2.0)*sin(x00(2)/2.0)*cos(x00(1)/2.0);
   cos(x00(3)/2.0)*sin(x00(2)/2.0)*cos(x00(1)/2.0)+sin(x00(3)/2.0)*cos(x00(2)/2.0)*sin(x00(1)/2.0);
   sin(x00(3)/2.0)*cos(x00(2)/2.0)*cos(x00(1)/2.0)-cos(x00(3)/2.0)*sin(x00(2)/2.0)*sin(x00(1)/2.0);]; 
mCbn=[mq(1)^2+mq(2)^2-mq(3)^2-mq(4)^2,2*(mq(2)*mq(3)-mq(1)*mq(4)),2*(mq(2)*mq(4)+mq(1)*mq(3));
      2*(mq(2)*mq(3)+mq(1)*mq(4)),mq(1)^2-mq(2)^2+mq(3)^2-mq(4)^2,2*(mq(3)*mq(4)-mq(1)*mq(2));
      2*(mq(2)*mq(4)-mq(1)*mq(3)),2*(mq(3)*mq(4)+mq(1)*mq(2)),mq(1)^2-mq(2)^2-mq(3)^2+mq(4)^2];
mCbn11=mCbn;  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%初始对准
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统状态误差初始值设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
efins=[0.5;0.5;0.5];             % 姿态角初始误差
evins=[0.1;0.1;0.1;];            % 惯导速度初始误差
epins=[100/Rr;100/Rr;100;];      % 惯导位置初始误差
eg=[0.1;0.1;0.1]/57.3;           % 陀螺漂移误差
ea=[0.01;0.01;0.01;]*g0;         % 加计常值漂移误差
ex0=[efins;evins;epins;];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 系统方程白噪声均方差
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wfinsm=[std(mwains(1:2000,1:3))]'*0.01*2;
wvinsm=[std(mwains(1:2000,4:6))]'*g0*0.01*2;
wpinsm=[10/Rr;10/Rr;10;];
wgm=[std(mwains(1:2000,1:3))]'; 
wam=[std(mwains(1:2000,4:6))]'*g0;
wwm=[wfinsm;wvinsm;wpinsm;];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
v=[[std(mwains(1:2000,4:6))]'*g0*0.01*2;];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ww3=[wwm(1:9);];
x03=[ex0(1:9);];
v3=v;
mQt3=diag(ww3.^2);     
mRk3=diag(v3.^2);    
mPk3=diag(x03.^2);    
mXk3=zeros(9,1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mvins=[0 0 0]; mpins=[mL mJ mh];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:kkkk/2
    mwains1=mwains0(2*k-1,1:6);
    mwains2=mwains0(2*k,1:6);
    mWiex=Wie*cos(mL);
    mWiey=Wie*sin(mL);
    mWiez=0;
    mWinb=mCbn11'*[mWiex;mWiey;mWiez;];
    mWnb1=mwains1(1:3)-mWinb';
    mWnb2=mwains2(1:3)-mWinb';
    mwebb(2*k-1,1:3)=mWnb1;
    mwebb(2*k,1:3)=mWnb2;
    mt1=mWnb1*Tins/2;
    mt2=mWnb2*Tins/2;
    mst=mt1+mt2+2/3*cross(mt1,mt2);
    mita=[0 -mst(1) -mst(2) -mst(3);
          mst(1) 0 mst(3) -mst(2);
          mst(2) -mst(3) 0 mst(1);
          mst(3) mst(2) -mst(1) 0;];
    dst=sqrt(mst(1)^2+mst(2)^2+mst(3)^2);
    dst1=1-dst^2/8+dst^4/384;
    dst2=1/2-dst^2/48;
    mq=(dst1*eye(4)+dst2*mita)*mq;        
    mqq=sqrt(mq(1)^2+mq(2)^2+mq(3)^2+mq(4)^2);
    mq=mq/mqq;
    mCbn=[mq(1)^2+mq(2)^2-mq(3)^2-mq(4)^2,2*(mq(2)*mq(3)-mq(1)*mq(4)),2*(mq(2)*mq(4)+mq(1)*mq(3));
          2*(mq(2)*mq(3)+mq(1)*mq(4)),mq(1)^2-mq(2)^2+mq(3)^2-mq(4)^2,2*(mq(3)*mq(4)-mq(1)*mq(2));
          2*(mq(2)*mq(4)-mq(1)*mq(3)),2*(mq(3)*mq(4)+mq(1)*mq(2)),mq(1)^2-mq(2)^2-mq(3)^2+mq(4)^2;];
    T11=mCbn(1,1);T12=mCbn(1,2);T13=mCbn(1,3);
    T21=mCbn(2,1);T22=mCbn(2,2);T23=mCbn(2,3);
    T31=mCbn(3,1);T32=mCbn(3,2);T33=mCbn(3,3);
    mp=asin(mCbn(2,1));
    my=atan(-mCbn(3,1)/mCbn(1,1));  
           if(mCbn(1,1)<0)            
               if(my>0)                
                   my=my-pi;                
               else                
                   my=my+pi;
               end
           end
    mr=atan(-mCbn(2,3)/mCbn(2,2));
           if(mCbn(2,2)<0)            
               if(mr>0)                
                   mr=mr-pi;                
               else                
                   mr=mr+pi;
               end
           end
    mfi=[mr my mp];
   
    gn=[0 -g0 0];
    mdgc=gn*Tins; 
    mv1=mwains1(4:6)*g0*Tins/2;
    mv2=mwains2(4:6)*g0*Tins/2; 
    mvinsn=mCbn11*[mv1+mv2]';
    mvins=mvins+mvinsn'+mdgc;
    mpins=mpins+([mvins(1)/(Rn+mh) mvins(3)/(Re+mh)/cos(mL) mvins(2)])*Tins;
    mm(i,:)=[mfi*180/pi mvins mpins(1) mpins(2) mpins(3)];
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    m11=[mWiex;mWiey;mWiez;];
    m10=-[0 -m11(3) m11(2);m11(3) 0 -m11(1);-m11(2) m11(1) 0;];
    m20=[0 0 1/(Re+mh);0 0 tan(mL)/(Re+mh);-1/(Rn+mh) 0 0;];
    m30=[-Wie*sin(mL) 0 0;Wie*cos(mL) 0 0;0 0 0;];
    m40=-mCbn;
    mf=mCbn*[(mwains1(4:6)*g0+mwains2(4:6)*g0)/2]';
    m50=[0 0 mf(2);0 1 0;-mf(2) 0 0;];
    m60=[0 0 -2*Wie*sin(mL);0 0 2*Wie*cos(mL);2*Wie*sin(mL) -2*Wie*cos(mL) 0;];
    m70=mCbn;
    m80=[1/(Re+mh) 0 0;0 0 sec(mL)/(Re+mh);0 1 0;];
    m90=zeros(3,3);
    
    mFins3=[m10 m20 m30;
            m50 m60 m90;
            m90 m80 m90;];       
    mHk3=[m90 eye(3) m90;];
    mZk3=[mvins]';
    
    mFk3=eye(9)+Tins*mFins3 +Tins^2/2*mFins3^2 +Tins^3/6*mFins3^3 +Tins^4/24*mFins3^4 +Tins^5/120*mFins3^5; 
    m1=mQt3; 
    m2=mFins3*m1+(mFins3*m1)';
    m3=mFins3*m2+(mFins3*m2)'; 
    m4=mFins3*m3+(mFins3*m3)'; 
    m5=mFins3*m4+(mFins3*m4)';
    mQk3=m1*Tins +m2*Tins^2/2 +m3*Tins^3/6 +m4*Tins^4/24 +m5*Tins^5/120;

    mPkk3=mFk3*mPk3*mFk3'+mQk3;                       
    mKk3=mPkk3*mHk3'*(mHk3*mPkk3*mHk3'+mRk3)^-1;             
    mPk3=(eye(9)-mKk3*mHk3)*mPkk3;
    mXkk3=mFk3*mXk3;    
    mXk3=mXkk3+mKk3*(mZk3-mHk3*mXkk3); 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
    fprintf(fid10,'%8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f\n',mXk3'); 
    mxx3(k,:)=[mXk3'];
end
fclose(fid10);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -