calling xacro:macro from within xacro:macro
can I include and call an xacro:macro from within an xacro:macro?
alternatively, can I pass a variable to an xacro if it is not an xacro:macro?
ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
can I include and call an xacro:macro from within an xacro:macro?
alternatively, can I pass a variable to an xacro if it is not an xacro:macro?
For question 1, yes you can. Recursive macros are allowed.
To answer my own question #1 - Yes, macros can be recursive. My error was that I put the includes for the referenced xacro files under the xacro:macro name="..." line.
The correct way is:
<robot xmlns:xacro="http://ros.org/wiki/xacro">
<include filename="$(find abb_common)/urdf/irb_5400_macro.xacro" />
<xacro:macro name="generate_robot" params="robot_name" >
<xacro:irb_5400 prefix="${robot_name}"/>
Make sure all the includes are above the macro declaration!
Asked: 2012-05-11 11:11:56 -0500
Seen: 1,495 times
Last updated: May 11 '12
xacro processing in ROS 2 YAML launch files (or XML)?
rviz ignores origin if it has decimal values
Xacro files editing with Eclipse
Catkin_make problem with xacro when installing gazebo
How to publish transform from odom to base_link?
Failed converting xacro to urdf
ROS Noetic xacro issue - Cannot load command parameter [robot_description] returned with code [2]
For question2, if it is not a xacro:macro, what is it?
xacro:macro refers to an xacro that contains a macro. In my answer below, I include an xacro file "irb_5400_macro.xacro" that contains the macro "irb_5400". Then I call that xacro:macro from THIS file. An xacro file can also just contain a set of commands, or even constants (like an include file).