One word introduction: Here we introduce a quick way to generate raster maps in gazebo. The previous generation generally needed to build a map through slam, which was troublesome and prone to drift. We now implement this process with a few plugins in gazebo, which make it much more logical and the maps are very standardized.
一句话介绍: 这里我们介绍一个在gazebo中快速生成栅格地图的方法。以前的生成一般需要通过slam进行建图,这个过程比较麻烦,而且容易产生漂移。我们现在通过gazebo中的一些插件来实现这个过程,变得更加合理而且地图非常标准化。
GUI操作界面
相关说明的博客在:
mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc)
python3 gui/map_creator_gui.py
-c, --corners 地图边界坐标 格式: (x1,y1,z1)(x2,y2,z2) 示例: (-10.0,-10.0,0.05)(10.0,10.0,10.0)
-r, --resolution 地图分辨率(米) 值越小,分辨率越高,生成时间越长 默认: 0.01
-d, --multiplier 碰撞检测距离倍数 默认: 0.55
-t, --threshold 2D地图像素阈值 (0-255) 0=黑色/占用,255=白色/空闲 默认: 255
-f, --filename 输出文件基础名称 会生成多个文件: .pgm, .png, .yaml, .pcd, .bt 默认: map
--skip-vertical-scan 跳过垂直扫描(更快,适合2D地图)
生成的文件包括:
- map.pgm - 2D灰度地图(PGM格式)
- map.png - 2D地图PNG图像
- map.yaml - ROS/Nav2兼容的地图元数据
- map.pcd - 3D点云数据(PCL格式)
- map.bt - Octomap二进制文件
地图生成需要定义一个3D边界框:
- Lower Right (下右角): 扫描区域的底部-前方-右侧角点
- Upper Left (上左角): 扫描区域的顶部-后方-左侧角点
坐标约束:
upper_left.x > lower_right.xupper_left.y < lower_right.yupper_left.z > lower_right.z
示例:
Lower Right: (-10.0, -10.0, 0.05) # 起始点
Upper Left: (10.0, 10.0, 10.0) # 结束点
这将创建一个 20m x 20m x 10m 的扫描区域。
xdg-open map.pgm
eog map.png
pcl_viewer map.pcd
rviz