< >
Home » ROS2与Turbot3-Multi多机协同教程 » ROS2与Turbot3-Multi多机协同教程-多机合并建图

ROS2与Turbot3-Multi多机协同教程-多机合并建图

文章说明

  • 本文章主要介绍如何使用Turbot3-Multi套件实现多机建图
  • 测试环境:Ubuntu 24.04 + ROS2 Jazzy

相关设备

前提准备

  • 进行多机建图前需要先确定好当前机器人的具体位置,详细教程

操作步骤

  • [NUC] 关闭此前打开的ros程序,以免造成冲突
$ ./multi_scripts/multi_kill.sh
$ ./multi_scripts/server_kill.sh
  • [NUC] 启动多台机器人
$ ./multi_scripts/multi_robot.sh
  • 启动之后的TF图如下:

请输入图片描述

  • [NUC] 启动多台机器人建图
$ ./multi_scripts/multi_slam.sh
  • 每个机器人的起始扫描图

请输入图片描述

请输入图片描述

请输入图片描述

  • 启动之后的TF图如下:

请输入图片描述

  • [NUC] 新开终端,启动合并地图和rviz
$ ./multi_scripts/multi_map_merge.sh

请输入图片描述

  • 由于启动建图程序的同时也启动了导航节点,故可以使用指定目标导航的方式来进行建图
  • 详细操作可以观看下面演示视频

也可以使用键盘控制方式来进行移动建图,但需注意指定目标导航的方式不能和键盘控制方式同时运行

  • [NUC] 可选,新开终端,根据机器人数量打开对应数量的终端,启动键盘控制
# 启动三台机器人的键盘控制程序
$ ./multi_scripts/single_key.sh 0
  • 控制每台小车进行建图,同时查看合并后地图,建图完成

请输入图片描述

  • [NUC] 新开终端,保存地图
$ ./multi_scripts/multi_save_map.sh
------------------------------------------------------
./multi_scripts/multi_save_map.sh
Such as: "./multi_scripts/multi_save_map.sh "
It will run map_saver node.
------------------------------------------------------
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2025-03-13-10-37-42-947456-TB3-NUC-V500-9355
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [map_saver_cli-1]: process started with pid [9358]
[map_saver_cli-1] [INFO] [1741833463.316937533] [map_saver]: 
[map_saver_cli-1]   map_saver lifecycle node launched. 
[map_saver_cli-1]   Waiting on external lifecycle transitions to activate
[map_saver_cli-1]   See https://design.ros2.org/articles/node_lifecycle.html for more information.
[map_saver_cli-1] [INFO] [1741833463.317082957] [map_saver]: Creating
[map_saver_cli-1] [INFO] [1741833463.317479817] [map_saver]: Configuring
[map_saver_cli-1] [INFO] [1741833463.323884554] [map_saver]: Saving map from 'map' topic to '/home/ubuntu/map/multi' file
[map_saver_cli-1] [WARN] [1741833463.323964707] [map_saver]: Free threshold unspecified. Setting it to default value: 0.250000
[map_saver_cli-1] [WARN] [1741833463.323985869] [map_saver]: Occupied threshold unspecified. Setting it to default value: 0.650000
[map_saver_cli-1] [WARN] [1741833463.391120327] [map_io]: Image format unspecified. Setting it to: pgm
[map_saver_cli-1] [INFO] [1741833463.392210267] [map_io]: Received a 608 X 416 map @ 0.05 m/pix
[map_saver_cli-1] [INFO] [1741833463.462366178] [map_io]: Writing map occupancy data to /home/ubuntu/map/multi.pgm
[map_saver_cli-1] [INFO] [1741833463.466763265] [map_io]: Writing map metadata to /home/ubuntu/multi.yaml
[map_saver_cli-1] [INFO] [1741833463.467144146] [map_io]: Map saved
[map_saver_cli-1] [INFO] [1741833463.467179260] [map_saver]: Map saved successfully
[map_saver_cli-1] [INFO] [1741833463.469127267] [map_saver]: Destroying
[INFO] [map_saver_cli-1]: process has finished cleanly [pid 9358]
 
save map into /home/ubuntu/map/multi.yaml and /home/ubuntu/map/multi.pgm 
  • 地图默认保存在~/map目录下,命名为multi.yamlmulti.pgm

FAQ

问题一

  • 有时候会遇到某台机器人不能正常启动的情况,这时候可以单独终止该机器人的ros进程和重新启动机器人
# 命令后面的数字 `0` 表示机器人的编号
$ ./multi_scripts/single_kill.sh 0
$ ./multi_scripts/single_robot.sh 0 

演示视频

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

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


标签: ros2与turbot3-multi多机协同教程