3️Navigation

Launchfile

localization.launch
<?xml version="1.0"?>
<launch>

  <!-- Bringup two turtlebot3s - laptop/remotepc portion -->

  <!-- Command Line Arguments -->
  <arg name="tb3_0_init_x" default="0.0"/>
  <arg name="tb3_0_init_y" default="0.0"/>
  <arg name="tb3_0_init_a" default="0.0"/>

  <arg name="tb3_1_init_x" default="0.0"/>
  <arg name="tb3_1_init_y" default="0.0"/>
  <arg name="tb3_1_init_a" default="0.0"/>

  <arg name="tb3_2_init_x" default="0.0"/>
  <arg name="tb3_2_init_y" default="0.0"/>
  <arg name="tb3_2_init_a" default="0.0"/>

  <arg name="joy_config" default="f310" />
  <arg name="joy_config_file" default="$(find multi_turtlebot3_navigation)/config/$(arg joy_config).config.yaml" />
  <arg name="tb3_0_joy_dev" default="/dev/input/js0" />
  <arg name="tb3_1_joy_dev" default="/dev/input/js1" />
  <arg name="tb3_2_joy_dev" default="/dev/input/js2" />
  
  <!-- Default value for location of map config file -->
  <arg name="map_file" default="$(env HOME)/map.yaml"/>

  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="urdf_file" default="$(find xacro)/xacro --inorder '$(find turtlebot3_description)/urdf/turtlebot3_$(arg model).urdf.xacro'" />

  <!-- Loads robot_description to parameter server from URDF file-->
  <param name="robot_description" command="$(arg urdf_file)" />

  <!-- Map Server -->
  <node pkg="map_server" name="map_server" type="map_server" args="$(arg map_file)"/>
  
  <!-- First Robot -->
  <group ns="tb3_0">

    <!-- Robot State Publisher -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="tb3_0"/>
    </node>
    
    <!-- AMCL -->
    <node pkg="amcl" type="amcl" name="amcl">
      <!-- Load default parameters for turtlebot -->
      <rosparam file="$(find multi_turtlebot3_navigation)/param/amcl_params.yaml" command="load" />
      <param name="initial_pose_x" value="$(arg tb3_0_init_x)"/>
      <param name="initial_pose_y" value="$(arg tb3_0_init_y)"/>
      <param name="initial_pose_a" value="$(arg tb3_0_init_a)"/>

      <param name="odom_frame_id"  value="tb3_0/odom"/>
      <param name="base_frame_id"  value="tb3_0/base_footprint"/>

      <!-- Use the single map server -->
      <remap from="static_map" to="/static_map"/>
    </node>

    <!-- Teleop Nodes -->
    <!-- <node pkg="joy" type="joy_node" name="joy_node">
      <param name="dev" value="$(arg tb3_0_joy_dev)" />
      <param name="deadzone" value="0.1" />
      <param name="autorepeat_rate" value="10" />
    </node>
    
    <node pkg="teleop_twist_joy" name="teleop_twist_joy" type="teleop_node">
      <rosparam command="load" file="$(arg joy_config_file)" />
    </node> -->
  </group>

  <!-- Second Robot -->
  <group ns="tb3_1">

    <!-- Robot State Publisher -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="tb3_1"/>
    </node>
    
    <!-- AMCL -->
    <node pkg="amcl" type="amcl" name="amcl">
      <!-- Load default parameters for turtlebot -->
      <rosparam file="$(find multi_turtlebot3_navigation)/param/amcl_params.yaml" command="load" />
      <param name="initial_pose_x" value="$(arg tb3_1_init_x)"/>
      <param name="initial_pose_y" value="$(arg tb3_1_init_y)"/>
      <param name="initial_pose_a" value="$(arg tb3_1_init_a)"/>

      <param name="odom_frame_id"  value="tb3_1/odom"/>
      <param name="base_frame_id"  value="tb3_1/base_footprint"/>

      <!-- Use the single map server -->
      <remap from="static_map" to="/static_map"/>

    </node>

    <!-- Teleop Nodes -->
    <!-- <node pkg="joy" type="joy_node" name="joy_node">
      <param name="dev" value="$(arg tb3_1_joy_dev)" />
      <param name="deadzone" value="0.1" />
      <param name="autorepeat_rate" value="10" />
    </node>
    
    <node pkg="teleop_twist_joy" name="teleop_twist_joy" type="teleop_node">
      <rosparam command="load" file="$(arg joy_config_file)" />
    </node> -->
  
  </group>

  <group ns="tb3_2">

    <!-- Robot State Publisher -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" value="tb3_2"/>
    </node>
    
    <!-- AMCL -->
    <node pkg="amcl" type="amcl" name="amcl">
      <!-- Load default parameters for turtlebot -->
      <rosparam file="$(find multi_turtlebot3_navigation)/param/amcl_params.yaml" command="load" />
      <param name="initial_pose_x" value="$(arg tb3_2_init_x)"/>
      <param name="initial_pose_y" value="$(arg tb3_2_init_y)"/>
      <param name="initial_pose_a" value="$(arg tb3_2_init_a)"/>

      <param name="odom_frame_id"  value="tb3_2/odom"/>
      <param name="base_frame_id"  value="tb3_2/base_footprint"/>

      <!-- Use the single map server -->
      <remap from="static_map" to="/static_map"/>

    </node>

    <!-- Teleop Nodes -->
    <!-- <node pkg="joy" type="joy_node" name="joy_node">
      <param name="dev" value="$(arg tb3_2_joy_dev)" />
      <param name="deadzone" value="0.1" />
      <param name="autorepeat_rate" value="10" />
    </node>
    
    <node pkg="teleop_twist_joy" name="teleop_twist_joy" type="teleop_node">
      <rosparam command="load" file="$(arg joy_config_file)" />
    </node> -->
  
  </group>

  <!-- RVIZ configured for tb3_0/1 -->
  <node pkg="rviz" type="rviz" name="rviz" required="true"
         args="-d $(find multi_turtlebot3_navigation)/rviz/three_tb3_one_map_threegoals.rviz"/>
  
</launch>

Last updated