ROS入门(七)——仿真机器人三(Gazebo+Xacro)

所用的学习链接:

【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P271-277

【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】

前文参考

ROS入门(五)——仿真机器人一(URDF+Rviz)

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 实现)

  • 球体惯性矩阵


    
        
        
    
  • 圆柱惯性矩阵

    
        
        
    
  • 立方体惯性矩阵

    
        
        
    

原则上,除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。 

(3)urdf 中的颜色设置

颜色也需要重新使用 gazebo 标签标注,因为之前的颜色设置为了方便调试包含透明度,仿真环境下没有此选项。在 gazebo 中显示 link 的颜色,必须要使用指定的标签


    Gazebo/Blue

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文件用于封装惯性矩阵算法,分别包含了球体、圆柱、立方体三种形状的惯性矩阵公式


    
    
        
            
            
        
    

    
        
            
            
        
    

    
        
            
            
        
    

(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 文件



    
    
    
    

3.素材下载

素材链接: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

4.launch文件编写

  • t5_xacro.launch

    
    
    

    
    
    
        
    

    
    
    

如果直接调用则会加载一个空环境。

5.运行

(1)ctrl+shift+b编译

(2)新终端1

roscore

(2)新终端2

roslaunch urdf_gazebo t5_xacro.launch

ROS入门(七)——仿真机器人三(Gazebo+Xacro)_第1张图片

你可能感兴趣的:(ROS入门,gazebo,ros,xacro,launch,仿真)