所用的学习链接:
【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P252-270
【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】
前文参考ROS入门(五)——仿真机器人一(URDF+Rviz)
一、介绍
1.Xacro作用
Xacro 是 XML Macros 的缩写,Xacro 是一种 XML 宏语言,是可编程的 XML。
对于一个机器人,我们往往会有多个相类似的组件,例如车子的左轮和右轮,直接编写URDF文件会导致代码量重复,因此我们需要Xacro来起到一种函数封装的作用。在Xacro中,一些参数可以设置为定量和变量,在创建时传入变量,可以实现相似组件的批量生成。
它也可以实现变量计算和求解,避免一些运算中的人力劳动。
2.目标
1.创建底座和车轮的xacro文件
2.编写摄像头和雷达的 xacro 文件
3.编写一个组合文件,组合底盘、摄像头与雷达
4.通过 launch 文件启动 Rviz 并显示模型
3.Xacro语法
(1)属性
- 定义属性
即定义一些常量和数值,如小车高度、离地距离,在本次实操中数值固定。例如要定义PI=3.1415927
<xacro:property name="PI" value="3.1415927" />
- 属性调用
${属性名称}
- 算术运算
${数学表达式}
(2)宏
- 宏定义
即算法中的函数,可以对相同结构和属性进行封装.
<!-- 多参数之间使用空格分隔 -->
<xacro:macro name="宏名称" params="参数1 参数2 ..">
.....
</xacro:macro>
- 宏调用
调用创建好的宏,可以传入一批参数,和宏中定义的参数统一。
<xacro:宏名称 参数1="xxx" 参数2="yyy" ../>
(3)计算样例
实现1+6=7的宏定义和宏调用
<robot name="t" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- 1.宏定义 -->
<xacro:macro name="getsum" params="num1 num2">
<result value="${num1+num2}"/>
</xacro:macro>
<!-- 2.宏调用 -->
<xacro:getsum num1="1" num2="6"/>
</robot>
(4)组合样例
在完成单独组件的xacro文件编写后,我们会希望将更多组件组合在一起,拼接成一个完整的模型,则需要新生成一个用于组合的xacro文件,运行launch时直接调用该文件。
<robot name="xxx" xmlns:xacro="http://wiki.ros.org/xacro">
<xacro:include filename="文件1.xacro" />
<xacro:include filename="文件2.xacro" />
<xacro:include filename="文件3.xacro" />
....
</robot>
二、分别创建车体、摄像头和雷达
1.创建底座和车轮(车体)
在之前文章中生成的xacro文件夹中,我们创建一个表示车体的xacro文件【t1_car.xacro】
<!--
1.利用xacro:property来封装常量
2.利用宏构造相似车轮(左右轮相似、前后轮相似)
-->
<!-- 根标签,必须声明 xmlns:xacro -->
<robot name="my_base" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- 封装变量、常量 -->
<xacro:property name="PI" value="3.141" />
<!-- 宏:黑色设置 -->
<material name="black">
<color rgba="0.0 0.0 0.0 1.0" />
</material>
<!-- 封装底盘属性 -->
<xacro:property name="base_footprint_radius" value="0.001" /> <!-- base_footprint 半径 -->
<xacro:property name="base_link_radius" value="0.1" /> <!-- base_link 半径 -->
<xacro:property name="base_link_length" value="

本文详细介绍了如何使用ROS的Xacro语言创建底座、车轮、摄像头和雷达模型,并组合成完整机器人模型。通过实例演示了宏定义、参数设置和组合文件的使用,最后展示了如何在launch文件中调用这些xacro以在Rviz中显示。
最低0.47元/天 解锁文章
3536

被折叠的 条评论
为什么被折叠?



