Contents
Understanding log messages
Errors when using the package
- Failed to extract kdl tree from xml robot description
- At construction time the robot state publisher tries to construct a KDL Tree to represent the robot kinematics. This tree is constructed from an xml Robot Description Format [[urdf/Overview|(URDF)]. The above error message occurs when the parsing of the urdf fails. If you didn't change anything to the urdf, then most likely this error means the urdf was not found at all. By default the robot state publisher looks for the urdf on the parameter server, under "robot_description_new". To check if the urdf exists on the parameter server, type:
$ rosparam get robot_description_new
- At construction time the robot state publisher tries to construct a KDL Tree to represent the robot kinematics. This tree is constructed from an xml Robot Description Format [[urdf/Overview|(URDF)]. The above error message occurs when the parsing of the urdf fails. If you didn't change anything to the urdf, then most likely this error means the urdf was not found at all. By default the robot state publisher looks for the urdf on the parameter server, under "robot_description_new". To check if the urdf exists on the parameter server, type:
- Did not find root of tree
- This error means that the KDL Tree that was constructed from the urdf (see above error message) is empty, and therefore does not have a root link. See the above error message for troubleshooting.
The robot state publisher does not work
Is the robot state publisher still running?
To check if the robot state publisher is running, you should find out on what the name of the node is. The node name depends on the name you specified in the launch file:
... <node pkg="robot_state_publisher" type="state_publisher" name="my_name"> ...
Look for the name="..." field. In this example, the node name is 'my_name'. To verify if the node is running, type:
$ rosnode ping my_name
Is the robot state publisher receiving input?
The robot state publisher listens for joint angles in the topic 'joint_states'. To check if any messages are sent on this topic, type:
$ rostopic hz joint_states
You should see an average publish rate being displayed. If not, the input is not published.
Is the robot state publisher sending output?
The robot state publisher sends output on the topic of the transform library [tf|(tf)]. To verify if anything is sent on this topic, type:
$ rostopic hz tf_message
You should see an average publish rate being displayed. If not, the output is not published. However, if the average rate is not zero, you're still not sure that the robot state publisher is sending these messages; they could as well come from another source in the system sending out messages to tf. You'll have to look at the content of the message to see if it comes from the robot state publisher. You should know which frames are supposed to be published by the robot state publisher. Suppose you expect the frame 'my_frame' to be published, you can verify this by typing:
$ rostopic echo tf_message | grep my_frame