打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
基于MATLAB&SIMULINK开发自动驾驶系统第六讲之导航与地图

6.1 OpenStreetMap Basemap上显示数据

本例展示了如何在OpenStreetMap®基图上显示行驶路线和车辆位置。

将OpenStreetMap基图添加到geoplayer对象可用的基图列表中。添加基图后,在以后的会话中不需要再添加。

name = 'openstreetmap';

url = 'https://a.tile.openstreetmap.org/${z}/${x}/${y}.png';

copyright = char(uint8(169));

attribution =copyright + "OpenStreetMap contributors";

addCustomBasemap(name,url,'Attribution',attribution)

加载经纬度坐标序列:

data = load('geoRoute.mat');

创建一个地图显示。将其集中在行驶路线的第一个位置上,并将缩放级别设置为12:

zoomLevel = 12;

player =geoplayer(data.latitude(1),data.longitude(1),zoomLevel);

显示全部路线。

plotRoute(player,data.latitude,data.longitude);

默认情况下,地理播放使用Esri®提供的世界街道地图基图('街道')。更新地图显示以使用新增的OpenStreetMap基图。

player.Basemap = 'openstreetmap';

再次显示路线。

plotRoute(player,data.latitude,data.longitude);

按顺序显示车辆的位置。

for i =1:length(data.latitude) 

    plotPosition(player,data.latitude(i),data.longitude(i))

end

6.2 阅读和可视化这里的高清实时地图数据

HERE高清实时地图(HERE HDLM)由HERE技术公司开发,是一个基于云计算的网络服务,使能够访问高度精确、持续更新的地图数据。这些数据由瓷砖地图层组成,包含道路和车道的拓扑结构和几何形状、道路级属性和车道级属性,以及道路沿线的障碍物、标志和杆子等信息。这些数据适用于各种高级驾驶辅助系统(ADAS)的应用,包括本地化、场景生成、导航和路径规划。 

使用自动驾驶工具箱的功能和对象,可以配置和创建HEREHDLM阅读器,从HERE HDLM网络服务中读取地图数据,然后将某些图层的数据可视化。

6.2.1 输入凭证

在使用HEREHDLM网络服务之前,必须输入与HERE Technologies签订的协议中获得的凭证。要设置的凭证,请使用hereHDLMCredentials功能。

hereHDLMCredentialssetup

 

输入有效的访问密钥 ID 和访问密钥秘密,然后单击 "确定"。该凭证将保存在的机器上的 MATLAB 会话的其余部分。要为计算机上的未来MATLAB 会话保存的凭证,请在对话框中选择在MATLAB 会话之间保存我的凭证。这些凭证将一直保存,直到删除它们。

6.2.2 配置阅读器搜索特定目录

在HERE HDLM网络服务中,地图数据存储在一组称为目录的数据库中。每个目录大致对应一个不同的地理区域,如北美或西欧。通过创建 hereHDLMConfiguration 对象,可以配置 HERE HDLM 阅读器,使其仅从特定目录中搜索地图数据。还可以选择性地指定要搜索的目录的版本。这些配置可以加快读卡器的性能,因为读卡器不会为地图数据搜索不必要的目录。

例如,为大致对应于北美地区的目录创建一个配置。

config= hereHDLMConfiguration('hrn:here:data::olp-here-had:here-hdlm-protobuf-na-2');

使用此配置创建的读取器仅从指定目录中搜索地图数据。

配置HERE HDLM阅读器是可选的。如果没有指定配置,读取器默认为在所有目录中搜索地图。读取器会从找到这些磁贴的目录的最新版本中返回地图数据。

6.2.3 为特定地图瓦片创建读取器

hereHDLMReader对象从选定的地图磁贴中读取HERE HDLM数据。默认情况下,这些地图被设置为14的缩放级别,相当于大约5-10平方公里的矩形区域。 

创建 hereHDLMReader 对象时,可以选择要读取数据的地图磁贴。可以直接指定地图ID。或者, 也可以指定一个行驶路线的坐标,并从该路线的地图中读取数据。

加载北美地区驾车路线的经纬度坐标。作为参考,在地理轴上显示路线。

route = load('geoSequenceNatickMA.mat');

lat = route.latitude;

lon = route.longitude;

geoplot(lat,lon,'bo-')geobasemap('streets') title('Driving Route')

使用指定的驾驶路径和配置创建一个 hereHDLMReader 对象。

reader= hereHDLMReader(lat,lon,'Configuration',config);

该阅读器可以让 读取该行驶路线所在的地砖的地图数据。地图数据存储在一组包含地图各方面详细信息的图层中。读取器支持读取道路中心线模型、高清车道模型和高清定位模型的地图图层数据。

有关这些模型中的图层的详细信息,请参见第七讲 "HERE高清实时地图图层"。

6.2.4 读取地图层数据

读取函数读取所选地图的数据。地图数据以一系列图层对象的形式返回。读取包含道路拓扑几何体的图层的数据。

topology =read(reader,'TopologyGeometry')

topology=

     2×1 TopologyGeometry arraywith properties: 

    Data:

    HereTileId IntersectingLinkRefs LinksStartingInTileNodesInTile  

    TileCenterHere2dCoordinate

    Metadata:

    Catalog

    CatalogVersion 

每个地图层对象都对应于使用输入的 hereHDLMReader 对象选择的地图层。这些地图瓦片的ID存储在阅读器的TileIds属性中。检查第一个地图瓦片的地图层对象的属性。的目录版本和地图数据可能与这里显示的不同。

topology(1) 

ans =

     TopologyGeometry with properties: 

     Data:

     HereTileId: 321884279

     IntersectingLinkRefs: [42×1 struct]

     LinksStartingInTile: [905×1 struct]

     NodesInTile: [635×1 struct]

     TileCenterHere2dCoordinate: [42.3083-71.3782]

     Metadata:

     Catalog:'hrn:here:data::olp-here-had:here-hdlm-protobuf-na-2'

     CatalogVersion: 3321

TopologyGeometry层对象的属性对应于该层的有效HERE HDLM字段。在这些图层对象中,图层字段的名称被修改为符合MATLAB对象属性的命名惯例。关于图层对象的更多细节,请参见读取函数参考页的layerData输出参数说明。

6.2.5 可视化地图图层数据

要可视化地图图层的数据,请使用绘图功能。绘制返回的地图图层的拓扑几何图形。该图显示地图层内的边界、节点(交叉口和死角)和链接(街道)。如果一个链接延伸到指定地图层的边界之外,图层数据就包括该链接。

plot(topology)

 

地图图层图是在地理轴上返回的。要自定义地图显示,可以使用地理轴的属性。更多详情,请参阅GeographicAxes属性。将行驶路线覆盖在图上。

hold on

geoplot(lat,lon,'bo-','DisplayName','Route')

hold off

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
[转]OpenStreetMap 获取地图数据
开源地图服务OpenStreetMap
奥维 OpenStreetMap,原来添加平面图这么简单
建筑学必知的N个地图素材网站
OpenStreetMap初探(一)——了解OpenStreetMap
微软《飞行模拟》中,澳洲惊现一座巨大的方尖碑
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服