基于MATLAB&SIMULINK开发自动驾驶系统第十九讲将OpenStreetMap数据导入到驾驶场景中
OpenStreetMap是一个免费的、开源的网络地图服务,能够访问众包的地图数据。使用驾驶场景设计器应用,可以从OpenStreetMap导入地图数据,并使用它为你的驾驶场景生成道路。
本讲主要介绍在应用中导入地图数据的情况。另外,要将OpenStreetMap道路导入到驾驶场景对象中,请使用roadNetwork功能。
选择OpenStreetMap文件
要导入一个道路网,必须首先选择一个包含该道路网几何形状的OpenStreetMap文件。要从openstreetmap.org导出这些文件,请指定一个地图位置,手动调整该位置周围的区域,并将该区域的道路几何图形导出到扩展名为.osm的OpenStreetMap中。只有全长在这个指定区域内的道路才会被导出。在本讲中,选择的是之前从本网站导出的OpenStreetMap 文件:
1 打开 "驾驶场景设计器 "应用程序。
驾驶场景设计器(drivingScenarioDesigner)
2 在应用工具条上,选择导入 > OpenStreetMap。
3 在OpenStreetMap导入对话框中,浏览这个文件,其中matlabroot是你的MATLAB文件夹的根。
matlabroot/examples/driving/data/applehill.osm
该文件是从https://www.openstreetmap.org 下载的,该网站提供了对全世界人群来源的地图数据的访问。该数据采用开放数据共享开放数据库许可(ODbL),https://opendatacommons.org/licenses/odbl/。
对话框中的 "选择道路 "部分显示了 MathWorks® Apple Hill 校园的道路网。灰色方框代表从 openstreetmap.org 选择的地图区域。中心灰色方框中的点是地理参考点,点击该点可以显示或隐藏坐标数据。点击该点可以显示或隐藏坐标数据。当道路导入到该应用中时,这个点就成为驾驶场景的原点。
19.1 选择要导入的道路
在对话框的 "选择道路 "部分,选择要导入驾驶场景的道路。可选择的道路为黑色。
选择的道路数量对应用性能有直接影响。选择需要的最少的道路来创建驾驶场景。
由于该道路网规模较小,点击 "全部选择 "可选择所有道路。所选道路显示为蓝色。
选择要导入的道路时,可进行的操作如下表所示。
|
|
|
|
|
|
|
|
|
|
19.2导入道路
在网络中的所有道路仍被选中的情况下,点击导入。应用程序暂停导入,并以红色突出显示其中一条道路。应用程序无法正确呈现该道路的几何形状,因此无法导入该道路。
点击 "继续 "继续导入所有其他选定的道路。该应用程序导入道路并生成道路网络。
为了与地理地图显示保持一致,场景画布的X轴在底部,Y轴在左侧。在不是从地图导入的驾驶场景中,X轴在左侧,Y轴在底部。这种排列方式与自动驾驶工具箱的世界坐标系一致。场景的原点与地理参考点相对应。
默认情况下,道路交互是禁用的。禁用道路交互可以防止意外修改网络,并通过隐藏道路中心来减少视觉混乱。如果 想修改道路,在 "场景画布 "的左下角,单击 "配置场景画布 "按钮。然后,选择启用道路交互。
19.3 比较进口道路与地图数据
应用程序中生成的路网与OpenStreetMap路网不同。例如,检查这部分道路网的差异。
|
|
在导入的场景中,道路之间的过渡比较突然,因为该应用不支持随着车道数的变化而逐渐减少车道数。此外,由于该应用没有从OpenStreetMap导入车道级信息,所以生成的路网中的车道数仅基于路网中指定的行驶方向,其中。
- 所有的单向道路都作为单车道道路导入。
- 所有的双向道路都作为双车道道路导入。
这些车道都具有相同的宽度,这可能导致突然的过渡,如表中所示的例子。
有关导入OpenStreetMap数据的限制的更多细节,请参阅驾驶场景设计器应用程序参考页面的 "限制 "部分。
19.4保存场景
保存场景文件。保存场景后,不能将额外的OpenStreetMap道路导入其中。相反, 必须创建一个新的场景并导入一个新的道路网络。
现在,可以将执行器和传感器添加到场景中,生成用于测试驾驶算法的合成车道和物体探测,或将场景导入Simulink中。