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

Failed to build tree: child link of joint not found

asked 2020-06-05 11:29:47 -0600

dimitri gravatar image

updated 2020-06-05 11:30:01 -0600

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?

edit retag flag offensive close merge delete


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?

Weasfas gravatar image Weasfas  ( 2020-06-06 05:30:17 -0600 )edit

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.

dimitri gravatar image dimitri  ( 2020-06-06 07:14:11 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2020-06-06 08:04:41 -0600

Weasfas gravatar image

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
edit flag offensive delete link more


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 .<path>/parser <path>my_robot.urdf and it worked.

dimitri gravatar image dimitri  ( 2020-06-07 04:04:11 -0600 )edit

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 =).

Weasfas gravatar image Weasfas  ( 2020-06-07 04:49:18 -0600 )edit

Question Tools



Asked: 2020-06-05 11:29:47 -0600

Seen: 863 times

Last updated: Jun 06 '20