1. 环境配置

# 安装Gampping及图像保存库
sudo apt install ros-noetic-gmapping ros-noetic-map-server
  • 1.
  • 2.

从零Gazebo中实现Gmapping算法建图_算法

2. 遥控建图

2.1 启动指令
# 终端1: 启动仿真环境(View->transparent调整透明度,方便观察机器人运动)
roslaunch turtlebot3_gazebo turtlebot3_house.launch 
# 终端2: 启动Gamapping建图功能(可以忽略,在turtlebot3_slam.launch会启动)
# roslaunch turtlebot3_slam turtlebot3_gmapping.launch
# 终端3: 启动键盘控制(保持终端激活)
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
# 终端4: 启动Rviz查看建图过程和结果
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
控制指令(保持键盘控制终端处于激活状态):
w:前进
x:后退
a:左转
d:右转
s:停止
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
2.2 启动界面

从零Gazebo中实现Gmapping算法建图_gmapping_02

从零Gazebo中实现Gmapping算法建图_gmapping_03

从零Gazebo中实现Gmapping算法建图_算法_04

从零Gazebo中实现Gmapping算法建图_gazebo_05

从零Gazebo中实现Gmapping算法建图_gmapping_06

从零Gazebo中实现Gmapping算法建图_gazebo_07

2.3 建图过程及结果

从结果看,是有漂移。

从零Gazebo中实现Gmapping算法建图_gazebo_08

从零Gazebo中实现Gmapping算法建图_算法_09

从零Gazebo中实现Gmapping算法建图_gmapping_10

3. 地图查看

# 终端5: 保存地图(生成pgm、yaml两个文件)
rosrun map_server map_saver -f ~/map/gmapping_house
# 查看地图配置文件
cat ~/map/gmapping_house.yaml
  • 1.
  • 2.
  • 3.
  • 4.

从零Gazebo中实现Gmapping算法建图_gmapping_11

从零Gazebo中实现Gmapping算法建图_gmapping_12

# 指定地图的图像文件路径,该文件存储了栅格地图的像素数据。
image: /home/suo/map/gmapping_house.pgm
#地图的分辨率,表示每个像素对应的实际物理尺寸(单位:米),0.05表示每个像素代表现实中 5 厘米的长度,该参数决定了地图的精度
resolution: 0.050000
# 地图的起点坐标(单位:米),表示图像左下角像素在世界坐标系中的位置。此处 [-10, -10, 0] 说明地图的原点位于世界坐标系的 (-10m, -10m) 处
origin: [-10.000000, -10.000000, 0.000000]
# 指定是否反转图像的黑白值。0 表示图像中白色(像素值 255)代表自由空间,黑色(像素值 0)代表障碍物;1 则反之
negate: 0
# 占据阈值,用于判定图像中的像素是否为障碍物。像素值高于此阈值(归一化后)会被视为障碍物(即占用区域)
occupied_thresh: 0.65
# 自由空间阈值,像素值低于此阈值会被视为自由空间,高于此值且低于 occupied_thresh 的区域则视为未知区域
free_thresh: 0.196
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

从零Gazebo中实现Gmapping算法建图_gmapping_13