【GPS+INS在MAV导航上的融合】基于间接卡尔曼滤波的IMU与GPS融合MATLAB仿真(IMU与GPS数据由仿真生成)(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

一、引言

二、系统架构与原理

1. 系统架构

2. 原理概述

三、算法实现

1. 状态变量选择

2. 状态方程与测量方程

3. 卡尔曼滤波算法

四、仿真与实验

1. 仿真环境搭建

2. 仿真结果分析

3. 实验验证

五、结论与展望

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

【GPS+INS在MAV导航上的融合】基于间接卡尔曼滤波的IMU与GPS融合MATLAB仿真

文为GPS+INS在MAV导航上的融合,采用的是间接卡尔曼滤波,其中惯导用来进行状态预测,GPS用来滤波矫正(即量测方程中只有GPS量测量,惯导测量值直接用在状态预测方程中)
使用状态预测方程及惯导测量值进行状态预测,求出偏差状态预测方程的有关系数每次使用偏差状态预测方程预测得到偏差,如果有GPS测量值,则进行量测更新,并对状态进行偏差矫正没有GPS测量值,则没有量测更新,也没有状态偏差矫正,想当于没有进行滤波 。
 

在这个基于间接卡尔曼滤波的IMU与GPS融合的导航系统中,惯性导航系统(INS)扮演着重要的角色,它通过惯性传感器实时测量飞行器的加速度和角速度来进行状态预测。而全球卫星导航系统(GPS)则用来提供定位信息,以校正和修正惯导系统的误差,从而提高导航精度。

具体来说,该系统首先利用状态预测方程和惯导测量值进行状态预测,得到偏差状态预测方程的相关系数。接着,在每次预测中,如果有GPS测量值可用,系统会进行量测更新,校正状态偏差;如果没有GPS测量值,系统则不进行量测更新,状态偏差也不会得到校正。这样,系统就能在融合了GPS和INS的基础上实现更加稳定和精确的导航,提升了飞行器的定位准确性和导航性能。

通过MATLAB仿真,我们不仅可以验证系统的有效性和鲁棒性,还可以对系统进行优化和改进,以适应不同环境和应用场景。这种GPS+INS融合的导航方法不仅可以在MAV(Micro Aerial Vehicle)导航中发挥巨大作用,也适用于其他领域的导航和定位需求,为无人机和其他自主飞行系统的发展提供了重要技术支持。

在无人机(MAV)导航系统中,GPS(全球定位系统)和IMU(惯性测量单元)的融合是提高定位精度和鲁棒性的重要手段。间接卡尔曼滤波(通常称为扩展卡尔曼滤波EKF,因为IMU状态通常包括非线性动力学)是实现这种融合的一种常用方法。以下是一个基于MATLAB的仿真框架,用于模拟IMU和GPS数据的生成,并通过间接卡尔曼滤波进行融合。

【GPS+INS在MAV导航上的融合】基于间接卡尔曼滤波的IMU与GPS融合研究文档可以从以下几个方面进行阐述:

一、引言

在现代无人机(MAV)导航系统中,全球定位系统(GPS)和惯性导航系统(INS,通常由IMU实现)的融合是提高导航精度和可靠性的关键技术。GPS系统能够提供高精度的绝对位置信息,但在城市峡谷、隧道等遮挡物较多的环境下容易丢失信号。而IMU则通过测量加速度和角速度来连续追踪飞行器的姿态和运动状态,但存在积分漂移等问题,长时间使用会导致误差累积。因此,将GPS和IMU数据进行融合,通过间接卡尔曼滤波等方法,可以有效提高导航系统的综合性能。

二、系统架构与原理

1. 系统架构

基于间接卡尔曼滤波的IMU与GPS融合系统主要包括以下几个部分:IMU传感器、GPS接收机、数据处理单元和算法控制单元。IMU传感器负责实时测量飞行器的加速度和角速度,GPS接收机提供位置和速度信息。数据处理单元对传感器数据进行预处理和融合,算法控制单元则负责执行卡尔曼滤波算法,以估计和预测飞行器的状态。

2. 原理概述

间接卡尔曼滤波在IMU与GPS融合中的应用主要遵循以下步骤:

  • 状态预测:利用IMU的测量数据和飞行器的动力学模型,预测飞行器在当前时刻的状态(包括位置、速度、姿态等)。
  • 测量更新:当GPS数据可用时,使用GPS的测量值对预测状态进行更新,以修正IMU累积的误差。
  • 滤波算法:通过卡尔曼滤波算法不断迭代上述预测和更新步骤,以逐步逼近飞行器的真实状态。

三、算法实现

1. 状态变量选择

状态变量通常包括飞行器的位置(x, y, z)、速度(vx, vy, vz)、姿态(如欧拉角或四元数)以及IMU的偏差(加速度计偏差和陀螺仪偏差)。

2. 状态方程与测量方程
  • 状态方程:根据飞行器的动力学模型和IMU的测量数据,建立状态方程以描述飞行器状态随时间的变化。
  • 测量方程:GPS提供的位置和速度信息作为测量值,用于更新飞行器的状态估计。
3. 卡尔曼滤波算法
  • 初始化:设置初始状态估计和协方差矩阵。
  • 预测:根据状态方程和IMU数据预测下一时刻的状态估计和协方差矩阵。
  • 更新:当GPS数据可用时,使用卡尔曼增益计算更新后的状态估计和协方差矩阵。

四、仿真与实验

1. 仿真环境搭建

在MATLAB仿真软件中搭建IMU与GPS数据融合的仿真环境,生成仿真数据以模拟实际飞行情况。

2. 仿真结果分析
  • 对比仅使用IMU、仅使用GPS和融合IMU与GPS的导航效果,分析融合后的导航精度和稳定性。
  • 研究不同噪声水平、不同采样率等因素对融合效果的影响。
3. 实验验证

在实际无人机平台上进行实验验证,通过飞行测试收集数据并分析结果,以验证融合算法的有效性和实用性。

五、结论与展望

基于间接卡尔曼滤波的IMU与GPS融合技术在MAV导航中显示出了显著的优势,能够有效提高导航精度和可靠性。未来,随着传感器技术的不断进步和算法的不断优化,该技术有望在更多领域得到广泛应用。同时,还需要进一步研究其他滤波算法和融合策略,以进一步提升导航系统的综合性能。

以上文档框架和内容基于间接卡尔曼滤波在IMU与GPS融合中的基本原理和现有研究成果进行编写,旨在为相关领域的研究人员和工程师提供参考和借鉴。

📚2 运行结果

部分代码:

errorstate0=zeros(15,1);%误差初始状态赋值
Cov=[0.01*ones(3,1);zeros(3,1);0.01*ones(3,1);zeros(3,1)];
Qc0=diag(Cov);%初始噪声方差
Rc0=diag([0.01,0.01,0.01]);%GPS测量噪声误差方差
% Qc0=diag(zeros(12,1));%初始噪声方差
% Rc0=diag(zeros(3,1));%GPS测量噪声误差方差

%可以改变量使输入的惯性元件的数据带噪声或者不带
ins = InsSolver(Qc0,Rc0);
% [state,errorstate] = ins.imu2state(acc_pure,gyro_pure,gps_pure,state0,errorstate0,tspan,step,0);
[state,errorstate] = ins.imu2state(acc_noise,gyro_noise,gps_noise,state0,errorstate0,tspan,step,0);
%plot trajactory
figure(4)
plot3(r(:,1),r(:,2),r(:,3));
title('真实轨迹');
grid on;
figure(1);
plot3(state(:,1),state(:,2),state(:,3));
title('滤波轨迹');
grid on;

% plot postion error
figure(2),subplot(1,3,1);
plot(tspan,state(:,1) - r(:,1));
grid on;
subplot(1,3,2);
plot(tspan,state(:,2) - r(:,2));
grid on;
subplot(1,3,3);
plot(tspan,state(:,3) - r(:,3));
grid on;

%convert quat to attitue angle
% fprintf('press any key to continue\n');
% pause(5);
newatti = zeros(N,3);

for i = 1:N
   newatti(i,:) = attiCalculator.cnb2atti(attiCalculator.quat2cnb(state(i,7:10)));
end

%plot attitute error
figure(3),subplot(1,3,1);
title('attitute angle error');
plot(tspan,newatti(:,1) - atti(:,1));
grid on;
subplot(1,3,2);
plot(tspan,newatti(:,2) - atti(:,2));
grid on;
subplot(1,3,3);
plot(tspan,newatti(:,3) - atti(:,3));
grid on;
 

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]Monocular Vision for Long-term Micro Aerial State Estimation:A
Compendium, Stephan Weiss,2013
[2]:卡尔曼滤波与组合导航原理,秦永元,P49,用到了离散系统噪声方差计算公式
[3]:Indirect Kalman Filter for 3D Attitude Estimation, Trawny, 2005 

🌈4 Matlab代码实现

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值