所用的学习链接:
【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P271-277
【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】
前文参考
ROS入门(五)——仿真机器人一(URDF+Rviz)
ROS入门(六)——仿真机器人二(Xacro+Rviz+Arbotix小车运动)
1.编写封装了惯性矩阵算法的 xacro 文件
2.为机器人模型中的每一个 link 添加 collision 和 inertial 标签,并且重置颜色属性
3.在 launch 文件中启动 gazebo 并添加机器人模型
这些区别在后面的实操里会在代码中添加相应注释
(1)urdf 中必须使用 collision 标签
因为既然是仿真环境,那么必然涉及到碰撞检测,collision 提供碰撞检测的依据。如果机器人link是标准的几何体形状,和link原本的 visual 属性设置一致即可。
(2)urdf 中必须使用 inertial 标签
此标签标注了当前机器人某个刚体部分的惯性矩阵,用于一些力学相关的仿真计算。惯性矩阵的设置需要结合link的质量与外形参数动态生成,标准的球体、圆柱与立方体的惯性矩阵公式如下(已经封装为 xacro 实现)
原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。
(3)urdf 中的颜色设置
颜色也需要重新使用 gazebo 标签标注,因为之前的颜色设置为了方便调试包含透明度,仿真环境下没有此选项。在 gazebo 中显示 link 的颜色,必须要使用指定的标签
Gazebo/Blue
material 标签中,设置的值区分大小写,颜色可以设置为 Red Blue Green Black ...
(4)launch文件区别
原本的 pkg = " rviz " ,现在的 pkg = " gazebo_ros " ,并调整一些相关参数
(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
xacro文件包含五个:
(1)封装惯性矩阵算法的 t1_head.xacro 文件
在urdf 目录下新建一个xacro文件用于封装惯性矩阵算法,分别包含了球体、圆柱、立方体三种形状的惯性矩阵公式
(2)底盘+轮子 t2_car.xacro 文件
Gazebo/Yellow
Gazebo/Red
Gazebo/Red
(3)摄像头 t3_camera.xacro 文件
Gazebo/Blue
(4)雷达 t4_laser.xacro 文件
Gazebo/White
Gazebo/Black
(5)组合前面xacro的 t5_1234combine.xacro 文件
素材链接:https://github.com/zx595306686/sim_demo.git
(1)下载
打开一个终端,输入命令和素材链接,将会下载素材
git clone https://github.com/zx595306686/sim_demo.git
在运行代码所在的文件夹下生成一个 sim_demo 文件夹
(2)复制box_house.world文件
打开 sim_demo 文件夹,下面有一个box_house.world 文件,将其复制到下面目录底下
# 工作空间/src/urdf_gazebo/worlds
7.19_demo01/src/urdf_gazebo/worlds
如果直接调用
(1)ctrl+shift+b编译
(2)新终端1
roscore
(2)新终端2
roslaunch urdf_gazebo t5_xacro.launch