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:
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.
Ok, at last I find the solution. When the tree of tf works fine, we need to lauch rviz node with param like this: <param name="tf_prefix" type="string" value="summit_one" /> and another rviz node with <param name="tf_prefix" type="string" value="summit_two" />