Rosanswers logo

I am trying to parse the urdf file of the ur3e robot (in order to in the end create kdl tree from it and get jacobians transforms and stuff). I did the same thing as described in Tutorial. When I tried to parse the ur3e_robot.urdf.xacro file with it i got the following error:

[ERROR] [1591372211.741488524]: Failed to build tree: child link [base_link] of joint [world_joint] not found
[ERROR] [1591372211.741628307]: Failed to parse urdf file

I seems that "URDF models start with a link at the root, but In MoveIt, models start with a joint." according to this. Maybe that is the reason why it can't be parsed? Anyone an idea how to do this?

Originally posted by dimitri on ROS Answers with karma: 54 on 2020-06-05

Post score: 0

Original comments

Comment by Weasfas on 2020-06-06:
Hi @dimitri,

I think the parse is failing because the base_link frame is not found. Are you sure you have a proper tf_tree with a frame named "base_link". Can you run rosrun rqt_tf_tree rqt_tf_tree and upload its output?

Comment by dimitri on 2020-06-06:
I am not sure if I understand you correctly but I cannot run this command since the roscore doesn't even start. I compile the parser as described here. Then I try to run it exactly as described in the same tutorial but I get the above mentioned error. I give the file ur3e_robot.urdf.xacro that you can find here text. The base_link is contained in the file ur3e.urdf.xacro that is loaded by the previously mentioned file.


1 Answer 1


Rosanswers logo

Ok, I will explain myself better =). What you are attempting to do is parsing a Xacro file with URDF, this throws an error because the xacro file only contains instantiations and macros. Hence, if you provide only the xacro, the parsing node will throw an error since the URDF is not generated. You need to generate the URDF file from the Xacro (That will contain all links and joints properly set) in order to parse it with the node and give it as input to the node you are using.

As an alternative way to provide the URDF you can use a launch file calling xacro and in you parsing node, read from the robot_description parameter in the ROS parameter server.

This should do what you want:

rosrun xacro xacro -o ur3e_robot.urdf ur3e_robot.urdf.xacro

rosrun testbot_description parser /path/to/ur3e_robot.urdf

Originally posted by Weasfas with karma: 1695 on 2020-06-06

This answer was ACCEPTED on the original site

Post score: 2

Original comments

Comment by dimitri on 2020-06-07:
Thank you! That was indeed the problem. Though the second command line doesn't work for me as it says " package 'testbot_description' not found". I did it directly the way described in the Tutorial ./parser my_robot.urdf and it worked.

Comment by Weasfas on 2020-06-07:
Glad it you managed to solve the problem. The second command was refering to you catkin package. Since you were following the tutorial I thought you had the testbot_description package it mentioned. You can change that name for wahtever package name you have in your workspace =).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.