< >
Home » PX4与仿真入门教程 » PX4与仿真入门教程-dronedoc-使用 Gazebo 插件创建地图(ros包)

PX4与仿真入门教程-dronedoc-使用 Gazebo 插件创建地图(ros包)

PX4与仿真入门教程-dronedoc-使用 Gazebo 插件创建地图

说明:

  • 介绍如何使用 Gazebo 插件。
  • 创建 Gazebo 插件涉及高级内容,所以这次我们将使用一个已经创建好的插件。
  • 本章使用的 Gazebo 插件程序在创建 Gazebo 插件以生成地图。

步骤:

cd ~/dronedoc_ws/src
git clone https://github.com/ncnynl/px4_sim_pkg.git
catkin_make
  • 更改px4_sim_pkg/msgs/proto/CMakelist.txt
set (msgs
  collision_map_request.proto
  ${PROTOBUF_IMPORT_DIRS}/vector2d.proto
  ${PROTOBUF_IMPORT_DIRS}/header.proto
  ${PROTOBUF_IMPORT_DIRS}/time.proto
)
  • 更改为
set (msgs
  collision_map_request.proto
  #${PROTOBUF_IMPORT_DIRS}/vector2d.proto
  #${PROTOBUF_IMPORT_DIRS}/header.proto
  #${PROTOBUF_IMPORT_DIRS}/time.proto
)
  • 更改完,在编译一次
catkin_make
  • 接下来,将以下内容添加到 World 文件中,以便您可以使用插件进行地图输出。
<plugin filename="map_builder.so" name="map_builder"/>
  • 使用map_builder.so绝对路径
  • 如果变成下面的例子就OK了​​。
<?xml version ='1.0'?>
<sdf version ='1.4'>
  <world name='default'>
    <include>
      <uri>model://ground_plane</uri>
    </include>

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

    <include>
      <uri>model://willowgarage</uri>
    </include>

    <plugin filename="/home/ubuntu/dronedoc_ws/devel/lib/map_builder.so" name="map_builder"/>
  </world>
</sdf>

输出地图

  • 启动您要绘制的世界。
cd ~/tools/dronedoc/
source load_environment.sh
roslaunch gazebo_ros empty_world.launch world_name:=$HOME/dronedoc_ws/src/px4_sim_pkg/worlds/willow_garage.world verbose:=true
  • 指定verbose:=true显示详细的输出信息
  • Gazebo 启动后,执行以下命令。
cd ~/tools/dronedoc/
source load_environment.sh
rosrun px4_sim_pkg request_publisher  "(-50,50)(50,50)(50,-50)(-50,-50)" 50 0.01 ~/map.png 255
  • 执行命令效果如下:
$ rosrun px4_sim_pkg request_publisher  "(-50,50)(50,50)(50,-50)(-50,-50)" 50 0.01 ~/map.png 255
[ INFO] [1634199833.591290409]:
Request Start

[ INFO] [1634199833.596139683]:
Request:
 UL.x: -50.000000 UL.y: 50.000000
 UR.x: 50.000000 UR.y: 50.000000
 LR.x: 50.000000 LR.y: -50.000000
 LL.x: -50.000000 LL.y: -50.000000
 Height: 50.000000
 Resolution: 0.010000
 Filename: /home/ubuntu/map.png
 Threshold: 255
  • 执行该命令时,以矩形坐标(-50,50)(50,50)(50,-50)(-50,-50)矩形围成的区域内高度低于50m的障碍物地图将在当前目录中创建为map.png。 网格间距为0.01m,判断网格被占用的阈值为255。 同时还生成了一个地图配置文件~/map.yaml。
  • 该命令的用法如下。
Usage: rosrun px4_sim_pkg request_publisher a1 a2 a3 [a4 a5] 
      a1: "(upperleft.x, upperleft.y)(upperright.x, upperright.y)(lowerleft.x, lowerleft.y)(lowerright.x, lowerright.y)"
      a2: height
      a3: resolution
      a4: filename    [default="map"]
      a5: threshold   [default=255]
  • 如果你对下面的世界执行上面的命令

请输入图片描述

  • 将生成以下地图。 图像的左下角是原点。

请输入图片描述

参考:

  • https://uenota.github.io/dronedoc/ja/build_map_gazebo_plugin/gazebo_map_builder.html
  • https://github.com/osrf/collision_map_creator_plugin
  • http://gazebosim.org/tutorials?tut=custom_messages

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

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


标签: px4与仿真入门教程