ROS —— XACRO的语法与使用教程

简介

​ 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>="" />

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

后续

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

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rosen.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值