【目标跟踪】基于扩展卡尔曼滤波器实现多机器人跟踪定位附matlab代码

简介: 【目标跟踪】基于扩展卡尔曼滤波器实现多机器人跟踪定位附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

系统所处环境的复杂性使得现在科技对目标跟踪精度的要求越来越高,而且单传感器状态的估计已经无法满足系统感知外部环境的需要.在此,研究了基于扩展卡尔曼滤波的多传感器目标跟踪方法.仿真表明,扩展卡尔曼滤波对于非线性系统跟踪的效果更好.

⛄ 部分代码

%   The ANEES can have outliers which could potentially distort the

%   appearance of its curves. Keep outlierThreshold 1000 for

%   simulationLength<=50. Adjust as necessary.

outlierThreshold=25;


%##########################################################################

 

%  generate random colors for the graphs

 

for i=1:length(robots)

   

    randomColor(i,:)=[rand,rand,0];  

end

 

%##########################################################################


% Ground Truths and EKF

figure;

set(gca,'fontsize',15);


for i=1:length(robots)

   

 

plot(robots(i).groundTruth(:,1),robots(i).groundTruth(:,2),'-o','color',randomColor(i,:));

hold on;


plot(robots(i).groundTruth(1,1),robots(i).groundTruth(1,2),'o','MarkerSize',12,'color',randomColor(i,:));

hold on;


text(robots(i).groundTruth(1,1),robots(i).groundTruth(1,2),['R',num2str(i),' start'],'fontsize',12,'fontweight','bold');

hold on;


plot(robots(i).mu(:,1),robots(i).mu(:,2),'--x','color',randomColor(i,:));

hold on;


end


title(['实际(solid-o)和EKF估计 (broken-x) of ',num2str(length(robots)),' Robots']);

xlabel('x (m)');

ylabel('y (m)');



%##########################################################################


% Ground Truths and encoder only

figure;

set(gca,'fontsize',15);


for i=1:length(robots)

   

plot(robots(i).groundTruth(:,1),robots(i).groundTruth(:,2),'-o','color',randomColor(i,:));

hold on;


plot(robots(i).groundTruth(1,1),robots(i).groundTruth(1,2),'o','MarkerSize',12,'color',randomColor(i,:));

hold on;


text(robots(i).groundTruth(1,1),robots(i).groundTruth(1,2),['R',num2str(i),' start'],'fontsize',12,'fontweight','bold');

hold on;


plot(robots(i).encoderPose(:,1),robots(i).encoderPose(:,2),'--x','color',randomColor(i,:));

hold on;


end


title(['实际(solid-o)和编码器估计 (broken-x) of ',num2str(length(robots)),' Robots']);

xlabel('x (m)');

ylabel('y (m)');


%##########################################################################


% Average Normalized Estimation Error Squared

figure;

set(gca,'fontsize',15);


%   draw the upper and lower anees bounds

[lower_bound,upper_bound] = anees_bounds(numRuns);



for i=1:length(robots)

   

%   remove outliers in anees

indices = robots(i).anees>outlierThreshold;

robots(i).anees(indices) = [];


%   make a copy of robots(i).distanceTraveled.

%   resize the copy to match the dimensions of the robots(i).anees vector


distanceTraveledANEES=robots(i).distanceTraveled;

distanceTraveledANEES(indices)=[];

   

plot(distanceTraveledANEES,upper_bound.*ones(1,length(distanceTraveledANEES)),'--k');

hold on;


plot(distanceTraveledANEES,robots(i).anees,'-x','color',randomColor(i,:));

hold on;


plot(distanceTraveledANEES,lower_bound.*ones(1,length(distanceTraveledANEES)),'--k');

hold on;


text(distanceTraveledANEES(end),robots(i).anees(end),['R',num2str(i)],'fontsize',12,'fontweight','bold');

hold on;



end


title(['平均归一化估计误差 ',num2str(length(robots)),' Robots']);

xlabel('机器人移动距离 (m)');

ylabel('阿尼斯');


%##########################################################################


% absolute errors in x coordinates

figure;

set(gca,'fontsize',15);


for i=1:length(robots)

   

 

plot(robots(i).distanceTraveled,robots(i).actualError(:,1),'-x','color',randomColor(i,:));

hold on;


text(robots(i).distanceTraveled(end),robots(i).actualError(end,1),['R',num2str(i)],'fontsize',12,'fontweight','bold');

hold on;


end


title(['X轴的实际误差 ',num2str(length(robots)),' Robots']);

xlabel('机器人移动距离');

ylabel('误差(m)');


%##########################################################################


% absolute errors in y coordinates

figure;

set(gca,'fontsize',15);


for i=1:length(robots)

   

 

plot(robots(i).distanceTraveled,robots(i).actualError(:,2),'-x','color',randomColor(i,:));

hold on;


text(robots(i).distanceTraveled(end),robots(i).actualError(end,2),['R',num2str(i)],'fontsize',12,'fontweight','bold');

hold on;


end


title(['Y轴的实际误差',num2str(length(robots)),' Robots']);

xlabel('机器人移动距离(m)');

ylabel('误差 (m)');


%##########################################################################


end

⛄ 运行结果

⛄ 参考文献

[1]周凯宁, 周希元. 利用扩展卡尔曼滤波器进行机动目标跟踪[J]. 无线电工程动态, 1991(4):4.

[2]伍明, 孙继银. 基于扩展式卡尔曼滤波的移动机器人未知环境下动态目标跟踪[J]. 机器人, 2010, 32(3):10.

[3]潘丽娜. 基于扩展卡尔曼滤波的多传感器目标跟踪[J]. 舰船电子工程, 2010(12):71-72.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料



相关文章
|
1天前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
1天前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1天前
|
算法 调度
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
面向配电网韧性提升的移动储能预布局与动态调度策略(matlab代码)
|
1天前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1天前
|
传感器 人工智能 监控
智能耕耘机器人
智能耕耘机器人
47 3
|
7月前
|
人工智能 自然语言处理 机器人
智能电话机器人核心技术:自然语言处理
什么是自然语言处理? 自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理是一门融语言学、计算机科学、数学于一体的科学.因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系,但又有重要的区别. 自然语言处理并不是一般地研究自然语言,而在于研制能有效地实现自然语言通信的计算机系统,特别是其中的软件系统.因而它是计算机科学的一部分. 自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域.
|
1天前
|
传感器 人工智能 自然语言处理
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人
|
1天前
|
传感器 机器学习/深度学习 算法
植保机器人具备智能感知与决策能力
植保机器人具备智能感知与决策能力
22 2
|
1天前
|
传感器 搜索推荐 机器人
具身智能赋能人形机器人产业将蓬勃发展
【1月更文挑战第12天】具身智能赋能人形机器人产业将蓬勃发展
50 3
具身智能赋能人形机器人产业将蓬勃发展

热门文章

最新文章