之前用gazebo做turtlebot的多机仿真建图,一直出bug并且无法解决
然后直接放弃,转用实机操作
ubuntu20.04 ROS noetic
用了两个turtlebot3 burger建图,turtlebot的版本和电脑一样
需要一个地图合并的软件包,https://github.com/hrnr/m-explore
sudo apt install ros-${ROS_DISTRO}-multirobot-map-merge
一些操作也可以参照下面这个博客
1.首先启动roscore
roscore
2.连接turtlebot3 burger
PC上连接turtlebot的ubuntu系统,默认密码是turtlebot
ssh ubuntu@加上自己的ip地址
3.启动turtlebot3
连接成功之后,在PC远程连接的turtlebot ubuntu系统上分别启动两台机器人
ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="tb3_0" set_lidar_frame_id:="tb3_0/base_scan"
第二台把tb3_0改成tb3_1
ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_bringup turtlebot3_robot.launch multi_robot_name:="tb3_1" set_lidar_frame_id:="tb3_1/base_scan"
PC上分别启动模型
ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_bringup turtlebot3_remote.launch multi_robot_name:=tb3_0
ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_bringup turtlebot3_remote.launch multi_robot_name:=tb3_1
PC上分别启动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
启动第二台的slam建图
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
PC上启动地图合并
roslaunch turtlebot3_bringup turtlebot3_map_merge.launch
PC上启动Rivz
rosrun rviz rviz -d `rospack find turtlebot3_bringup`/launch/multi_turtlebot3_slam.rviz
注意!
启动Rivz后可能会出现不显示地图的情况,需要手动添加
关于Rviz怎么用可以参考这篇博客
再分别启动两个机器人的键盘控制
ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key
ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key
这样就可以同时控制两个tuetlebot,实现建图了
最后保存地图
rosrun map_server map_saver -f ~/map