采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据


💥1 概述

采用GPS、里程计和电子罗盘作为定位传感器,结合EKF作为多传感器的融合算法,最终输出目标的滤波位置。在本文中,我们利用iPhone手机上的GPS传感器获取载体的经纬度信息,借助电子罗盘获取航向角数据,利用加速度计积分来计算位移(用加速度计代替里程计功能)。通过EKF算法将这些不同传感器的数据进行融合,得到最终的位置信息。这种方法结合了不同传感器的优势,提高了定位的准确性和稳定性,为实时定位和导航提供了可靠的技术支持。

📚2 运行结果

部分代码:

d=0.1;%标准差
Theta=CreateGauss(0,d,1,sensor_data);%GPS航迹和DR航迹的夹角
ZOUT=zeros(4,outdoor_sensor_data);
ZIN=zeros(4,indoor_sensor_data);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读取传感器数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fgps=fopen('sensor_data_041518.txt','r');%%%打开文本

for n=1:sensor_data
    gpsline=fgetl(fgps);%%%读取文本指针对应的行
    if ~ischar(gpsline) break;%%%判断是否结束
    end;
    %%%%读取室内数据
   time=sscanf(gpsline,'[Info] 2016-04-15%s(ViewController.m:%d)-[ViewController outputAccelertion:]:lat:%f;lon:%f;heading:%f;distance:%f;beacon_lat:%f;beacon_lon:%f');
   data=sscanf(gpsline,'[Info] 2016-04-15 %*s (ViewController.m:%*d)-[ViewController outputAccelertion:]:lat:%f;lon:%f;heading:%f;distance:%f;beacon_lat:%f;beacon_lon:%f');
   if(isempty(data))
       break;
   end
        result=lonLat2Mercator(data(2,1),data(1,1));
        gx(n)=result.X;%GPS经过坐标变换后的东向坐标,换算成米数
        gy(n)=result.Y;%GPS经过坐标变换后的北向坐标,换算成米数
        Phi(n)=(data(3,1)+90)*pi/180;%航向角
        dd(n)=data(4,1);%某一周期的位移
        ZIN(:,n)=[gx(n),gy(n),Phi(n),dd(n)];
end
fclose(fgps);%%%%%关闭文件指针

% 参数设置
N = 100;   %粒子总数
Q = 5;      %过程噪声
R = 5;      %测量噪声
X = zeros(2, sensor_data);    %存储系统状态
Z = zeros(2, sensor_data);    %存储系统的观测状态
P = zeros(2, N);    %建立粒子群
PCenter = zeros(2, sensor_data);  %所有粒子的中心位置
w = zeros(N, 1);         %每个粒子的权重
err = zeros(1,sensor_data);     %误差
X(:, 1) = [ZIN(1,1); ZIN(2,1)];     %初始系统状态
Z(:, 1) = [ZIN(1,1); ZIN(2,1)] ;    %初始系统的观测状态

cordinatex=round(ZIN(1,5));
cordinatey=round(ZIN(2,5));

%初始化粒子群
for i = 1 : N
    P(:, i) = [randi([cordinatex-100,cordinatex+200],1);randi([cordinatey-200,cordinatey+100],1)];
    dist = norm(P(:, i)-Z(:, 1));     %与测量位置相差的距离
    w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 / R);   %求权重
end
PCenter(:, 1) = sum(P, 2) / N;      %所有粒子的几何中心位置

🎉3 参考文献

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

[1]冯刘中.基于多传感器信息融合的移动机器人导航定位技术研究[D].西南交通大学[2024-03-02].DOI:10.7666/d.y1955647.

[2]吴显.基于多传感器信息融合的移动机器人定位方法研究[D].北京交通大学,2016.DOI:CNKI:CDMD:2.1016.059000.

[13]孙鹏飞,刘丽兰,高增桂,等.基于EKF的服务机器人目标跟踪定位研究[J].计量与测试技术, 2019, 46(1):5.DOI:CNKI:SUN:JLYS.0.2019-01-002.

🌈4 Matlab代码、数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值