psr_21-22 icon indicating copy to clipboard operation
psr_21-22 copied to clipboard

Problem Launching Multiple Robots

Open Analtino2021 opened this issue 3 years ago • 6 comments

Good nigth teatcher @miguelriemoliveira I'm not being able to launch multiple robots. I can change the color from the command line but not the name

Captura de ecrã de 2022-01-21 19-12-31

here is my bringup.launch:

<launch>
  <arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
  <arg name="player_name" default = "p_amartinho"/>
  <arg name="player_color" default="Yellow" />
  <arg name="x_pos" default="0.0"/>
  <arg name="y_pos" default="-1.5"/>
  <arg name="z_pos" default="0.0"/>

  <group ns= "$(arg player_name)">
    <param name="tf_prefix" value="$(arg player_name)"></param>
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find p_amartinho_description)/urdf/player.urdf.xacro' player_name:=$(arg player_name) player_color:=$(arg player_color)"/>
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>
  </group>
<!--   include do spawn.launch -->
  <include file="$(find p_amartinho_bringup)/launch/spawn.launch">
    <arg name="player_name" value="$(arg player_name)"/>
    <arg name="x_pos" value="$(arg x_pos)"/>
    <arg name="y_pos" value="$(arg y_pos)"/>
    <arg name="z_pos" value="$(arg z_pos)"/>
  </include>

<!--       include do visualize.launch -->
    <include file="$(find p_amartinho_bringup)/launch/visualize.launch">
    </include>

    <!--     include do teleop.launch -->
<!--     <group ns= "$(arg player_name)"> -->
<!--         <node pkg="rqt_robot_steering" type="rqt_robot_steering" name="teleop_rqt" output="screem"> -->
<!--             <param name="default_topic" value="/$(arg player_name)/cmd.vel"></param> -->
<!--         </node> -->

<!--     </group> -->
</launch>

Analtino2021 avatar Jan 21 '22 19:01 Analtino2021

Hi @Analtino2021 ,

can you post your urdf.xacro? I think you may be missing the arg player_name there.

miguelriemoliveira avatar Jan 21 '22 20:01 miguelriemoliveira

This is my player.urdf.xacro

<?xml version="1.0" ?>
<robot name="p_amartinho" xmlns:xacro="http://ros.org/wiki/xacro">
  <!--  Xacro description of turtlebot robot waffle pi used to play team hunt.-->
  <!-- Analtino Martinho-->
  <!--  PSR, January 2021-->

  <!--Args are local, properties are global, so we copy the values of the arguments to the properties-->
  <xacro:arg name="player_name" default="p_amartinho" />
  <xacro:arg name="player_color" default="Yellow" /> <!-- e.g. Red, Orange. Must exist in Gazebo/Colors and be defined in properties.xacro.-->

  <!--Properties are global so they can be viewed from inside the included xacros-->
  <!--  args are used with $(arg arg_name), properties are used as ${property_name}-->
  <xacro:property name="player_name" value="$(arg player_name)"/>
  <xacro:property name="player_color" value="$(arg player_color)"/>

  <!-- Include other files-->
  <xacro:include filename="$(find ${player_name}_description)/urdf/properties.xacro"/>

  <!--  <xacro:include filename="$(find ${player_name}_description)/urdf/player.gazebo.xacro"/>-->
  <xacro:include filename="$(find ${player_name}_description)/urdf/player.gazebo.macro.xacro"/>
  <xacro:gazebo_macro player_color="${player_color}" laser_visual="true" camera_visual="false" imu_visual="true"/>

<!-- (...) -->
  <link name="base_footprint"/>

    <joint name="base_joint" type="fixed">
      <parent link="base_footprint"/>
      <child link="base_link" />
      <origin xyz="0 0 0.010" rpy="0 0 0"/>
    </joint>

    <link name="base_link">
      <visual>
        <origin xyz="-0.064 0 0.0" rpy="0 0 0"/>
        <geometry>
          <mesh filename="package://turtlebot3_description/meshes/bases/waffle_pi_base.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="light_black"/>
      </visual>

      <collision>
        <origin xyz="-0.064 0 0.047" rpy="0 0 0"/>
        <geometry>
          <box size="0.266 0.266 0.094"/>
        </geometry>
      </collision>

      <inertial>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <mass value="1.3729096e+00"/>
        <inertia ixx="8.7002718e-03" ixy="-4.7576583e-05" ixz="1.1160499e-04"
                 iyy="8.6195418e-03" iyz="-3.5422299e-06"
                 izz="1.4612727e-02" />
      </inertial>
    </link>

    <joint name="wheel_left_joint" type="continuous">
      <parent link="base_link"/>
      <child link="wheel_left_link"/>
      <origin xyz="0.0 0.144 0.023" rpy="-1.57 0 0"/>
      <axis xyz="0 0 1"/>
    </joint>

    <link name="wheel_left_link">
      <visual>
        <origin xyz="0 0 0" rpy="1.57 0 0"/>
        <geometry>
          <mesh filename="package://turtlebot3_description/meshes/wheels/left_tire.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="dark"/>
      </visual>

      <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
          <cylinder length="0.018" radius="0.033"/>
        </geometry>
      </collision>

      <inertial>
        <origin xyz="0 0 0" />
        <mass value="2.8498940e-02" />
        <inertia ixx="1.1175580e-05" ixy="-4.2369783e-11" ixz="-5.9381719e-09"
                 iyy="1.1192413e-05" iyz="-1.4400107e-11"
                 izz="2.0712558e-05" />
        </inertial>
    </link>

    <joint name="wheel_right_joint" type="continuous">
      <parent link="base_link"/>
      <child link="wheel_right_link"/>
      <origin xyz="0.0 -0.144 0.023" rpy="-1.57 0 0"/>
      <axis xyz="0 0 1"/>
    </joint>

    <link name="wheel_right_link">
      <visual>
        <origin xyz="0 0 0" rpy="1.57 0 0"/>
        <geometry>
          <mesh filename="package://turtlebot3_description/meshes/wheels/right_tire.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="dark"/>
      </visual>

      <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
          <cylinder length="0.018" radius="0.033"/>
        </geometry>
      </collision>

      <inertial>
        <origin xyz="0 0 0" />
        <mass value="2.8498940e-02" />
        <inertia ixx="1.1175580e-05" ixy="-4.2369783e-11" ixz="-5.9381719e-09"
                 iyy="1.1192413e-05" iyz="-1.4400107e-11"
                 izz="2.0712558e-05" />
        </inertial>
    </link>

    <joint name="caster_back_right_joint" type="fixed">
      <parent link="base_link"/>
      <child link="caster_back_right_link"/>
      <origin xyz="-0.177 -0.064 -0.004" rpy="-1.57 0 0"/>
    </joint>

    <link name="caster_back_right_link">
      <collision>
        <origin xyz="0 0.001 0" rpy="0 0 0"/>
        <geometry>
          <box size="0.030 0.009 0.020"/>
        </geometry>
      </collision>

      <inertial>
        <origin xyz="0 0 0" />
        <mass value="0.005" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0"
                 izz="0.001" />
      </inertial>
    </link>

    <joint name="caster_back_left_joint" type="fixed">
      <parent link="base_link"/>
      <child link="caster_back_left_link"/>
      <origin xyz="-0.177 0.064 -0.004" rpy="-1.57 0 0"/>
    </joint>

    <link name="caster_back_left_link">
      <collision>
        <origin xyz="0 0.001 0" rpy="0 0 0"/>
        <geometry>
          <box size="0.030 0.009 0.020"/>
        </geometry>
      </collision>

      <inertial>
        <origin xyz="0 0 0" />
        <mass value="0.005" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0"
                 izz="0.001" />
      </inertial>
    </link>

    <joint name="imu_joint" type="fixed">
      <parent link="base_link"/>
      <child link="imu_link"/>
      <origin xyz="0.0 0 0.068" rpy="0 0 0"/>
    </joint>

    <link name="imu_link"/>

    <joint name="scan_joint" type="fixed">
      <parent link="base_link"/>
      <child link="base_scan"/>
      <origin xyz="-0.064 0 0.122" rpy="0 0 0"/>
    </joint>

    <link name="base_scan">
      <visual>
        <origin xyz="0 0 0.0" rpy="0 0 0"/>
        <geometry>
          <mesh filename="package://turtlebot3_description/meshes/sensors/lds.stl" scale="0.001 0.001 0.001"/>
        </geometry>
        <material name="dark"/>
      </visual>

      <collision>
        <origin xyz="0.015 0 -0.0065" rpy="0 0 0"/>
        <geometry>
          <cylinder length="0.0315" radius="0.055"/>
        </geometry>
      </collision>

      <inertial>
        <mass value="0.114" />
        <origin xyz="0 0 0" />
        <inertia ixx="0.001" ixy="0.0" ixz="0.0"
                 iyy="0.001" iyz="0.0"
                 izz="0.001" />
      </inertial>
    </link>

    <joint name="camera_joint" type="fixed">
      <origin xyz="0.073 -0.011 0.084" rpy="0 0 0"/>
      <parent link="base_link"/>
      <child link="camera_link"/>
    </joint>

    <link name="camera_link">
      <collision>
        <origin xyz="0.005 0.011 0.013" rpy="0 0 0"/>
        <geometry>
          <box size="0.015 0.030 0.027"/>
        </geometry>
      </collision>
    </link>

    <joint name="camera_rgb_joint" type="fixed">
      <origin xyz="0.003 0.011 0.009" rpy="0 0 0"/>
      <parent link="camera_link"/>
      <child link="camera_rgb_frame"/>
    </joint>
    <link name="camera_rgb_frame"/>

    <joint name="camera_rgb_optical_joint" type="fixed">
      <origin xyz="0 0 0" rpy="-1.57 0 -1.57"/>
      <parent link="camera_rgb_frame"/>
      <child link="camera_rgb_optical_frame"/>
    </joint>
    <link name="camera_rgb_optical_frame"/>


</robot>

Analtino2021 avatar Jan 21 '22 20:01 Analtino2021

I think the error is here. You have this:

<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find p_amartinho_description)/urdf/player.urdf.xacro' player_name:=$(arg player_name) player_color:=$(arg player_color)"/>

and I have this:

<param name="robot_description" command="$(find xacro)/xacro --inorder $(find p_amartinho_description)/urdf/player.urdf.xacro player_name:=$(arg player_name) player_color:=$(arg player_color)"/>

Notice I removed two '

miguelriemoliveira avatar Jan 21 '22 20:01 miguelriemoliveira

mine was not working without it when i had only player_color

Analtino2021 avatar Jan 21 '22 20:01 Analtino2021

keeps giving me the same error

Captura de ecrã de 2022-01-21 21-01-06

Analtino2021 avatar Jan 21 '22 21:01 Analtino2021

OK, still not sure what's wrong.

In your player.urdf.xacro you are calling the macro player.gazebo.macro.xacro

<!--  <xacro:include filename="$(find ${player_name}_description)/urdf/player.gazebo.xacro"/>-->
  <xacro:include filename="$(find ${player_name}_description)/urdf/player.gazebo.macro.xacro"/>
  <xacro:gazebo_macro player_color="${player_color}" laser_visual="true" camera_visual="false" imu_visual="true"/>

Can you try without the macro, i.e., uncommenting the first line and commenting the last two.

miguelriemoliveira avatar Jan 22 '22 10:01 miguelriemoliveira