Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Multirobot + laser rviz

I have some troubles to see the laser_scan in a simulation with two robots which have the same description file (urdf) in different group with different namespace.

I launch both in gazebo and works quite good, the robots looks ok but when I launch rviz to see the laser, I select the fixed frame and the target frame of the robot one, I select the robot_description of the robot one and the tfprefix of the robot one. The tf looks great.

I see the robot one in the center of the visual space in rviz. When I try to see the laser_scan, I select the correct topic but I nothing appear, the error is the next:

Transform [sender=/gazebo]
For frame [hokuyo_laser_link]: Frame [hokuyo_laser_link] does not exist

I think the problem come to rviz. Rviz look for the frame described in the urdf robot description and not look for the tf_prefix.

Here my launch file and my tree of tf:

<launch>
  <!-- send summit_xl.urdf to param server -->
  <group ns="summit_one">
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 0.0 -y 0.0 -z 0.5 -model summit_xl_one" respawn="false" output="screen">        
      </node>

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_one_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <remap from="hokuyo_laser_link" to="summit_one/hokuyo_laser_link" />
        <param name="tf_prefix" type="string" value="summit_one" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_one" />

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/>   
  </group>

  <group ns="summit_two">     
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 2.0 -y 2.0 -z 0.5 -model summit_xl_two" respawn="false" output="screen" />

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_two_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <!--remap from="joint_states" to="summit_one/joint_states" /-->
        <param name="tf_prefix" type="string" value="summit_two" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_two" />  

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/> 
  </group> 

</launch>

tf
tf:
http://tinypic.com/view.php?pic=xngh01&s=6

Someone who has the same problem? What should I do with the ghost frames? Is there any way to tell what frame rviz should choose?

Thanks a lot.

Multirobot + laser rviz

I have some troubles to see the laser_scan in a simulation with two robots which have the same description file (urdf) in different group with different namespace.

I launch both in gazebo and works quite good, the robots looks ok but when I launch rviz to see the laser, I select the fixed frame and the target frame of the robot one, I select the robot_description of the robot one and the tfprefix of the robot one. The tf looks great.

I see the robot one in the center of the visual space in rviz. When I try to see the laser_scan, I select the correct topic but I nothing appear, the error is the next:

Transform [sender=/gazebo]
For frame [hokuyo_laser_link]: Frame [hokuyo_laser_link] does not exist

I think the problem come to rviz. Rviz look for the frame described in the urdf robot description and not look for the tf_prefix.

Here my launch file and my tree of tf:

<launch>
  <!-- send summit_xl.urdf to param server -->
  <group ns="summit_one">
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 0.0 -y 0.0 -z 0.5 -model summit_xl_one" respawn="false" output="screen">        
      </node>

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_one_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <remap from="hokuyo_laser_link" to="summit_one/hokuyo_laser_link" />
        <param name="tf_prefix" type="string" value="summit_one" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_one" />

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/>   
  </group>

  <group ns="summit_two">     
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 2.0 -y 2.0 -z 0.5 -model summit_xl_two" respawn="false" output="screen" />

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_two_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <!--remap from="joint_states" to="summit_one/joint_states" /-->
        <param name="tf_prefix" type="string" value="summit_two" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_two" />  

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/> 
  </group> 

</launch>

tf
tf:
http://tinypic.com/view.php?pic=xngh01&s=6

Someone who has the same problem? What should I do with the ghost frames? Is there any way to tell what frame rviz should choose?

Thanks a lot.

Multirobot + laser rviz

I have some troubles to see the laser_scan in a simulation with two robots which have the same description file (urdf) in different group with different namespace.

I launch both in gazebo and works quite good, the robots looks ok but when I launch rviz to see the laser, I select the fixed frame and the target frame of the robot one, I select the robot_description of the robot one and the tfprefix of the robot one. The tf looks great.

I see the robot one in the center of the visual space in rviz. When I try to see the laser_scan, I select the correct topic but I nothing appear, the error is the next:

Transform [sender=/gazebo]
For frame [hokuyo_laser_link]: Frame [hokuyo_laser_link] does not exist

I think the problem come to rviz. Rviz look for the frame described in the urdf robot description and not look for the tf_prefix.

Here my launch file and my tree of tf:

<launch>
  <!-- send summit_xl.urdf to param server -->
  <group ns="summit_one">
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 0.0 -y 0.0 -z 0.5 -model summit_xl_one" respawn="false" output="screen">        
      </node>

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_one_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <remap from="hokuyo_laser_link" to="summit_one/hokuyo_laser_link" />
        <param name="tf_prefix" type="string" value="summit_one" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_one" />

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/>   
  </group>

  <group ns="summit_two">     
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 2.0 -y 2.0 -z 0.5 -model summit_xl_two" respawn="false" output="screen" />

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_two_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <!--remap from="joint_states" to="summit_one/joint_states" /-->
        <param name="tf_prefix" type="string" value="summit_two" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_two" />  

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/> 
  </group> 

</launch>

tf
tf:
http://tinypic.com/view.php?pic=xngh01&s=6

Someone who has the same problem? What should I do with the ghost frames? Is there any way to tell what frame rviz should choose?

Thanks a lot.

Multirobot + laser rviz

I have some troubles to see the laser_scan in a simulation with two robots which have the same description file (urdf) in different group with different namespace.

I launch both in gazebo and works quite good, the robots looks ok but when I launch rviz to see the laser, I select the fixed frame and the target frame of the robot one, I select the robot_description of the robot one and the tfprefix of the robot one. The tf looks great.

I see the robot one in the center of the visual space in rviz. When I try to see the laser_scan, I select the correct topic but I nothing appear, the error is the next:

Transform [sender=/gazebo]
For frame [hokuyo_laser_link]: Frame [hokuyo_laser_link] does not exist

I think the problem come to rviz. Rviz look for the frame described in the urdf robot description and not look for the tf_prefix.

Here my launch file and my tree of tf:

<launch>
  <!-- send summit_xl.urdf to param server -->
  <group ns="summit_one">
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 0.0 -y 0.0 -z 0.5 -model summit_xl_one" respawn="false" output="screen">        
      </node>

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_one_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <remap from="hokuyo_laser_link" to="summit_one/hokuyo_laser_link" />
        <param name="tf_prefix" type="string" value="summit_one" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_one" />

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/>   
  </group>

  <group ns="summit_two">     
      <param name="robot_description" textfile="$(find summit_xl_description)/urdf/summit_xl.urdf" />
      <node name="spawn_summit" pkg="gazebo" type="spawn_model" args="-urdf -param robot_description -x 2.0 -y 2.0 -z 0.5 -model summit_xl_two" respawn="false" output="screen" />

      <!-- Controller manager parameters -->
      <param name="pr2_controller_manager/mechanism_statistics_publish_rate" value="1.0" />
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />

      <!-- Robot state publisher -->
      <node pkg="robot_state_publisher" type="state_publisher" name="summit_two_state_publisher" output="screen">
        <param name="publish_frequency" type="double" value="50.0" />
        <!--remap from="joint_states" to="summit_one/joint_states" /-->
        <param name="tf_prefix" type="string" value="summit_two" />
      </node>

      <!-- Diagnostics -->
      <node pkg="pr2_mechanism_diagnostics" type="pr2_mechanism_diagnostics" name="pr2_mechanism_diagnostics_two" />  

      <rosparam file="$(find summit_xl_ctrl)/summit_xl_ctrl.yaml" command="load"/>
      <param name="pr2_controller_manager/joint_state_publish_rate" value="100.0" />
      <node name="summit_xl_ctrl" pkg="pr2_controller_manager" type="spawner" args="summit_xl_ctrl" respawn="false" output="screen"/>
      <node pkg="summit_xl_odometry" type="summit_xl_odometry" name="summit_xl_odometry_node" output="screen"/> 
  </group> 

</launch>

tf
tf:
http://tinypic.com/view.php?pic=xngh01&s=6

Someone who has the same problem? What should I do with the ghost frames? Is there any way to tell what frame rviz should choose?

Thanks a lot.