目录
最终效果:
------------------------全文4163字34图一步一步完成大约耗时1.5h------------------------
所需软件以及环境:
Matlab Mobile手机版(用于采集GPS数据)
Matlab R2022a电脑版(用于可视化GPS数据)
代码与文档已开源在我的Gitee仓库:智能车辆定位与导航技术: 《智能车辆定位与导航技术》课程学习仓库 (gitee.com)
一、【Matlab Mobile准备】
首先在手机端下载Matlab Mobile软件,这里可能需要使用谷歌商店,链接:
https://play.google.com/store/apps/details?id=com.mathworks.matlabmobile
需要【科学上网】之后使用Matlab Mobile软件也需要哦~
下载完成后,可以在手机桌面看到:
点击Matlab Mobile,打开应用
选择登录
初次使用需要注册,输入电子邮箱,QQ邮箱即可,然后选择所在地,输入姓名等信息,确定注册。
然后会有一封验证电子邮件发在你的邮箱,去邮箱点击验证,随后回到Matlab Mobile(这里需要Matlab许可证,申请30天使用即可)~
回到Matlab Mobile主页,可以点击右上角的“+”号,新建一个文件夹,后面可以写m程序在里面。
点击左边这个选择栏
打开传感器,下滑到最后,看到位置选项,这就是我们需要的GPS功能啦,将其打开,并且给Matlab Mobile软件权限允许获取信息哈,还要记得打开手机的GPS喔。
将“位置”选项打开
这样我们就可以使用手机的GPS获取数据咯~~~
然后点击“流式传输至”,选择我们的传感器数据记录位置,我们选择“本地记录”
这里选择记录到本地
然后点击更多
把在后台获取数据选上~然后我们的Matlab Mobile准备工作就做好了,接下来需要拿着手机,世界这么大,我想去逛逛,一边行走一边收集GPS数据。
二、【GPS数据制作】
GPS数据收集启动!
这里我是骑小电驴绕仙桃两圈(内圈和外圈),一圈结束记得停止GPS收集喔~
将数据保存到MATLAB Drive/MobileSensorData文件夹下
可以看到我的两个mat日志文件,里面就是GPS数据:
点开Positon可以看到数据:
包括:时间、维度、经度、海拔、速度、航向、位置精度
---------------------------------------------------------------------------------------
至此,使用Matlab Mobile制作数据集成功,撒花~
补充:可以使用脚本采集数据,比较麻烦,不推荐,下面是GPS数据采集脚本:
clc,clear,close all;
m = mobiledev;
m.Logging = 1;
m.PositionSensorEnabled = 1;
% 实现长时间暂停的代码片段
total_pause_time = 600; % 目标暂停时间(秒)
step_pause_time = 1; % 每次暂停的时间
num_steps = total_pause_time / step_pause_time; % 循环次数
for i = 1:num_steps
pause(step_pause_time); % 暂停指定时间
end
m.Logging = 0;
[lat, lon, speed, course, alt, horizacc] = poslog(m)
[log, timestamp] = accellog(m)
将此脚本写在Matlab Mobile中,运行即可自动开启GPS数据采集,结束保存mat日志
三、【GPS数据可视化】
接下来通过笔记本处理我们的GPS数据集,在网站Matlab Drive可以找到我们手机移动端制作的GPS数据:
Sign in to MATLAB Drive – MATLAB & Simulink – MathWorks
点击下载GPS数据集
保存到笔记本的文件夹下,我是在Akaxi_GPS文件夹里面
然后,在笔记本启动Matlab R2022a!(推荐)
或者使用Matlab online网页版本(和手机端是连接的,不推荐)MATLAB Login | MATLAB & Simulink
(Matlab online)
打开Matlab R2022a
可以看到我们内圈的GPS数据啦
接着我们编写matlab代码,实现GPS数据可视化啦!
下面是可视化代码:
clc;clear % 清空变量
load Wai_XianTao_GPS.mat % 加载仙桃道路内外圈GPS数据
lat = cell2mat(table2cell(Position(:,'latitude'))); % 精度数据
lon = cell2mat(table2cell(Position(:,'longitude'))); % 维度数据
speed = cell2mat(table2cell(Position(:,'speed'))); % 速度数据
% 对速度值分bin以便使用离散数量的颜色来表示观测到的速度
nBins = 10;
binSpacing = (max(speed) - min(speed))/nBins;
binRanges = min(speed):binSpacing:max(speed)-binSpacing;
binRanges(end+1) = inf;
% 速度
[~, speedBins] = histc(speed, binRanges);
% 经纬度、速度转置
lat = lat';
lon = lon';
speedBins = speedBins';
% 创建地理形状向量,该向量将线段存储为要素
s = geoshape();
% 为每个速度 bin 创建一个不连续线段。将为每个线段分配一种颜色
% 处理每一个小段的速度函数
for k = 1:nBins
latValid = nan(1, length(lat));
latValid(speedBins==k) = lat(speedBins==k);
lonValid = nan(1, length(lon));
lonValid(speedBins==k) = lon(speedBins==k);
transitions = [diff(speedBins) 0];
insertionInd = find(speedBins==k & transitions~=0) + 1;
latSeg = zeros(1, length(latValid) + length(insertionInd));
latSeg(insertionInd + (0:length(insertionInd)-1)) = lat(insertionInd);
latSeg(~latSeg) = latValid;
lonSeg = zeros(1, length(lonValid) + length(insertionInd));
lonSeg(insertionInd + (0:length(insertionInd)-1)) = lon(insertionInd);
lonSeg(~lonSeg) = lonValid;
% 将纬度/纬度线段添加到地理形状矢量中
s(k) = geoshape(latSeg, lonSeg);
end
% 使用 webmap 在浏览器中打开一个 Web 地图
wm = webmap('World Imagery'); % 世界地图
% 标记 位置
mwLat = 29.7430; % 内外圈GPS维度
mwLon = 106.5516; % 内外圈GPS经度
name = 'Nei_my_GPS'; % 取名叫仙桃内圈GPS文件
iconDir = fullfile(matlabroot,'toolbox','matlab','icons');
iconFilename = fullfile(iconDir, 'matlabicon.gif'); % 水印图标
wmmarker(mwLat, mwLon, 'FeatureName', name, 'Icon', iconFilename);
% 使用 autumn 颜色图生成与速度 bin 对应的颜色列表。这将为每个 bin 创建一个具有 RGB 值的 [nBins x 3] 矩阵
colors = autumn(nBins);
wmline(s, 'Color', colors, 'Width', 5);
% 放大地图并聚焦于路线
wmzoom(17);
如果换成不同的GPS数据集,这里需要改的地方,有三处:
1.你的GPS数据集mat文件名称
load Wai_XianTao_GPS.mat % 加载仙桃道路内外圈GPS数据
2.你的GPS数据集维度起点
mwLat = 29.7430; % 内外圈GPS维度
3.你的GPS数据集经度起点
mwLon = 106.5516; % 内外圈GPS经度
四、【可视化测试】
首先我们选用内圈的GPS数据,运行程序:
可以看到内圈的GPS可视化轨迹和骑小电驴的轨迹基本一致,成功!且颜色越深代表速度越慢。
然后更改三处位置,可视化外圈看看:
可以看到外圈GPS可视化轨迹效果较好~
使用Matlab Mobile制作并可视化GPS轨迹完结撒花~~~~~
更多细节
关于GPS数据集
这里获取GPS数据集有三种方式,一种是通过手机的GPS获取数据,利用Matlab Mobile软件获取GPS数据;一种是通过nmeagen网站制作NMEA标准GPS文件;一种是直接利用开源的GPS数据集。
就获取难度来说:Matlab Mobile >nmeagen> 开源数据集
这里我们首先使用Matlab Mobile软件制作GPS数据集,再用nmeagen网站制作NMEA标准GPS文件,最后再直接利用开源GPS数据集。
【NMEA标准GPS数据生成器】NMEA Generator
----------------------------------------------------------------------------------------------------
相信读到这里的朋友,一定是坚持且优秀的
给博主一个免费的赞👍吧
扫描二维码进博主交流群,问题交流 | 吹吹水 | 一起变得更加优秀
2024.5.6
渝北仙桃数据谷