xacro 语法总结

转载链接: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
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值