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

📄 dhjs.m

📁 一个惯性导航解算程序
💻 M
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 惯性导航系统
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc;
clear all;
close all;

load gps4.dat;
gps1=gps4;
load swains4.txt;
swains=swains4;
my0=(69.020000)/(180/pi);
my=my0;
mL=0.00;mh=00;mJ=00;  

format long
mr=-0.00000/57.3;
mp=0/57.3;
Wie=0.000072722;Rr=6378245;e=1/298.3;g0=9.7803267714;g00=9.7803267714;
Tins=0.010;
mvn=0;mvu=0;mve=0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
g0=g00*(1+5.27094e-3*sin(mL)^2+2.32718e-5*sin(mL)^4)-3.086e-6*mh;
mma=mean(swains(100:3000,4:6));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x00=[mr my mp]
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];  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
mwbias0=mean(swains(1000:3000,1:3))-[mCbn'*[Wie*cos(mL) Wie*sin(mL) 0]']'
mabias0=mean(swains(1000:3000,4:6))-[mCbn'*[0 1 0]']'
% mwbias0=mean(mxx3(2000:3500,10:12))
% mabias0=mean(mxx3(2000:3500,13:15))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mvins2=[0 0 0]; mpins2=[mL mJ mh];
mvins1=[0 0 0]; mpins1=[mL mJ mh];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid3 = fopen('mgdjs.txt','w+');
fid8 = fopen('gpsvp.txt','w+');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k=1:23600000
    i=k;
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %主惯导导航解算
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    swains1=swains(2*k-1+20+0,1:6)-[mwbias0 mabias0];
    swains2=swains(2*k+20+0,1:6)-[mwbias0 mabias0];
    mvins0=3/2*mvins2-1/2*mvins1;
    mpins0=3/2*mpins2-1/2*mpins1;
    g0=g00*(1+5.27094e-3*sin(mpins0(1))^2+2.32718e-5*sin(mpins0(1))^4)-3.086e-6*mpins0(3);
    Rn=(1-2*e+3*e*sin(mpins0(1))^2)*Rr;
    Re=(1+e*sin(mpins0(1))^2)*Rr;
    mCbn0=mCbn;
    mWiex=Wie*cos(mpins0(1));
    mWiey=Wie*sin(mpins0(1));
    mWiez=0;
    mWenx=mvins0(3)/(Re+mpins0(3));
    mWeny=mvins0(3)*tan(mpins0(1))/(Re+mpins0(3));
    mWenz=-mvins0(1)/(Rn+mpins0(3));
    mWin=mCbn'*[mWiex+mWenx;mWiey+mWeny;mWiez+mWenz];
    mWnb1=swains1(1:3)-mWin';
    mWnb2=swains2(1:3)-mWin';
    webb(2*k-1,1:3)=mWnb1;
    webb(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                
                   r=r+pi;
               end
           end
    mfi=[mr my mp];   
    mCbn=mCbn;    
    gn=[0 -g0 0];
    mdgc=(gn-cross([2*mWiex+mWenx 2*mWiey+mWeny 2*mWiez+mWenz],mvins0))*Tins; 
    mv1=swains1(4:6)*g0*Tins/2;
    mv2=swains2(4:6)*g0*Tins/2;
    cnn=[1 0 0;0 1 0;0 0 1;]-[0 -(mWiez+mWenz) (mWiey+mWeny);(mWiez+mWenz) 0 -(mWiex+mWenx);-(mWiey+mWeny) (mWiex+mWenx) 0;];
    mvinsn=-0.5*(-cnn+eye(3))*mCbn0*[mv1+mv2]'+mCbn0*([[mv1+mv2]+1/2*cross(mt1+mt2,mv1+mv2)+2/3*(cross(mt1,mv2)+cross(mv1,mt2))]');
    mvins1=mvins2;
    mvins=mvins2+mvinsn'+mdgc; 
    mvins2=mvins; 
    mpins1=mpins2;
    mpins=mpins2+([(mvins1(1)+mvins2(1))/2/(Rn+mpins2(3)) (mvins1(3)+mvins2(3))/2/(Re+mpins2(3))/cos(mpins0(1)) (mvins1(2)+mvins2(2))/2])*Tins;
    mpins2=mpins;
    mgdjs0(k,:)=[mfi(1)*180/pi mfi(2)*180/pi-my0*57.3 mfi(3)*180/pi mvins (mpins(1)-mL)*Rn (mpins(2)-mJ)*Re mpins(3)-mh];
    fprintf(fid3,'%8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f %8.7f\n',mgdjs0(k,:)); 
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if mod(k,100)==0  
    k/100+40
    gpsvp0=[gps1(k/100,4:6) (gps1(k/100,1)-mL)*Rn (gps1(k/100,2)-mJ)*Re gps1(k/100,3)-mh];
    fprintf(fid8,'%8.7f %8.7f %8.7f %8.7f %8.7f %8.7f\n',gpsvp0); 
end     
end
fclose(fid3);
fclose(fid8);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

⌨️ 快捷键说明

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