< >
Home » ROS2与Gazebo11入门教程 » ROS2与Gazebo11入门教程-带有卫星影像的地平面模型

ROS2与Gazebo11入门教程-带有卫星影像的地平面模型

说明:

  • 介绍带有卫星影像的地平面模型

概述

  • 对于诸如航空机器人等大型室外环境中的应用而言,在仿真中有一个带有卫星影像的地平面通常会很有用。

  • 卫星影像对于环境可视化和计算机视觉任务也很有用。

  • 本节教程将会介绍如何使用Gazebo提供的“静态地图(Static Map)”世界插件来创建卫星地图模型并将其插入到仿真世界中。该卫星影像是在运行时使用Google的“静态地图API”下载的,因此使用此插件需要互联网连接。

示例仿真世界

  • 要试用此插件,请下载这个世界文件并将其另存为static_map_plugin.world文件,该文件内容应该如下所示:
<?xml version="1.0" ?>

<sdf version="1.6">

<world name="default">



<include>

<uri>model://sun</uri>

</include>



<plugin name="map" filename="libStaticMapPlugin.so">

<center>37.386491 -122.065255</center>

<world_size>100</world_size>

<map_type>satellite</map_type>

<api_key>enter_your_google_api_key_here</api_key>

<use_cache>false</use_cache>

</plugin>

</world>

</sdf>
  • 该示例仿真世界仅包含太阳和静态地图插件。由于该插件会在运行时生成地图模型并将其插入仿真世界中,因此无需地平面ground_plane模型。在启动这个仿真世界之前,您需要一个API密钥。由于我们使用的是Google Static Map API服务,因此您可以自己获取Google API密钥。

  • 获得Google API密钥后,将其输入到世界文件中的plugin参数中,即用Google提供给您的密钥替换下面一行中api_key元素的值:

<api_key>enter_your_google_api_key_here</api_key>
  • 完成这一步后,用世界文件static_map_plugin.world启动Gazebo:
gazebo --verbose static_map_plugin.world
  • 这样您应该就会看到下图:

请输入图片描述

  • 在这个示例仿真世界中,该插件会生成一个具有唯一名称的地图模型,并将模型SDF和影像文件保存到/.gazebo/models目录下一个具有map_前缀的自包含模型文件夹中。通过将<use_cache>设置为false还告知该插件我们不想使用图像缓存,因此后续的启动会再次触发影像下载(并重新创建模型文件)。有关如何指定您自己的模型名称或者重用图像缓存以防止将来再次下载影像的详细信息,请参见下一小节“插件参数”

  • 现在,尝试将Gazebo模型数据库中的一些模型插入到该仿真世界中(左图:原始Google地图视图;右图:Gazebo的窗口):

请输入图片描述

  • 插件参数

  • 该插件需要以下参数:

center:地图中心的纬度和经度。这两个值应该用空格分开。
world_size:要覆盖的世界目标尺寸(以米为单位)。插件将会提取足够多的影像瓦块来创建一个大于指定面积的模型。
api_key:Google API密钥。
  • 可选参数有:
model_name:地图模型的名称。如果未指定,则插件会尝试基于插件参数生成一个唯一的名称。
pose:仿真世界中地图模型的位姿。
zoom:缩放级别,从0(全球)到21(街道)或更高级别。注意:在世界上某些地区,Google卫星图像并没有达到21+的缩放级别,因此,如果找不到影像,则可能需要降低缩放级别。
map_type:要使用的地图类型,可以是道路图(roadmap)、卫星影像(satellite)、地形图(terrain)、混合图(hybrid)。默认情况下是卫星影像(satellite)。
tile_size:地图瓦块的大小(以像素为单位)。标准Google静态地图(Static Map)的使用上限为640。
use_cache:设置为true,则使用GAZEBO_MODEL_PATH环境变量中发现的模型(如果存在的话),否则(设置为false或未设置此参数)就会重新创建模型并将其保存在<HOME>/.gazebo/ models目录中。

限制

  • 静态地图插件当前还存在一些限制:

    • 只能生成基于<world_size>参数值的正方形地图模型,而不支持矩形区域。

    • 影像下载发生在主线程中,因此会阻塞Gazebo窗口直到所有影像下载完为止。下载的影像瓦块数量取决于指定的<world_size>参数值大小。

    • 仅支持标准的Google Map API,请参阅使用限制以了解更多详细信息。

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与gazebo11入门教程