所用的学习链接:
【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P271-277
【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】
前文参考
ROS入门(六)——仿真机器人二(Xacro+Rviz+Arbotix小车运动)
一、介绍
1.目标
1.编写封装了惯性矩阵算法的 xacro 文件
2.为机器人模型中的每一个 link 添加 collision 和 inertial 标签,并且重置颜色属性
3.在 launch 文件中启动 gazebo 并添加机器人模型
2.Gazebo与rviz的配置区别
这些区别在后面的实操里会在代码中添加相应注释
(1)urdf 中必须使用 collision 标签
因为既然是仿真环境,那么必然涉及到碰撞检测,collision 提供碰撞检测的依据。如果机器人link是标准的几何体形状,和link原本的 visual 属性设置一致即可。
(2)urdf 中必须使用 inertial 标签
此标签标注了当前机器人某个刚体部分的惯性矩阵,用于一些力学相关的仿真计算。惯性矩阵的设置需要结合link的质量与外形参数动态生成,标准的球体、圆柱与立方体的惯性矩阵公式如下(已经封装为 xacro 实现)
- 球体惯性矩阵
<!-- Macro for inertia matrix -->
<xacro:macro name="sphere_inertial_matrix" params="m r">
<inertial>
<mass value="${m}" />
<inertia ixx="${2*m*r*r/5}" ixy="0" ixz="0" iyy="${2*m*r*r/5}" iyz="0" izz="${2*m*r*r/5}" />
</inertial>
</xacro:macro>
- 圆柱惯性矩阵
<xacro:macro name="cylinder_inertial_matrix" params="m r h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(3*r*r+h*h)/12}" ixy="0" ixz="0" iyy="${m*(3*r*r+h*h)/12}" iyz="0" izz="${m*r*r/2}" />
</inertial>
</xacro:macro>
- 立方体惯性矩阵
<xacro:macro name="Box_inertial_matrix" params="m l w h">
<inertial>
<mass value="${m}" />
<inertia ixx="${m*(h*h + l*l)/12}" ixy="0" ixz="0" iyy="${m*(w*w + l*l)/12}" iyz="0" izz="${m*(w*w + h*h)/12}" />
</inertial>
</xacro:macro>
原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。
(3)urdf 中的颜色设置
颜色也需要重新使用 gazebo 标签标注,因为之前的颜色设置为了方便调试包含透明度,仿真环境下没有此选项。在 gazebo 中显示 link 的颜色,必须要使用指定的标签
<gazebo reference="link节点名称">
<material>Gazebo/Blue</material>
</gazebo>
material 标签中,设置的值区分大小写,颜色可以设置为 Red Blue Green Black ...
(4)launch文件区别
原本的 pkg = " rviz " ,现在的 pkg = " gazebo_ros " ,并调整一些相关参数
二、实操流程
1.创建功能包,导入依赖和配置
(1)创建功能包
在原本 工作空间(7.19_demo01) / src 目录 → 右键src → 新建一个 catkin package→ 自定义命名【urdf_gazebo】,导入dependences :
urdf xacro gazebo_ros gazebo_ros_control gazebo_plugins
(2)创建文件夹
在urdf_gazebo目录下创建三个文件夹: urdf (存放urdf或xacro文件)、worlds(存放gazebo仿真环境)、launch
2.xacro文件编写
xacro文件包含五个:
- 封装惯性矩阵算法的 t1_head.xacro
- 底盘+轮子 t2_car.xacro
- 摄像头 t3_camera.xacro
- 雷达 t4_laser.xacro
- 组合t123和head的 t5_1234combine.xacro
(1)封装惯性矩阵算法的 t1_head.xacro 文件
在urdf 目录下新建一个xacro文件用于封装惯性矩阵算法,分别包含了球体、圆柱、立方体三种形状的惯性矩阵公式
<robot name="base" xmlns:xacro="http://wiki.ros.org/xacro">
<!-- Macro for inertia matrix -->

本文介绍了如何在ROS中编写xacro文件,为机器人模型添加惯性矩阵标签,调整gazebo与rviz的区别,包括设置碰撞检测、惯性数据、颜色和launch文件配置。详细步骤包括创建功能包、编写xacro文件(如底盘、摄像头、雷达组合)以及在gazebo中正确展示和启动模型。
最低0.47元/天 解锁文章
534

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



