简介

​ XACRO(XML Macros)是一种XML宏语言,可以通过使用宏命令构建更精悍短小但又具有更高可读性的XML文件,这种宏命令可以扩展达到更大的XML表达范围。XACRO文件和URDF实质上是等价的. XACRO格式提供了一些更高级的方式来组织编辑机器人描述。

URDF

​ URDF是一种xml格式的统一机器人描述文件,能够方便地使用标签、属性来描述模型当中的相关信息。URDF将机器人内部结构大致分为两种类型:连杆link和关节joint

<Link>

  • 描述机器人某个刚体部分的外观和物理属性
  • 包含尺寸、颜色、形状、惯性矩阵、碰撞参数等属性
<link name="<link name>">
    <inertial>  	"描述连杆的惯性参数"  	</inertial>
	<visual>		"连杆外观参数"		  </visual>
    <collision>		"描述连杆碰撞属性"		 </collision>
</link>

<joint>

  • 描述机器人关节的运动学和动力学属性

  • 包括关节运动的位置和速度限制

  • 根据关节类型,可以分成六种类型

    关节类型描述
    continuous旋转关节,可以围绕单轴无限旋转
    revolute旋转关节,有旋转角度限制
    prismatic滑动关节,沿某一轴移动的关节,带有位置限制
    planar平面关节,允许在平面正交方向上平移或旋转
    floating浮动关节,允许进行平移和旋转运动
    fixed固定关节,不允许运动
<joint name="<name of the joint>" type="<joint type>">
    <parent link="parent_link"/>
    <child  link="child_link"/>
    <calibration ···/>
    <dynamics damping ···/>
    <limit effort ···/>
    ···
</joint>

检查生成的URDF文件

roslaunch urdf_sim_tutorial display.launch model:=xxx.urdf.xacro

使用

属性和属性块

​ 属性是可以插入到XML文档中的任何位置的值。 属性块是XML的名称片段,可以插入允许XML的任何位置。 两者都使用属性标签来定义值。属性标记不能在xacro:宏中声明。

<xacro:property name="property name" value="property value" />

<xacro:property name="property name">
  <... some xml code here ...>
</xacro:property>

数学表达式

​ xcaro中的数学表达式在$ {}中进行编写,目前该结构支持基本算术和变量替换

<xacro:property name="pi" value="3.1415926535897931" />
<circle circumference="${2.5 * pi}" />

条件块

<xacro:if value="<expression>">
  <... some xml code here ...>
</xacro:if>
<xacro:unless value="<expression>">
  <... some xml code here ...>
</xacro:unless>

​ 表达式需要计算结果为“0”,“1”,“true”或“false”,否则将抛出错误。当表达式中value为1 or ture时执行对应的xml code。

Rospack 命令

​ Xacro目前支持roslaunch使用替换args支持的所有rospack命令。

<!-- define -->
<xacro:arg name="myvar" default="false"/>
<!-- use -->
<param name="robot_description" command="$(find xacro)/xacro.py $(arg model) myvar:=true" />

宏命令

​ xacro的主要特性是它对宏的支持。 使用宏标签定义宏,并指定宏名称和参数列表。 参数列表应以空格分隔。

<!-- define -->
<xacro:macro name="<name>" params="<params>">
    <... some xml code here ...>
</xacro:macro>

<!-- use -->
<xacro:<name> <params>="" />

​ 该文件中注释不能用中文!!!

后续

 喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!
在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐