ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

move_base with multiple robots running gmapping SLAM on turtlebot3

asked 2023-02-21 00:32:47 -0600

hunterlineage1 gravatar image

updated 2023-02-21 01:24:54 -0600

I am trying to run move_base nodes for each of 3 turtlebot3s in ROS melodic and gazebo9. My approach is taken mainly from the "Multiple robots simulation and navigation" answer which gives instructions on how to simulate multiple turtlebot3s (3 in my case) using AMCL package and the navigation stack. AMCL package "track the pose of a robot against a known map" but in this case I am running gmapping SLAM on my 3 turtlebot3s. I am not using amcl package because I am using gmapping SLAM to do my localization and map building.

My objective is to run explore_lite on 3 turtlebot3s and using multirobot_map_merge to merge their individual maps. For now, I am trying to run move_base for each of the 3 turtlebot3s and use '2D Nav Goal' for each of their /move_base_simple/goal topics. When I run my multi_move_base.launch file, I get the following error:

[ WARN] [1676956640.385330213, 617.147000000]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: source_frame base_footprint does not exist.. canTransform returned after 0.101 timeout was 0.1.

I am not able to solve this error. Here are my launch files:

roslaunch turtlebot3_gazebo multi_MAIN_turtlebot3.launch

uses multi_MAIN_turtlebot3.launch:

<launch>
  <!-- <param name="/use_sim_time" value="true"/> -->
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="first_tb3"  default="tb3_0"/>
  <arg name="second_tb3" default="tb3_1"/>
  <arg name="third_tb3"  default="tb3_2"/>

  <arg name="first_tb3_x_pos" default="-7.0"/>
  <arg name="first_tb3_y_pos" default="-1.0"/>
  <arg name="first_tb3_z_pos" default=" 0.0"/>
  <arg name="first_tb3_yaw"   default=" 1.57"/>

  <arg name="second_tb3_x_pos" default=" 7.0"/>
  <arg name="second_tb3_y_pos" default="-1.0"/>
  <arg name="second_tb3_z_pos" default=" 0.0"/>
  <arg name="second_tb3_yaw"   default=" 1.57"/>

  <arg name="third_tb3_x_pos" default=" 0.5"/>
  <arg name="third_tb3_y_pos" default=" 3.0"/>
  <arg name="third_tb3_z_pos" default=" 0.0"/>
  <arg name="third_tb3_yaw"   default=" 0.0"/>

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_house.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>  

  <group ns = "$(arg first_tb3)">
    <param name="robot_description" command="$(find xacro)/xacro $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="$(arg first_tb3)" />
    </node>

    <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model $(arg first_tb3) -x $(arg first_tb3_x_pos) -y $(arg first_tb3_y_pos) -z $(arg first_tb3_z_pos) -Y $(arg first_tb3_yaw) -param robot_description" />
  </group>

  <group ns = "$(arg second_tb3)">
    <param name="robot_description" command="$(find xacro)/xacro $(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro" />

    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" output="screen">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name ...
(more)
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2023-02-25 23:49:02 -0600

miura gravatar image

The names of the map topics do not appear to match.

The map topic that move_base is trying to subscribe to is /map. In contrast, the map topic published by gmapping should be /tb3_1/map etc., not /map.

There is progress to be made in aligning them. You could try removing <remap from="map" to="/map" /> from move_base.launch.

Before you do that, we recommend that you check the list of topics to see who the publisher and subscribers are.

edit flag offensive delete link more

Comments

1

This helps. So previously my move_base_simple/goal for each turtlebot3 was being set on the global /map topic. This is undesired because the /map is a result of the combination of /tb3_0/map, /tb3_1/map, and /tb3_2/map using multirobot_map_merge package. When I removed <remap from="map" to="/map" /> the move_base_simple/goal for each turtlebot3 was sent to /tb3_0/map, /tb3_1/map,and/tb3_2/map` respectively.

hunterlineage1 gravatar image hunterlineage1  ( 2023-03-01 05:08:31 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2023-02-21 00:32:47 -0600

Seen: 291 times

Last updated: Feb 25 '23