目录
Xacro简介
Xacro是XML Marcros的缩写,是一种XML的宏语言,可编程,可用于建构机器人模型。
Xacro与Urdf的关系:Xacro和Urdf本质上时相同的,区别是Urdf中使用的值均为给定的,许多参数值之间有相互关系或复用,因此修改起来并不方便,而Xacro可以声明参数,使用时调用参数,修改值时十分方便,提高代码的复用率和简洁程度。
二、基本语法
1.基本框架
<robot name="robot_name" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- xacro内容 -->
</robot>
2.属性和宏
定义和调用语法:
<robot name="robot_name" xmlns:xacro="http://wiki/ros.org/xacro">
<!-- 属性定义,其中var_1,var_2为自定义名称 -->
<xacro:property name="var_1" value="value_1" />
<xacro:property name="var_2" value="value_1" />
<xacro:property name="var_2" value="${var_1+var_2}" />
<!-- 属性调用 -->
<myUseProperty name="${var_1}" />
<!-- 算数运算 -->
<myUseProperty result="{var_1-var_2}">
<!-- 宏声明,其中macro_name为自定义名称,n1,n2为传入参数的形参 -->
<xacro:macro name="macro_name" params="n1 n2">
<!-- 使用传入的参数 -->
<result value="${n1+n2}" />
</xacro:macro>
<!-- 宏调用 -->
<xcaro:macro_name: n1="xxx" n2="yyy" />
</robot>
3.xacro文件包含
在一个xacro文件中包含另一个xacro文件的语法如下:
<robot name="myname" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="xxx/xxx/xxx.xacro" />
</robot>
三、launch启动Xacro
launch启动Xacro有两种启动方式,推荐使用的是xacro直接启动。
1.xacro转urdf启动
在xacro文件路径下的终端运行命令,将xacro文件转换为urdf文件
rosrun xacro xacro xxxx.xacro > xxxx.urdf
在launch文件中书写
<launch>
<param name = "robot_description" textfile = "$(find 功能包名称)/xxx/xxx.urdf">
</launch>
2.xacro直接启动
launch文件如下:
<launch>
<param name = "robot_description" command = "$(find xacro)/xacro $(find 功能包名)/xxx/xxx.xacro" />
</launch>