转载链接:xacro 语法总结
xacro标签功能:
属性定义,数学运算,条件判断、宏定义、添加文件等
1.属性定义:
标签格式:<xacro:property name=“xxxx” value=“yyyy” />
参数调用:${属性名称}
//定义
<xacro:property name="m_mass" value="2"/>
//调用
<geometry type="cylinder" radius="0.045" length="0.160" mass={m_mass}/>//半径为45mm,长度为160mm,重量为2kg的圆柱体
2.数学运算:
//基本运算
<xacro:property name="R" value="2" />
<xacro:property name="alpha" value="${30/180*pi}" />
<circle circumference="${2 * pi * R}" pos="${sin(alpha)} ${cos(alpha)}" />
<limit lower="${radians(-90)}" upper="${radians(90)}" effort="0" velocity="${radians(75)}" />
3.条件判断:
if 、unless
标签格式:<xacro:条件判断关键字 >
//条件判断
<xacro:if value="<expression>">
<... some xml code here ...>
</xacro:if>
<xacro:unless value="<expression>">
<... some xml code here ...>
</xacro:unless>
//表达式中的结果必须是0、1、true或false,否则将会出现错误。
//在<expression>中任何结果为布尔值的Python表达式都是可以的。
4.宏定义:
标签格式:
<xacro:macro name=“宏名称” params=“参数列表(多参数之间使用空格分隔)”>
…
</xacro:macro>
参数调用格式: ${参数名}
//定义
<xacro:macro name="getSum" params="num1 num2">
<result value="${num1 + num2}" />
</xacro:macro>
//调用
<xacro:getSum num1="1" num2="2" />
5.添加文件:
标签格式:
<xacro:include filename=“文件路径” />
<xacro:include filename="/home/luo/catkin_ws/src/my_base.xacro" />
例子
<robot name="xxx" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:macro name="ak_axis_x">
<axis xyz="1 0 0"/>
</xacro:macro>
<xacro:macro name="ak_link" params="name type:=box">
<link name="${name}">
<visual>
<geometry>
<xacro:if value="${type == 'box'}">
<box size="1 2 3"/>
</xacro:if>
<xacro:if value="${type == 'cylinder'}">
<cylinder length="1" radius="0.5"/>
</xacro:if>
<xacro:if value="${type == 'sphere'}">
<sphere radius="1"/>
</xacro:if>
</geometry>
</visual>
</link>
</xacro:macro>
<xacro:ak_axis_x />
<xacro:ak_link name="my_box" />
<xacro:ak_link name="my_cylinder" type="cylinder"/>
</robot>
总结
标签 | 解释 | 属性 |
---|---|---|
xacro:property | 属性 | name、value |
xacro:if | 如果 | value |
xacro:unless | 如果不 | value |
xacro:macro | 宏定义 | name、value |
xacro:include | 添加文件 | filename |
注意:
1.数学运算的时候可以使用Python中Math里面的函数
2.if判断的时候可以使用Python中所有能得到bool值的判断,比如in