Skip to content

Instantly share code, notes, and snippets.

@TheProjectsGuy
Created December 17, 2018 06:29
Show Gist options
  • Select an option

  • Save TheProjectsGuy/a9a6a438c18b14b27237987cc114716e to your computer and use it in GitHub Desktop.

Select an option

Save TheProjectsGuy/a9a6a438c18b14b27237987cc114716e to your computer and use it in GitHub Desktop.
XACRO file code for XACRO tutorial in ROS
<?xml version="1.0"?>
<robot name="xacro_bot1" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- Parameters -->
<xacro:property name="a" value="0.2" />
<!-- Links to be added -->
<!-- Add a link -->
<xacro:macro name="add_link" params="length name parent axis *origin">
<!-- Physical link -->
<link name="${name}_link">
<visual>
<origin xyz="0.0 0.0 ${length/2}"/>
<geometry>
<box size="${a} ${a} ${length}"/>
</geometry>
</visual>
<material name="red">
<color rgba="1.0 0.0 0.0 0.0"/>
</material>
</link>
<!-- Joint between parent and link -->
<joint name="${name}_joint" type="revolute">
<xacro:insert_block name="origin" />
<parent link="${parent}" />
<child link="${name}_link" />
<axis xyz="${axis}" />
<limit lower="${-pi}" upper="${pi}" effort="30" velocity="10" />
</joint>
</xacro:macro>
<!-- Base link -->
<link name="base_link">
<visual>
<origin xyz="0 0 0.25" />
<geometry>
<box size="0.5 0.5 0.5" />
</geometry>
</visual>
</link>
<!-- Link 1 -->
<xacro:property name="l1_length" value="0.625" />
<xacro:add_link name="l1" length="${l1_length}" parent="base_link" axis="0 1 0" >
<origin xyz="0 0 0.5" rpy="0.0 0.0 0.0"/>
</xacro:add_link>
<!-- Link 2 -->
<xacro:property name="l2_length" value="0.625" />
<xacro:add_link name="l2" length="${l2_length}" parent="l1_link" axis="1 0 0">
<origin xyz="0.0 0.0 ${l1_length}"/>
</xacro:add_link>
<!-- Link 3 -->
<xacro:property name="l3_length" value="0.5" />
<xacro:add_link name="l3" length="${l3_length}" parent="l2_link" axis="0 0 1" >
<origin xyz="0.0 0.0 ${l2_length}"/>
</xacro:add_link>
<!-- Link 4 -->
<xacro:property name="l4_length" value="1" />
<xacro:add_link name="l4" length="${l4_length}" parent="l3_link" axis="1 0 0" >
<origin xyz="0.0 0.0 ${l3_length}"/>
</xacro:add_link>
<!-- Link 5 -->
<xacro:property name="l5_length" value="1" />
<xacro:add_link name="l5" length="${l5_length}" parent="l4_link" axis="0 1 0" >
<origin xyz="0.0 0.0 ${l4_length}"/>
</xacro:add_link>
</robot>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment