Ask Your Question

check_urdf fails stating no link elements found in urdf file

asked 2020-06-11 05:24:46 -0500

wtt gravatar image


I am working on my own robot model made up of a wheel and a body with the body considered as my base_link. I decided to use xacro files to build the robot. Originally I created one file name "skeleton.xacro" with all the macro stuff inside it and the other named "wheel_robot.xacro" to build the robot that includes the "skeleton.xacro" files. When i run check_urdf on the files there is an error shows no link elements found in urd f file. I tried to do it without xacro it works showing the parent and child link perfectly. The file named "wheel_robot_works.xacro" is the file that is successful. Is there any mistake or error in my skeleton.xacro file or wheel_robot.xacro file? Am i including skeleton.xacro file into wheel_robot.xacro file correctly as it seems to be the problem here?

Thank you in advance for the assists!

The files are:


<?xml version="1.0"?>

<robot name="wheel_robot" xmlns:xacro="">

<xacro:macro name="link_mesh" params="name origin_xyz origin_rpy meshfile meshscale mass ixx ixy ixz iyy iyz izz" >
  <link name="${name}">
      <mass value="${mass}" />
      <origin rpy="${origin_rpy}" xyz="${origin_xyz}" />
      <inertia ixx="${ixx}" ixy="${ixy}" ixz="${ixz}" iyy="${iyy}" iyz="${iyz}" izz="${izz}" />
      <origin rpy="${origin_rpy}" xyz="${origin_xyz}" />
        <mesh filename="${meshfile}" scale="${meshscale}" />
      <origin rpy="${origin_rpy}" xyz="${origin_xyz}" />
        <mesh filename="${meshfile}" scale="${meshscale}" />

<xacro:macro name="add_joint" params="name type axis_xyz origin_rpy origin_xyz parent child" >   <joint name="${name}" type="${type}">
    <axis xyz="${axis_xyz}"/>
    <limit effort="1000.0" velocity="0.5" />
    <origin rpy="${origin_rpy}" xyz="${origin_xyz}" />
    <parent link="${parent}" />
    <child link="${child}" />   </joint> </xacro:macro>



<?xml version="1.0"?>

<robot name="wheel_robot" xmlns:xacro="">

<xacro:include filename="$(find wheel_robot)/urdf/skeleton.xacro" />

<xacro:link_mesh    name="base_link"
            origin_rpy="0 0 0" origin_xyz="0 0 0"
            meshscale="0.001 0.001 0001" 
            ixx="0.0976" ixy="0.0" ixz="0.0" iyy="0.07809" iyz="0.00007541" izz="0.1037" />

<xacro:add_joint    name="base_link_wheel" type="continuous"
        axis_xyz="0 1 0"
        origin_rpy="0 0 0" origin_xyz="0.100 0.080 -0.035"
        parent="base_link" child="wheel" />

<xacro:link_mesh    name="wheel"
            origin_rpy="0 -1.5708 0" origin_xyz="0 0 0"
            meshscale="0.001 0.001 0.001"
            ixx="0.00009240" ixy="0.0" ixz="0.0" iyy="0.000009240" iyz="0.0" izz="0.0001556" />



<?xml version="1.0"?>

<robot name="wheel_robot" xmlns:xacro="">

  <link name="base_link">
      <mass value="11.65" />
      <origin ...
edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2020-06-11 15:41:39 -0500

David Lu gravatar image

Make sure you are calling xacro before doing check_urdf. If you run check_urdf wheel_robots.xacro it won't run xacro for you. Check out this tutorial.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2020-06-11 05:24:46 -0500

Seen: 438 times

Last updated: Jun 11 '20