• 相关依赖安装

安装 multirobot-map-merge 包

sudo apt-get install ros-melodic-multirobot-map-merge

其他依赖的安装参考之前的文章 turtlebot3 仿真 --- 单机SLAM与导航

  • 仿真环境加载

新终端,首先导入机器人模型(每次打开新终端都要添加),也可在~/.bashrc中直接添加,具体操作参考 turtlebot3 仿真 --- 单机SLAM与导航 

export TURTLEBOT3_MODEL=burger

在Gazebo中的TurtleBot3 House环境加载三台机器人:

roslaunch turtlebot3_gazebo multi_turtlebot3.launch
  • 多机建图

分别打开三个新终端,对三台机器人启动 gmapping SLAM 程序:

## 第一个终端
ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map

## 第二个终端
ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_1/base_footprint set_odom_frame:=tb3_1/odom set_map_frame:=tb3_1/map

## 第三个终端
ROS_NAMESPACE=tb3_2 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_2/base_footprint set_odom_frame:=tb3_2/odom set_map_frame:=tb3_2/map

新终端,启动地图融合程序:

roslaunch turtlebot3_gazebo multi_map_merge.launch

新终端,启动 rviz:

rosrun rviz rviz -d `rospack find turtlebot3_gazebo`/rviz/multi_turtlebot3_slam.rviz
  • 键盘控制

分别打开三个新终端,启动三台机器人的键盘控制程序:

## 第一个终端
ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key

## 第二个终端
ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key

## 第三个终端
ROS_NAMESPACE=tb3_2 rosrun turtlebot3_teleop turtlebot3_teleop_key

分别用WAXD键移动三台机器人,分区域建图

  • 结果

建图完成后,打开新终端,保存地图:

rosrun map_server map_saver -f ~/map

效果(不是太好):

会继续研究代码和参数的细节,找到效果不好的原因。