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

XACRO Macro Noetic not working

asked 2021-02-22 05:14:16 -0600

vonunwerth gravatar image

Hi, I'm facing issues with xacro macros in ROS noetic. I have the following robot description (or a simplified version) containing one xacro macro. After the definition of the macro it is called by <robot_macro/>

Normally i have this macro defined in an other file and include it in a main xacro file, where i include a lot of macros and then build up the robot using those macros.

<?xml version="1.0"?>
<robot name="robot1" xmlns:xacro="">
    <xacro:macro name="robot_macro">
        <link name="robot1_base_link"/>
        <link name="beam_link">
                <origin xyz="0.40 0 0.02" rpy="0 0 0" />
                <mass value="2" />
                <inertia ixx="0.003" ixy="0" ixz="0" iyy="0.09" iyz="0" izz="0.09" />
                <origin xyz="0 0 0" rpy="0 0 0" />
                    <cylinder length="0.6" radius="0.2"/>
                <material name="white">
                    <color rgba="1 1 1 1"/>
                <origin xyz="0.4 0 0.02" rpy="0 0 0" />
                    <cylinder length="0.6" radius="0.2"/>
        <joint name="beam_joint" type="fixed">
            <origin xyz="0 0 0" rpy="0 0 0" />
            <parent link="robot1_base_link" />
            <child link="beam_link" />
            <axis xyz="0 0 0" />

If i load the robot description in Gazebo, i get the error message No link elements found in urdf. At first i thought it could be that the mesh files can not be found. So i decided to switch to a simple conversion from xacro to urdf for debugging my problem. But if i convert this xacro file to a urdf file using rosrun xacro xacro -o model.urdf model.xacro the resulting urdf contains no links and joint:

<?xml version="1.0" ?>
<!-- =================================================================================== -->
<!-- |    This document was autogenerated by xacro from mira3d.xacro                   | -->
<!-- |    EDITING THIS FILE BY HAND IS NOT RECOMMENDED                                 | -->
<!-- =================================================================================== -->
<robot name="robot1">

If i remove the two xacro macro lines around the links and joint (and the call of the macro), its working as expected. I am pretty sure, i used the xacro description like it is in Kinetic and Melodic before and had no problems with it. I also think the macro looks like the example on

Can you see any issue with it or is there any change in xacro macros in noetic?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2021-02-22 05:32:05 -0600

gvdhoorn gravatar image
<robot [..]>

I don't believe this is supposed to work like this.

Shouldn't it be at least:

<robot [..]>
edit flag offensive delete link more



This must have changed in Noetic. In Melodic, I had macros that worked without the xacro namespace, but I needed to add them when I went to Noetic.

Brian Erickson gravatar image Brian Erickson  ( 2021-02-28 23:48:48 -0600 )edit

Actually, this has been deprecated since at least Jade. See wiki/xacro - Deprecated Syntax.

And ros/xacro#79. That's from 2015.

gvdhoorn gravatar image gvdhoorn  ( 2021-03-01 02:27:17 -0600 )edit

Question Tools

1 follower


Asked: 2021-02-22 05:14:16 -0600

Seen: 1,918 times

Last updated: Feb 22 '21