基于卡尔曼滤波器、扩展卡尔曼滤波的惯性导航系统/全球导航卫星系统导航、目标跟踪、地形参考导航研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
摘要
本文提供了关于卡尔曼滤波器和扩展卡尔曼滤波器的类似教程的描述。本章旨在为那些需要向他人教授卡尔曼滤波器的人提供帮助,或者对估计理论没有很强背景的人。在给出状态估计问题定义之后,将介绍滤波算法,并提供支持性示例,以帮助读者轻松理解卡尔曼滤波器的工作原理。给出了在惯性导航系统/全球导航卫星系统(INS/GNSS)导航、目标跟踪和地形参考导航(TRN)方面的实现。在每个示例中,我们讨论如何选择、实现、调整和修改算法以适应实际应用。
关键词:卡尔曼滤波器、扩展卡尔曼滤波器、惯性导航系统/全球导航卫星系统导航、目标跟踪、地形参考导航。
卡尔曼滤波是一种算法,根据随时间观测到的测量值,提供一些未知变量的估计值。卡尔曼滤波在各种应用中展示了其实用性。卡尔曼滤波器具有相对简单的形式,并且需要较少的计算能力。然而,对于不熟悉估计理论的人来说,理解和实现卡尔曼滤波器仍然不容易。虽然存在一些优秀的文献,介绍了卡尔曼滤波器背后的推导和理论,但本章重点关注更实用的角度。
接下来的两章将分别介绍卡尔曼滤波器和扩展卡尔曼滤波器的算法,包括它们的应用。在具有加性高斯噪声的线性模型中,卡尔曼滤波器提供最优估计。全球导航卫星系统(GNSS)导航将作为卡尔曼滤波器的实现示例。扩展卡尔曼滤波器用于非线性问题,如方位角目标跟踪和地形参考导航(TRN)。如何为这些应用实现滤波算法将被详细介绍。
以下是一份关于基于卡尔曼滤波器、扩展卡尔曼滤波的惯性导航系统/全球导航卫星系统导航、目标跟踪、地形参考导航的研究文档概要:
标题:基于卡尔曼滤波技术的导航与跟踪系统研究
一、引言
随着导航技术和信息处理技术的快速发展,卡尔曼滤波技术在导航和跟踪领域得到了广泛应用。本文旨在探讨卡尔曼滤波器和扩展卡尔曼滤波器在惯性导航系统/全球导航卫星系统导航、目标跟踪以及地形参考导航中的应用,并对其性能进行分析。
二、卡尔曼滤波器原理
卡尔曼滤波器是一种基于最小方差的递归滤波器,通过建立状态方程和观测方程来描述系统,并利用先验信息递归地计算最优估计值。状态方程描述系统内部状态的变化,观测方程描述系统输出观测信号与内部状态之间的关系。卡尔曼滤波器具有算法简单、运算效率高、实时性强等优点,特别适合于动态处理过程。
三、扩展卡尔曼滤波器原理
扩展卡尔曼滤波器(EKF)是用于非线性问题的卡尔曼滤波器变种。它将非线性模型线性化处理后再进行滤波,从而实现对非线性系统的状态估计。EKF在处理非线性系统时具有较好的适应性和鲁棒性。
四、应用分析
-
惯性导航系统/全球导航卫星系统导航
- 惯性导航系统通过陀螺和加速度计等设备测量载体的角速率和角加速度信息,经积分运算得到载体的速度和位置信息。
- 全球导航卫星系统基于运行在指定轨道的导航卫星进行定位。KF算法可用于对信号进行滤波消除部分误差,同时解算出目标的位置。
- 结合卡尔曼滤波器,可以提高导航系统的精度和稳定性。
-
目标跟踪
- 卡尔曼滤波器通过对目标的位置、速度和加速度进行最优估计,实现运动目标的跟踪。
- 在目标跟踪中,首先需要建立目标的运动模型,如匀速运动模型和匀加速运动模型等。
- 通过卡尔曼滤波器,可以实现对运动目标的准确预测和控制,从而提高跟踪的准确性和实时性。
-
地形参考导航
- 地形参考导航是利用地形特征进行导航的一种方法。
- 扩展卡尔曼滤波器可用于处理地形特征的非线性关系,从而实现对地形参考导航的精确估计。
- 通过结合地形信息和卡尔曼滤波器,可以提高导航系统的鲁棒性和适应性。
五、实验结果与分析
通过实验验证,卡尔曼滤波器和扩展卡尔曼滤波器在惯性导航系统/全球导航卫星系统导航、目标跟踪以及地形参考导航中均表现出良好的性能。实验结果表明,卡尔曼滤波器能够显著提高导航和跟踪的精度和稳定性,同时具有较好的实时性和鲁棒性。
六、结论与展望
本文探讨了卡尔曼滤波器和扩展卡尔曼滤波器在导航和跟踪领域的应用,并对其性能进行了分析。实验结果表明,卡尔曼滤波技术具有显著的优势和广泛的应用前景。未来,可以进一步优化算法,提高计算效率,拓展应用场景,以满足更多领域的需求。
📚2 运行结果
2.1 惯性导航系统/全球导航卫星系统导航



2.2 目标跟踪



2.3 地形参考导航


部分代码:
%% settings
N = 20; % number of time steps
dt = 1; % time between time steps
M = 100; % number of Monte-Carlo runs
sig_mea_true = [0.02; 0.02; 1.0]; % true value of standard deviation of measurement noise
sig_pro = [0.5; 0.5; 0.5]; % user input of standard deviation of process noise
sig_mea = [0.02; 0.02; 1.0]; % user input of standard deviation of measurement noise
sig_init = [1; 1; 0; 0; 0; 0]; % standard deviation of initial guess
Q = [zeros(3), zeros(3); zeros(3), diag(sig_pro.^2)]; % process noise covariance matrix
R = diag(sig_mea.^2); % measurement noise covariance matrix
F = [eye(3), eye(3)*dt; zeros(3), eye(3)]; % state transition matrix
B = eye(6); % control-input matrix
u = zeros(6,1); % control vector
H = zeros(3, 6); % measurement matrix - to be determined
%% true trajectory
% sensor trajectory
p_sensor = zeros(3,N+1);
for k = 1:1:N+1
p_sensor(1,k) = 20 + 20*cos(2*pi/30 * (k-1));
p_sensor(2,k) = 20 + 20*sin(2*pi/30 * (k-1));
p_sensor(3,k) = 50;
end
% true target trajectory
x_true = zeros(6,N+1);
x_true(:,1) = [10; -10; 0; -1; -2; 0]; % initial true state
for k = 2:1:N+1
x_true(:,k) = F*x_true(:,k-1) + B*u;
end
%% extended Kalman filter simulation
res_x_est = zeros(6,N+1,M); % Monte-Carlo estimates
res_x_err = zeros(6,N+1,M); % Monte-Carlo estimate errors
P_diag = zeros(6,N+1); % diagonal term of error covariance matrix
% filtering
for m = 1:1:M
% initial guess
x_est(:,1) = x_true(:,1) + normrnd(0, sig_init);
P = [eye(3)*sig_init(1)^2, zeros(3); zeros(3), eye(3)*sig_init(4)^2];
P_diag(:,1) = diag(P);
for k = 2:1:N+1
%%% Prediction
% predicted state estimate
x_est(:,k) = F*x_est(:,k-1) + B*u;
% predicted error covariance
P = F*P*F' + Q;
%%% Update
% obtain measurement
p = x_true(1:3,k) - p_sensor(:,k); % true relative position
z_true = [atan2(p(1), p(2));
atan2(p(3), sqrt(p(1)^2 + p(2)^2));
norm(p)]; % true measurement
z = z_true + normrnd(0, sig_mea_true); % erroneous measurement
% predicted meausrement
pp = x_est(1:3,k) - p_sensor(:,k); % predicted relative position
z_p = [atan2(pp(1), pp(2));
atan2(pp(3), sqrt(pp(1)^2 + pp(2)^2));
norm(pp)]; % predicted measurement
% measurement residual
y = z - z_p;
% measurement matrix
H = [pp(2)/(pp(1)^2+pp(2)^2), -pp(1)/(pp(1)^2+pp(2)^2), 0, zeros(1,3);
-pp(1)*pp(3)/(pp'*pp)/norm(pp(1:2)), -pp(2)*pp(3)/(pp'*pp)/norm(pp(1:2)), 1/norm(pp(1:2)), zeros(1,3);
pp(1)/norm(pp), pp(2)/norm(pp), pp(3)/norm(pp), zeros(1,3)];
% Kalman gain
K = P*H'/(R+H*P*H');
% updated state estimate
x_est(:,k) = x_est(:,k) + K*y;
% updated error covariance
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]徐元,陈熙源.基于Kalman滤波器的INS/WSN紧组合导航系统模型[J].东南大学学报(英文版), 2011, 27(004):384-387.DOI:10.3969/j.issn.1003-7985.2011.04.008.
[2]徐金华,许江宁,朱涛,等.降阶扩展卡尔曼滤波在INS/GPS导航系统中的应用[J].兵工学报, 2006.DOI:CNKI:SUN:BIGO.0.2006-04-018.
[3]袁信,刘建业.分布式卡尔曼滤波器在GPS/INS组合导航系统中的应用研究[J].南京航空航天大学学报, 1989.
🌈4 Matlab代码、数据
更多推荐


所有评论(0)