PX4与仿真入门教程-dronedoc-使用 Gazebo 插件创建地图(ros包)
PX4与仿真入门教程-dronedoc-使用 Gazebo 插件创建地图
说明:
- 介绍如何使用 Gazebo 插件。
- 创建 Gazebo 插件涉及高级内容,所以这次我们将使用一个已经创建好的插件。
- 本章使用的 Gazebo 插件程序在创建 Gazebo 插件以生成地图。
步骤:
- 使用官方插件方法,可参考 Gazebo 插件创建地图(collision_map_creator_plugin)
- 下面的方法使用整合的ros包来实现
- 首先,让我们下载并构建包含插件的包。
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
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号