ROS —— XACRO的语法与使用教程
简介XACRO(XML Macros)是一种XML宏语言,可以通过使用宏命令构建更精悍短小但又具有更高可读性的XML文件,这种宏命令可以扩展达到更大的XML表达范围。XACRO文件和URDF实质上是等价的. XACRO格式提供了一些更高级的方式来组织编辑机器人描述。URDFURDF是一种xml格式的统一机器人描述文件,能够方便地使用标签、属性来描述模型当中的相关信息。URDF将机器人内部结构大
简介
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>="" />
该文件中注释不能用中文!!!
后续
喜欢的话可以关注一下我的公众号技术开发小圈,尤其是对深度学习以及计算机视觉有兴趣的朋友,我会把相关的源码以及更多资料发在上面,希望可以帮助到新入门的大家!
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)