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

Revision history [back]

To me, it looks like the issue is that your joint_state_publisher is crashing due to a malformed robot URDF. See the following snippet from your error log:

xml.parsers.expat.ExpatError: unbound prefix: line 3, column 4
[joint_state_publisher-3] process has died

I was unable to review your URDF (your links don't have the correct share-permissions set), but I'd check there first. I'm surprised that the Setup Assistant and rviz were able to run if the URDF is bad, though...

You can double-check whether the joint_state_publisher is running or not by using rostopic list. You can also validate your URDF as shown here:

rosrun urdf check_urdf     myrobot.urdf  (for fuerte)
rosrun urdfdom check_urdf  myrobot.urdf  (for groovy)
click to hide/show revision 2
Added specific fixes after reviewing URDF file.

To me, it looks like the issue is that your joint_state_publisher is crashing due to a malformed robot URDF. See the following snippet from your error log:

xml.parsers.expat.ExpatError: unbound prefix: line 3, column 4
[joint_state_publisher-3] process has died

I was unable to review your able to reproduce the error using the tx60l.urdf supplied in your links. The issue here is with the <gazebo> section in your URDF. The joint_state_publisher uses a python minidom XML parser, which is more picky about XML syntax than the TinyXML C++ parser used in much of the rest of ROS (including the check_urdf test you ran earlier). Even though the TinyXML parser can handle your URDF, the minidom parser requires a little bit more help...

To fix the error, you have two options:

  1. remove the <gazebo> section from your URDF
  2. or update the URDF (your links don't have the correct share-permissions set), but I'd check there first. I'm surprised that the Setup Assistant and rviz to a "more correct" format:
    1. move the <gazebo> section inside the <robot> section
    2. add xmlns qualifiers to the robot tag as shown:

<robot name="TX60L">
       xmlns:controller="http://playerstage.sourceforge.net/gazebo/xmlschema/#controller"
       xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface">
  <gazebo>
    ...
  </gazebo>
  <link name="base_link">
    ...
</robot>

Using these changes, I was able to get the joint_state_publisher to run without errors. I expect this will also fix the issue you were able to run if the URDF is bad, though...having with missing interactive markers.

You can double-check whether the joint_state_publisher is running or not by using rostopic list. You can also validate your URDF as shown here:

rosrun urdf check_urdf     myrobot.urdf  (for fuerte)
rosrun urdfdom check_urdf  myrobot.urdf  (for groovy)