%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%陀螺仪及加速度计信息提取
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
DATAW=textread('f:\data1\imu_ENU.txt'); %陀螺仪数据表格
DATAf=textread('f:\data1\ins_c.txt'); %加速度计数据表格
Wib1=DATAW(:,(5:7));%提取角速度
fb1=DATAf(:,(8:10));%提取加速度
sizeDATAW=size(DATAW);
sizeDATAf=size(DATAf);
clear DATA;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%基本初始化参数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wie=7.2722e-5;%地球自转角速度
Re=6378137.0;%地球半径
f=1.0/298.257;%地球扁率
g0=9.7803;%重力加速度
wie=7.292*10^-5;
Wie=[0;0;wie];%Wiep初始化
Wep=[0;0;0];%Wep初始化
deg=180/pi;
rad=pi/180;
T=0.01;%采样周期
temp=1;%临时变量(下同)
tempW=1;
tempV=1;
flag=1;
i=1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%位置矩阵、四元数、姿态矩阵初始化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
lambd(tempW,1)=DATAW(1,2);
lambdm=lambd(tempW,1)*rad;%初始经度
L(tempW,1)=DATAW(1,3);
Lm=L(tempW,1)*rad;%初始纬度
h(tempV,1)=DATAf(1,4);%初始高度
V=[DATAf(1,5);DATAf(1,6);DATAf(1,7)];%初始速度
psi(temp,1)=DATAf(1,11);
psim=psi(temp,1)*rad;%偏航角
theta(temp,1)=DATAf(1,12);
thetam=theta(temp,1)*rad;%俯仰角
gamma(temp,1)=DATAf(1,13);
gammam=gamma(temp,1)*rad;%滚动角
C=[-sin(lambdm),cos(lambdm),0;
-sin(Lm)*cos(lambdm),-sin(Lm)*sin(lambdm),cos(Lm);
cos(Lm)*cos(lambdm),cos(Lm)*sin(lambdm),sin(Lm)];%初始位置矩阵
q=[cos(psim/2)*cos(thetam/2)*cos(gammam/2)-sin(psim/2)*sin(thetam/2)*sin(gammam/2);
cos(psim/2)*sin(thetam/2)*cos(gammam/2)-sin(psim/2)*cos(thetam/2)*sin(gammam/2);
cos(psim/2)*cos(thetam/2)*sin(gammam/2)+sin(psim/2)*sin(thetam/2)*cos(gammam/2);
cos(psim/2)*sin(thetam/2)*sin(gammam/2)+sin(psim/2)*cos(thetam/2)*cos(gammam/2)];%初始四元数
Cbp=[q(1)^2+q(2)^2-q(3)^2-q(4)^2,2*(q(2)*q(3)-q(1)*q(4)),2*(q(2)*q(4)+q(1)*q(3));
2*(q(2)*q(3)+q(1)*q(4)),q(1)^2-q(2)^2+q(3)^2-q(4)^2,2*(q(3)*q(4)-q(1)*q(2));
2*(q(2)*q(4)-q(1)*q(3)),2*(q(3)*q(4)+q(1)*q(2)),q(1)^2-q(2)^2-q(3)^2+q(4)^2];%初始姿态矩阵
% % 陀螺的误差设置:陀螺的常值漂移delta_w=0.02度每小时,随机干扰w_randomerror=0.01度每小时
% delta_w=pi*0.1/180/3600;
% w_randomerror=pi*0.01/180/3600*randn(3*data_num,1);
% % 加速度计的误差设置:加速度计的偏置量delta_a=1e-4*g,随机干扰a_randomerror=(5e-5*randn(3*data_num,1))*g
% delta_a=1e-4*g;
% a_randomerror=(1e-5*randn(3*data_num,1))*g;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%导航参数更新
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
while i<=sizeDATAf(1,1)-1
Wib=Wib1(i,:)';%输入陀螺仪测得的角速度
Wpb=Wib-Cbp'*(Wep+Wie);%计算姿态矩阵速率
%g0=(g0+0.051799*C(3,3)^2);
%四元数更新(四阶龙格-库塔)
W=0.5*[0,-Wpb(1),-Wpb(2),-Wpb(3);
Wpb(1),0,Wpb(3),-Wpb(2);
Wpb(2),-Wpb(3),0,Wpb(1);
Wpb(3),Wpb(2),-Wpb(1),0];
switch(flag)
case(1)
W1=W;
flag=2;
i=i+1;
continue
case(2)
W3=W;
flag=1;
end
W2=(W1+W3)/2;
qn=q;
k1=W1*q;
q=qn+(T/2)*k1;
k2=W2*q;
q=qn+(T/2)*k2;
k3=W2*q;
q=qn+T*k3;
k4=W3*q;
q=qn+(T/6)*(k1+2*k2+2*k3+k4);
q=q/sqrt((q(1)^2+q(2)^2+q(3)^2+q(4)^2));%四元数归一化
% %四元数更新(欧拉法)
% q1=0.5*W*q;
% q=q+T*q1;
Cbp=[q(1)^2+q(2)^2-q(3)^2-q(4)^2,2*(q(2)*q(3)-q(1)*q(4)),2*(q(2)*q(4)+q(1)*q(3));
2*(q(2)*q(3)+q(1)*q(4)),q(1)^2-q(2)^2+q(3)^2-q(4)^2,2*(q(3)*q(4)-q(1)*q(2));
2*(q(2)*q(4)-q(1)*q(3)),2*(q(3)*q(4)+q(1)*q(2)),q(1)^2-q(2)^2-q(3)^2+q(4)^2];%姿态矩阵更新
%速率方程求解(二阶龙格-库塔)
Speed(1,1)=0;
VA=[0,2*Wie(3),-(2*Wie(2)+Wep(2));
-2*Wie(3),0,2*Wie(1)+Wep(1);
2*Wie(2)+Wep(2),-(2*Wie(1)+Wep(1)),0];
fb=fb1(i,:)';%采集加速度计数据
fp1=Cbp*fb;
fb=fb1(i+1,:)';
fp2=Cbp*fb;
Vn=V;
k1=fp1-[0,0,g0]'+VA*V;
V=Vn+k1*T;
k2=fp2-[0,0,g0]'+VA*V;
V=Vn+(T/2)*(k1+k2);
Speed(tempV,1)=sqrt(V(1)^2+V(2)^2);%速度计算
tempV=tempV+1;
h(tempV,1)=h(tempV-1,1)+0.5*(Vn(3)+V(3))*T;
VM(:,tempV)=V;
Wep=[-V(2)/Re;V(1)/Re;V(1)*tan(Lm)/Re];%位置速率计算
%位置矩阵微分方程求解(二阶龙格-库塔)
CA=[0,Wep(3),-Wep(2);
-Wep(3),0,Wep(1);
Wep(2),-Wep(1),0];
Cn=C;
k1=CA*C;
C=Cn+k1*T;
k2=CA*C;
C=Cn+(k1+k2)*(T/2);
thetam=asin(Cbp(3,2));
gammam=atan(-Cbp(3,1)/Cbp(3,3));
psim=atan(-Cbp(1,2)/Cbp(2,2)); %三个姿态角的主值
if Cbp(3,3)>0;%滚动角计算
gammam=gammam;
elseif (Cbp(3,3)<0)&(gammam<0);
gammam=gammam+pi;
else (Cbp(3,3)<0)&(gammam>0);
gammam=gammam-pi;
end
if (Cbp(2,2)>0)&(psim>0);%偏航角计算
psim=psim;
elseif (Cbp(2,2)>0)&(psim<0);
psi=psim+2*pi;
else Cbp(2,2)<0;
psim=psim+pi;
end
temp=temp+1;
psi(temp,1)=psim*deg;
theta(temp,1)=thetam*deg;
gamma(temp,1)=gammam*deg;
lambdm=atan(C(3,2)/C(3,1));%经纬度主值计算
Lm=asin(C(3,3));
if C(3,1)>0;%经度计算
lambdm=lambdm;
elseif (C(3,1)<0)&(lambdm<0);
lambdm=lambdm+pi;
else (C(3,1)<0)&(lambdm>0);
lambdm=lambdm-pi;
end
tempW=tempW+1;
lambd(tempW,1)=lambdm*deg;
L(tempW,1)=Lm*deg;
i=i+1;
end
没有合适的资源?快使用搜索试试~ 我知道了~
基于MATLAB实现的指北方位系统在捷联惯性导航系统中的MATLAB模拟算法+使用说明文档.zip

共2个文件
md:1个
m:1个

1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 122 浏览量
2024-05-22
18:04:52
上传
评论
收藏 15KB ZIP 举报
温馨提示
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的指北方位系统在捷联惯性导航系统中的MATLAB模拟算法+使用说明文档.zip 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论




























收起资源包目录



共 2 条
- 1
资源评论


IT狂飙
- 粉丝: 4877
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 互联网+背景下纸媒与新媒体技术的融合策略思考.docx
- 智慧城市建设的途径与方法研究.docx
- 中国人工智能+时代正在到来.docx
- 基于QKD的低密钥可信度密码算法.docx
- 初中计算机等级考试理论复习题.doc
- 虚拟网络技术在计算机安全中的作用效果.docx
- 财务管理信息化.docx
- matlab-美赛资源
- 区块链技术对市场监管的影响和思考.docx
- 校园暴力蔓延互联网.docx
- 基于单片机控制WIFI只能小车大学本科方案设计书.doc
- CP1-PLCModbus-RTU简易主站功能.docx
- Sqlserver图书馆管理.doc
- 电力信息化行业网络安全主动防御技术研究.docx
- 区域医疗信息系统建设中云计算的应用.docx
- 电梯PLC大学本科方案设计书1.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
