- 延用工作空间test2_ws;
- 功能包demo3_urdf存放代码;
- xacro的代码放在demo4_urdf/urdf/xacro/test.xacro中
简介
前边我们接触了urdf文件,它的特点就是详细具体的给出了每一个值,但是对于修改很不方便,一个参数修改很多地方都要变。就迎来了我们的xacro文件(可以编写完后转为xacro文件),它实现了变量封装、函数封装和多文件包含等功能。
文件语法
首先要在之前的urdf文件夹下,再新建一个xacro文件夹来存放之后的所有xacro文件。
定义变量
<xacro:property name="radius" value="0.03" />
<xacro:property name="PI" value="3.1415927" />
调用变量
<lisilisi name="${PI}" />
<zhangsan name="${radius}" />
变量间运算
<shang name="${PI / 2}" />
<he name="${radius + PI}" />
函数定义
<xacro:macro name="getsum" params="num1 num2">
<result value="${num1 + num2}" />
</xacro:macro>
函数调用
<xacro:getsum num1="1" num2="5" />
文件包含
<xacro:include filename="mytest.xacro" />
xacro查看
在xacro文件路径打开命令行键入如下代码:
rosrun xacro xacro mytest.xacro
即可看到转换后的urdf文件,文件内容会输出在命令行中,如下:
$ rosrun xacro xacro mytest.xacro
<?xml version="1.0" encoding="utf-8"?>
<!-- =================================================================================== -->
<!-- | This document was autogenerated by xacro from mytest.xacro | -->
<!-- | EDITING THIS FILE BY HAND IS NOT RECOMMENDED | -->
<!-- =================================================================================== -->
<robot name="mycar">
<!-- 变量调用 -->
<lisilisi name="3.1415927"/>
<zhangsan name="0.03"/>
<!-- 变量运算 -->
<shang name="1.57079635"/>
<he name="3.1715927"/>
<result value="6"/>
</robot>
如想要保存为urdf文件,可以键入如下代码:
rosrun xacro xacro mytest.xacro > uxcro2urdf.urdf
文件会在当前路径下保存。
最后
下一节将具体实现完整流程,以及集成到launch文件中(可以直接集成xacro/推荐)。