ROS2与Turbot3-Multi多机协同教程-多机合并建图
文章说明
- 本文章主要介绍如何使用Turbot3-Multi套件实现多机建图
- 测试环境:
Ubuntu 24.04
+ROS2 Jazzy
相关设备
- Turbot3-Multi套件:采购地址
前提准备
- 进行多机建图前需要先确定好当前机器人的具体位置,详细教程
操作步骤
- [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.yaml
和multi.pgm
FAQ
问题一
- 有时候会遇到某台机器人不能正常启动的情况,这时候可以单独终止该机器人的ros进程和重新启动机器人
# 命令后面的数字 `0` 表示机器人的编号
$ ./multi_scripts/single_kill.sh 0
$ ./multi_scripts/single_robot.sh 0
演示视频
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号