多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

简介: 多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)

👨‍🎓个人主页

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

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

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

💥1 概述

多旋翼无人机组合导航系统与多源信息融合算法研究

多旋翼无人机已被广泛应用于军事与民用领域。导航系统是多旋翼无人机的重要组成部分,是其实现安全与稳定飞行的基础。采用INS/GPS组合导航系统可实现高精度导航,该组合导航系统具有优势互补、导航机构冗余的特点,其实质是一个多传感器导航信息优化处理系统。无人机的主要导航参数就是依靠多传感器信息融合获得的,因此信息融合技术是组合导航系统的关键技术,目前已成为国内外学者研究的热点问题。随着多旋翼无人机向自主化和智能化发展,多旋翼无人机对其自身导航系统的性能提出了更高的要求。但是受多旋翼无人机自身成本的制约,导航系统中选用的传感器精度较低。针对这一矛盾,本文提出将无人机自带的微型惯导系统与GPS通过信息融合技术相结合,构成INS/GPS组合导航系统,由此能够提升导航系统的整体性能。本文的研究工作围绕组合导航系统的设计展开。除此之外,本文以课题组自行研制的全新结构多旋翼小型无人机为研究平台,展开对机载多传感器组合导航系统信息融合这一关键技术的研究。

一、组合导航系统的定义与组成

多旋翼无人机组合导航系统是通过整合多种传感器(如GPS、IMU、磁力计、气压计等)构建的综合导航系统。其核心是以惯性导航系统(INS)为主,结合其他传感器实现优势互补。具体组成包括:

  • IMU(惯性测量单元) :提供姿态、角速度和加速度信息,但存在累积误差。
  • GPS/GNSS:提供全局位置和速度信息,但易受信号遮挡影响。
  • 磁力计:辅助测量航向,但受电磁干扰。
  • 气压计:测量高度,但受温度和环境压力波动影响。
  • 光流传感器/视觉传感器:在无GPS环境下提供相对位置和速度信息。

二、多源信息融合算法的核心类型与原理

多源信息融合算法根据处理层次分为三类:

  1. 数据级融合:直接融合原始数据,保留信息完整但实时性差,适用于同构传感器(如IMU与加速度计)。
  2. 特征级融合:提取特征后进行融合(如姿态角、速度),平衡精度与计算效率,适用于异构传感器。
  3. 决策级融合:融合各传感器的初步决策(如位置估计),容错性强但信息损失较大,常用于复杂环境。

常用算法

  • 卡尔曼滤波(KF) :处理线性系统,通过状态方程和观测方程优化估计,广泛应用于INS/GPS融合。
  • 扩展卡尔曼滤波(EKF) :针对非线性系统(如姿态解算),通过局部线性化处理非线性问题。
  • 粒子滤波(PF) :适用于非高斯、强非线性场景,但计算复杂度高。
  • 自适应滤波:动态调整噪声参数,增强鲁棒性(如Sage-Husa自适应EKF)。
  • 深度学习:通过神经网络处理复杂映射关系,提升环境适应性。

三、典型应用场景

  1. 近地面无GPS环境:融合光流、IMU和超声波传感器,解决建筑物遮挡导致的定位漂移问题。
  2. 隧道/室内巡检:结合激光雷达、UWB和视觉传感器,实现厘米级精度的自主避障与导航。

    image.gif 编辑
  3. 高空长航时任务:整合GNSS、IMU和视觉数据,动态补偿稀薄大气和电磁干扰的影响。
  4. 农业植保与测绘:融合多光谱相机、LiDAR和RTK-GPS,生成高精度三维地图。
  5. 动态环境适应性:通过联邦滤波结构,在GPS失效时快速切换至冗余传感器(如气压计+视觉里程计)。

四、研究案例与算法实现

  1. 多级融合架构(张欣,2015):
  • 第一级:陀螺仪+加速度计+磁力计,采用改进Sage-Husa自适应EKF融合姿态信息,抑制累积误差。
  • 第二级:加速度计+GPS,将加速度作为控制量输入状态方程,提升水平位置估计精度。
  • 第三级:气压计+GPS,引入联邦滤波和卡方检验,增强高度测量的容错性。
  1. 无GPS全自主飞行(荷清智能,2022):
  • 正交双雷达+视觉SLAM融合,解决长廊效应;
  • 滑模自抗扰控制算法提升复杂环境下的抗扰能力。
  1. Matlab仿真平台:基于EKF的INS/GPS融合代码实现,支持多传感器数据同步与误差分析。

五、性能评估指标

  1. 精度指标
  • RMSE(均方根误差) :评估位置/姿态估计与真实值的偏差。

    image.gif 编辑
  • MAE(平均绝对误差) :反映算法稳定性。
  1. 实时性指标
  • 处理延迟:从数据输入到输出结果的耗时,需满足无人机控制周期(通常≤10ms)。
  • 计算资源占用率:CPU/内存使用率,影响嵌入式系统部署可行性。
  1. 鲁棒性指标
  • 故障检测率:传感器失效时系统维持精度的能力(如GPS信号丢失后的定位误差增长速率)。
  • 环境适应性:在风速突变、电磁干扰等条件下的性能衰减测试。
  1. 综合指标
  • F1值:平衡精确率与召回率,用于目标跟踪场景。
  • NDCG(归一化折损累计增益) :评估多传感器数据排序的合理性。

六、未来研究方向

  1. 智能融合算法:结合强化学习动态优化传感器权重,提升环境自适应性。
  2. 新型传感器集成:毫米波雷达、量子惯性导航等技术的融合潜力。
  3. 边缘计算优化:通过FPGA/ASIC硬件加速,降低复杂算法(如粒子滤波)的功耗。
  4. 群体协同导航:多无人机间的信息共享与分布式融合,提升集群任务效率。

image.gif 编辑

结论

多源信息融合算法通过有效整合多旋翼无人机的传感器数据,显著提升了导航系统的精度、鲁棒性和环境适应性。从基础滤波算法到深度学习模型的演进,体现了该领域的技术纵深。未来,随着新型传感器和边缘计算技术的发展,组合导航系统将向更高自主性、更低功耗的方向突破,为无人机在复杂场景中的应用提供坚实支撑。

📚2 运行结果

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑

image.gif 编辑 image.gif 编辑 image.gif 编辑

image.gif 编辑 image.gif 编辑 image.gif 编辑

image.gif 编辑

部分代码:

% load Uav true trajectory data.

addpath UavTrajectorySim;

disp(' ')

disp('Available UAV Truth Trajectory Data Files:')

dir_mat_files = dir('UavTrajectorySim\*.mat');

for nFile=1:length(dir_mat_files)

   fprintf('   %d: %s\n',nFile,dir_mat_files(nFile).name);

end

% nFileChoice = input('Choose a UAV Truth data file (e.g. 1<Enter>): ');

try

%     load(dir_mat_files(nFileChoice).name)

   load(dir_mat_files(1).name)

catch

   error('Selected UAV Truth Trajectory data file (%d) is invalid.\n',nFileChoice);

end

gvar_earth;

% 单次更新中使用的子样数

nn = 2;

% 采样时间

ts = 0.01;

nts = nn*ts;

% 初始姿态、速度、位置

att0 = [0, 0, 90]'*arcdeg;

vn0  = [0, 0, 0]';

pos0 = [34*arcdeg, 108*arcdeg, 100]'; % lattitude, longtitude, height

qbn0 = a2qua(att0);

% 姿态四元数、速度、位置

qbn = qbn0;

vn = vn0;

pos = pos0;

eth = earth(pos, vn);

% *** 添加误差 ***

% 失准角

phi = [0.1, 0.2, 1]'*arcmin;

qbn = qaddphi(qbn, phi);

% 陀螺零偏,角度随机游走

eb_ref = [0.1, 0.15, 0.2]'*dph;

eb = [0.01, 0.015, 0.02]'*dph;

web = [0.001, 0.001, 0.001]'*dpsh;

% 加计零偏,速度随机游走

db_ref = [800, 900, 1000]'*ug;

db = [80, 90, 100]'*ug;

wdb = [1, 1, 1]'*ugpsHz;

Qk = diag([web', wdb', zeros(1, 9)]')^2*nts;

rk = [[0.1, 0.1, 0.1], [5/Re, 5/Re, 5]]';

Rk = diag(rk)^2;

% 协方差矩阵,x = [phi, delta_vn, delta_p, eb, db]

P0 = diag([[0.1, 0.1, 10]*arcdeg, [1, 1, 1], [10/Re, 10/Re, 10]...

          [0.1, 0.1, 0.1]*dph, [80, 90, 100]*ug]')^2;

% 量测矩阵

Hk = [zeros(6,3), eye(6), zeros(6, 6)];

% Kalman filter initialization

kf = kfinit(Qk, Rk, P0, zeros(15), Hk);

% 与模拟轨迹时长一致

kTime = fix(t_SD/ts);  

err = zeros(kTime, 10);

xkpk = zeros(kTime, 2*kf.n + 1);

pos_ref = zeros(kTime,3);

pos_est = zeros(kTime,3);

pos_gps = zeros(kTime,3);

kk = 1;

t = 0;

for k = 2 : nn : kTime

   t = t + nts;

   

   % 获取模拟轨迹对应的imu输出: 角增量和速度增量(参考值)

   wm(1:nn,:) = imu_SD.wm(k-nn+1:k,:);

   vm(1:nn,:) = imu_SD.vm(k-nn+1:k,:);

   

   % 为IMU参考输出添加噪声

   [wm1, vm1] = imuadderr(wm, vm, eb, web, db, wdb, ts);

   

   % 惯导更新:姿态四元数、速度、位置

   [qbn, vn, pos, eth] = insupdate(qbn, vn, pos, wm1, vm1, ts);

   

   % 基于模型预测:导航误差系统模型卡尔曼滤波

   kf.Phikk_1 = eye(15) + kfft15(eth, q2mat(qbn), sum(vm1, 1)'/nts)*nts;

   kf = kfupdate(kf);

   

   % 模拟GPS量测数据

   gps = [avp_SD.vn(k,:)'; avp_SD.pos(k,:)'] + rk.*randn(6, 1);

   pos_gps(kk,:) = gps(4:6)';

   % 量测更新 5Hz

   if mod(t, 0.2) < nts

       Zk = [vn', pos']' - gps;

       kf = kfupdate(kf, Zk, 'M');

   end

   

   % Indirect Kalman filter:feedback to IMU (反馈校正法)

   qbn = qdelphi(qbn, kf.Xk(1:3));

   vn  = vn - kf.Xk(4:6);

   pos = pos - kf.Xk(7:9);

   pos_est(kk,:) = pos';

   % 反馈校正:由于反馈项的存在导致卡尔曼滤波的先验估计值始终为零. Ref: 王辰熙

   kf.Xk(1:3) = 0;

   kf.Xk(4:6) = 0;

   kf.Xk(7:9) = 0;

%     kf.Xk(10:12) = 0;

%     kf.Xk(13:15) = 0;

   

       

   % compute the error between estimation & truth data

   % Note that this 'error' is not the 'state vector' in the Kalman equ.

   % In indirect kalman filter, the 'state vector' means the error of

   % the IMU update (respect to True data.)

   qbn_ref = a2qua(avp_SD.att(k,:));

   vn_ref = avp_SD.vn(k,:)';

   pos_ref(kk,:) = avp_SD.pos(k,:);

   err(kk, :) = [qq2phi(qbn, qbn_ref)', (vn - vn_ref)', (pos - pos_ref(kk,:)')', t];

   xkpk(kk, :) = [kf.Xk', diag(kf.Pk)', t]';

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]刘洪剑,王耀南,谭建豪,李树帅,钟杭.一种旋翼无人机组合导航系统设计及应用[J].传感技术学报,2017,30(02):331-336.

🌈4 Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
21小时前
|
机器学习/深度学习 传感器 编解码
【基于STFT-CNN-SVM的故障诊断】一种融合短时傅里叶变换(STFT)、卷积神经网络(CNN)和支持向量机(SVM)的故障诊断研究(Matlab代码实现)
【基于STFT-CNN-SVM的故障诊断】一种融合短时傅里叶变换(STFT)、卷积神经网络(CNN)和支持向量机(SVM)的故障诊断研究(Matlab代码实现)
|
21小时前
|
机器学习/深度学习 算法 调度
基于非对称纳什谈判的多微网电能共享运行优化策略(Matlab代码实现)
基于非对称纳什谈判的多微网电能共享运行优化策略(Matlab代码实现)
|
21小时前
|
算法 新能源 Python
【并网光伏阵列】使用SimPowerSystems进行并网光伏阵列研究(Simulink仿真实现)
【并网光伏阵列】使用SimPowerSystems进行并网光伏阵列研究(Simulink仿真实现)
|
21小时前
|
人工智能 并行计算 算法
基于 MATLAB 的电力系统动态分析研究【IEEE9、IEEE68系节点】​
基于 MATLAB 的电力系统动态分析研究【IEEE9、IEEE68系节点】​
|
21小时前
|
机器学习/深度学习 存储 算法
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
基于模型预测算法的混合储能微电网双层能量管理系统研究(Matlab代码实现)
|
21小时前
|
机器学习/深度学习 边缘计算 算法
虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)
虚拟同步发电机(VSG)惯量阻尼自适应控制仿真模型(simulink仿真实现)
|
21小时前
|
安全 调度 Python
【电动车】基于多目标优化遗传算法NSGAII的峰谷分时电价引导下的电动汽车充电负荷优化研究(Matlab代码实现)
【电动车】基于多目标优化遗传算法NSGAII的峰谷分时电价引导下的电动汽车充电负荷优化研究(Matlab代码实现)
|
21小时前
|
机器学习/深度学习 传感器 负载均衡
基于优化的启发式集成低能耗自适应集群层次结构协议(OHILEACH)(Matlab代码实现)
基于优化的启发式集成低能耗自适应集群层次结构协议(OHILEACH)(Matlab代码实现)
|
21小时前
|
传感器 机器学习/深度学习 数据采集
【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)
【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)
|
21小时前
|
机器学习/深度学习 数据采集 编解码
【STFT-CNN-BiGRU的故障诊断】基于短时傅里叶变换(STFT)结合卷积神经网络(CNN)与双向门控循环单元(BiGRU)的故障诊断研究(Matlab代码实现)
【STFT-CNN-BiGRU的故障诊断】基于短时傅里叶变换(STFT)结合卷积神经网络(CNN)与双向门控循环单元(BiGRU)的故障诊断研究(Matlab代码实现)