ROS入门(六)——仿真机器人二(Xacro+Rviz+Arbotix小车运动)

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

所用的学习链接:

【奥特学园】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="
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值