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 -0600
Seen: 1,592 times
Last updated: May 11 '12
Using XACRO for Generating URDF Files
How to check xacro syntax like check_urdf?
File conversion from *.urdf to *.xacro.
how to convert xacro file to urdf file?
Robot looks different in RVIZ and Gazebo
trying to play back images from multiple cameras in rxbag causes both videos to flip between cameras
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).