一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【目标定位】基于matlab扩展卡尔曼滤波目标定位仿真【含Matlab源码 128期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、EKF算法简介

在SLAM问题解决方法中,EKF算法是比较常用的经典算法。机器人的自定位过程是一个非线性化的过程,EKF是为了解决Kalman滤波器不能应用于非线性系统而产生的,该滤波算法的主要过程是预测和更新。在预测和更新过程中,EKF算法对原有的系统方程和观测方程进行线性化并得到一个高估计的结果。如果系统中的非线性很弱,EKF也能给出很好的估计结果。

预测时,使用系统模型如下:

式中,z(k+1)表示的是第k+1步中获得的观测量,W (k+1)表示Kalman增益,其中还包括了前向估计在实际中的权重。

实现EKF-SLAM需要以下几方面内容:系统动态方程以及相应的参量,使用的传感器类型和观测方程,根据这些可以得到EKF的相应形式。二维平面中的EKF-SLAM需要知道机器人在X、Y方向的值,还需要知道二维平面下机器人头部朝向与X轴正方向的夹角。

三、部分源代码

clc;
clear;
N1=100;
thita=1*pi/4;
speed=20;
T=2.5;
point_Q2=[400 0;0 1*pi^2/180^2];
r=1000;
r_thita=1/3*pi;
%Q1=[0.36 0;0 0];     %添加机动情形
%Q1=[0 0;0 0];        %不添加机动
l=[1/2*T^2 0;T 0;0 1/2*T^2;0 T];
N=200;
object_init_state=[r*cos(r_thita) speed*cos(thita) r*sin(r_thita) speed*sin(thita)];
for i=1:N1[real_data,view_data,real_v,point_view_data,Q1]=new_data_get(object_init_state,N,T,l);                   %前条件:目标的初始状态,目标跟踪次数已知%后条件:得到目标的观测矩阵,目标的真实值矩阵,真实速度[filter_data,k1,k2]=data_kalman_filter(view_data,point_view_data,N,object_init_state,Q1,point_Q2,T,l);%前条件:目标的观测矩阵已知%后条件:得到目标的滤波矩阵和目标的各次增益filt_k1(i,:,:)=k1;filt_k2(i,:,:)=k2;[ME_temp_view_err_x(i,1:N),ME_temp_filter_err_x(i,1:N),ME_temp_view_err_y(i,1:N),ME_temp_filter_err_y(i,1:N)]=temp_err_save(real_data,...filter_data,view_data);%前条件:目标的真实值矩阵,目标的滤波矩阵,目标的观测矩阵已知%后条件:本次目标的观测误差,滤波误差得到存储
end
[final_filt_k1,final_filt_k2]=filt_count(filt_k1,filt_k2,N1);
%前条件:得到增益的三维矩阵
%后条件:求出平均增益
[ME_final_view_err_x,ME_final_filter_err_x,ME_final_view_err_y,ME_final_filter_err_y]=ME_err_count(ME_temp_view_err_x,ME_temp_filter_err_x,...
ME_temp_view_err_y,ME_temp_filter_err_y);
%前条件:目标的观测误差矩阵,目标的滤波误差矩阵已知
%后条件:得到目标的平均观测误差矩阵,平均滤波误差矩阵
[RMSE_final_view_err_x,RMSE_final_filter_err_x,RMSE_final_view_err_y,RMSE_final_filter_err_y]=RMSE_err_count(ME_temp_view_err_x,...
ME_temp_filter_err_x,ME_temp_view_err_y,ME_temp_filter_err_y,ME_final_view_err_x,ME_final_filter_err_x,ME_final_view_err_y,ME_final_filter_err_y);
%后条件:得到目标的均方观测误差矩阵,均方滤波误差矩阵
%show(ME_final_view_err_x,ME_final_filter_err_x,ME_final_view_err_y,ME_final_filter_err_y,final_filt_k1,final_filt_k2,N,real_data,view_data,filter_data,real_v);
show(ME_final_view_err_x,ME_final_filter_err_x,ME_final_view_err_y,ME_final_filter_err_y,RMSE_final_view_err_x,RMSE_final_filter_err_x,...
RMSE_final_view_err_y,RMSE_final_filter_err_y,final_filt_k1,final_filt_k2,N,real_data,view_data,filter_data,real_v);
%前条件:目标的平均观测误差矩阵,平均滤波误差矩阵已知
%后条件:作出目标的平均观测误差矩阵,平均滤波误差矩阵的仿真图
function [filter_data,k1,k2]=data_kalman_filter(view_data,point_view_data,N,object_init_state,Q1,point_Q2,T,l)
%定义初试滤波
filter_data0=object_init_state';
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ch=[1 T 0 0;0 1 0 0;0 0 1 T;0 0 0 1];               %定义状态转移矩阵%h=[1 0 0 0;0 0 1 0];                               %观测转移矩阵
%观测误差是随时间变化的所以需计算观测误差
%cos_2_v_thita=(object_init_state(1,1)^2)/(object_init_state(1,1)^2+object_init_state(1,3)^2);
%sin_2_v_thita=1-cos_2_v_thita;
%R_2=(object_init_state(1,1)^2+object_init_state(1,3)^2);
%Q2=zeros(2,2);
%Q2(1,1)=point_Q2(1,1)*cos_2_v_thita+R_2*sin_2_v_thita*point_Q2(2,2);
%Q2(1,2)=sqrt(cos_2_v_thita)*sqrt(sin_2_v_thita)*(point_Q2(1,1)-R_2*point_Q2(2,2));
%Q2(1,2)=0;
%Q2(2,1)=Q2(1,2);
%Q2(2,2)=point_Q2(1,1)*sin_2_v_thita+R_2*cos_2_v_thita*point_Q2(2,2);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pre_data(:,1)=ch*filter_data0;
x1=pre_data(1,1);
x2=pre_data(3,1);
x3=x1^2+x2^2;
h=[180*x2/(x3*pi) 0 180*x1/(x3*pi) 0;x1/sqrt(x3) 0 x2/sqrt(x3) 0];
p_init=100*eye(4);                                                   %初始协方差定义
p_old=p_init;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%根据初始预测计算滤波值
%通过输入观测值进行卡尔曼滤波
for i=1:N[filter_data(:,i),pre_data(:,i+1),p_new,k11,k21,h]=extend_kalman_filter(pre_data(:,i),point_view_data(:,i),p_old,ch,Q1,h,l,point_Q2,T);p_old=p_new;k1(:,i)=k11;k2(:,i)=k21;
end

四、运行结果






五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.
[4]林志东.基于扩展卡尔曼滤波算法的SLAM问题分析[J].城市建筑. 2020,17(11)

【目标定位】基于matlab扩展卡尔曼滤波目标定位仿真【含Matlab源码 128期】相关推荐

  1. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  4. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  5. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  6. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  7. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  8. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  9. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  10. 【Matlab人脸识别】KL变换人脸识别【含GUI源码 859期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]KL变换人脸识别[含GUI源码 859期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 图说:Windows 8使用搜索,快速开启应用
  2. 数据结构与算法:02 C#语言基本语法结构
  3. ps专业色彩调色扩展面板 Moody Photoshop Panel 1.1.2汉化版
  4. heatmap(热图)
  5. 学习进度条——第九周
  6. 不爱跳槽、月薪集中在 8K-17k、五成欲晋升为技术Leader|揭晓中国开发者真实现状
  7. Silverlight Blend动画设计系列二:旋转动画(RotateTransform)
  8. 解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题 3法
  9. JS中的变量和输入输出
  10. 13我无所不能——无线网络里面的秘密
  11. 2020 泰迪杯 C 题
  12. Unite Beijing 2018 | 精彩游戏案例议题曝光
  13. 黑白双色背景图java_黄色背景黑白双色简洁ppt图表
  14. 今日头条推荐算法原理首公开,头条首席算法架构师带来详细解读
  15. Android 隐藏App的图标
  16. 解决: ORA-02199: missing DATAFILE/TEMPFILE clause [Oracle OMF 功能详解]
  17. 小米node2红外_小米监控open-falcon-0.2安装部署详细配置
  18. 视频系统部署 kvs
  19. java窗体背景图片_java 窗体设置背景图片问题 (附上登陆界面代码,我想加个背景图...
  20. SQL Server数据库mdf文件中了勒索病毒.FREEMAN。扩展名变为FREEMAN

热门文章

  1. css元素居中的几种方式
  2. Hbuilder Webview调试+逍遥安卓模拟器
  3. (五)Thymeleaf标准表达式之——[7-8]条件表达式 默认表达式
  4. Day2:认识html
  5. OpenCV_轮廓例子
  6. Python 正则式学习笔记 [转]
  7. 人生的一切问题,归根结底就是这三点:无知!恐惧!延迟!
  8. Unity HTC Vive手柄汉诺塔操作
  9. 字符编码ASCII ,Unicode ,UTF-8
  10. 做情绪的主人,痛苦是人生的催化剂