URDF、Gazebo与Rviz综合应用(05)

关于URDF(Xacro)、Rviz 和 Gazebo 三者的关系,前面已有阐述: URDF 用于创建机器人模型、Rviz 可以显示机器人感知到的环境信息,Gazebo 用于仿真,可以模拟外界环境,以及机器人的一些传感器,如何在 Gazebo 中运行这些传感器,并显示这些传感器的数据(机器人的视角)呢?本节主要介绍的重点就是将三者结合:通过 Gazebo 模拟机器人的传感器,然后在 Rviz 中显示这些传感器感知到的数据。主要内容包括:

运动控制以及里程计信息显示

雷达信息仿真以及显示

摄像头信息仿真以及显示

kinect 信息仿真以及显示

**

一、机器人运动控制以及里程计信息显示

**

gazebo 中已经可以正常显示机器人模型了,那么如何像在 rviz 中一样控制机器人运动呢?在此,需要涉及到ros中的组件: ros_control。

1.ros_control 简介
场景:同一套 ROS 程序,如何部署在不同的机器人系统上,比如:开发阶段为了提高效率是在仿真平台上测试的,部署时又有不同的实体机器人平台,不同平台的实现是有差异的,如何保证 ROS 程序的可移植性?ROS 内置的解决方式是 ros_control。
ros_control:是一组软件包,它包含了控制器接口,控制器管理器,传输和硬件接口。ros_control 是一套机器人控制的中间件,是一套规范,不同的机器人平台只要按照这套规范实现,那么就可以保证 与ROS 程序兼容,通过这套规范,实现了一种可插拔的架构设计,大大提高了程序设计的效率与灵活性。
gazebo 已经实现了 ros_control 的相关接口,如果需要在 gazebo 中控制机器人运动,直接调用相关接口即可

2.运动控制实现流程(Gazebo)

承上,运动控制基本流程:

已经创建完毕的机器人模型,编写一个单独的 xacro 文件,为机器人模型添加传动装置以及控制器

将此文件集成进xacro文件

启动 Gazebo 并发布 /cmd_vel 消息控制机器人运动

2.1 为 joint 添加传动装置以及控制器

两轮差速配置:



    
    
        
        
            transmission_interface/SimpleTransmission
            
                hardware_interface/VelocityJointInterface
            
            
                hardware_interface/VelocityJointInterface
                1
            
        
    

    
    
    

    
    
        
            Debug
            true
            /
            1
            true
            true
            100.0
            true
            left_wheel2base_link 
            right_wheel2base_link 
            ${base_link_radius * 2} 
            ${wheel_radius * 2} 
            1
            30
            1.8
            cmd_vel 
            odom 
            odom 
            base_footprint 
        
    


2.2 xacro文件集成

最后还需要将上述 xacro 文件集成进总的机器人模型文件,代码示例如下:



    
    
    
    
    

当前核心: 包含 控制器以及传动配置的 xacro 文件


2.3 启动 gazebo并控制机器人运动

launch文件:


    
    

    
    
    


3.2 添加组件

执行 launch 文件后,在 Rviz 中添加图示组件:
URDF、Gazebo与Rviz综合应用(05)_第1张图片
二、激光雷达仿真
通过 Gazebo 模拟激光雷达传感器,并在 Rviz 中显示激光数据。
实现流程:

雷达仿真基本流程:

已经创建完毕的机器人模型,编写一个单独的 xacro 文件,为机器人模型添加雷达配置;
将此文件集成进xacro文件;
启动 Gazebo,使用 Rviz 显示雷达信息。

1.Gazebo 仿真雷达
1.1 新建 Xacro 文件,配置雷达传感器信息



  
  
    
      0 0 0 0 0 0
      true
      5.5
      
        
          
            360
            1
            -3
            3
          
        
        
          0.10
          30.0
          0.01
        
        
          gaussian
          0.0
          0.01
        
      
      
        /scan
        laser
      
    
  


1.2 xacro 文件集成

将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:



    
    
    
    
    
    
    

1.3启动仿真环境
编写launch文件,启动gazebo,此处略…

2.Rviz 显示雷达数据
先启动 rviz,添加雷达信息显示插件
URDF、Gazebo与Rviz综合应用(05)_第2张图片
三、摄像头信息仿真以及显示
通过 Gazebo 模拟摄像头传感器,并在 Rviz 中显示摄像头数据。

实现流程:

摄像头仿真基本流程:

已经创建完毕的机器人模型,编写一个单独的 xacro 文件,为机器人模型添加摄像头配置;

将此文件集成进xacro文件;

启动 Gazebo,使用 Rviz 显示摄像头信息。

1.Gazebo 仿真摄像头
1.1 新建 Xacro 文件,配置摄像头传感器信息


  
  
    
    
      30.0 
      
      
        1.3962634
        
          1280
          720
          R8G8B8
        
        
          0.02
          300
        
        
          gaussian
          0.0
          0.007
        
      
      
      
        true
        0.0
        /camera
        image_raw
        camera_info
        camera
        0.07
        0.0
        0.0
        0.0
        0.0
        0.0
      
    
  

1.2 xacro 文件集成
将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:



    
    
    
    
    
    
    

1.3启动仿真环境
编写launch文件,启动gazebo,此处略…

2.Rviz 显示摄像头数据
执行 gazebo 并启动 Rviz,在 Rviz 中添加摄像头组件。
URDF、Gazebo与Rviz综合应用(05)_第3张图片
URDF、Gazebo与Rviz综合应用(05)_第4张图片
四、 kinect信息仿真以及显示
通过 Gazebo 模拟kinect摄像头,并在 Rviz 中显示kinect摄像头数据。

实现流程:
kinect摄像头仿真基本流程:

已经创建完毕的机器人模型,编写一个单独的 xacro 文件,为机器人模型添加kinect摄像头配置;

将此文件集成进xacro文件;

启动 Gazebo,使用 Rviz 显示kinect摄像头信息。

1.Gazebo仿真Kinect
1.1 新建 Xacro 文件,配置 kinetic传感器信息


      
      
        true
        20.0
        
          ${60.0*PI/180.0}
          
            R8G8B8
            640
            480
          
          
            0.05
            8.0
          
        
        
          camera
          true
          10
          rgb/image_raw
          depth/image_raw
          depth/points
          rgb/camera_info
          depth/camera_info
          kinect link名称
          0.1
          0.0
          0.0
          0.0
          0.0
          0.0
          0.4
        
      
    



1.2 xacro 文件集成
将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:



    
    
    
    
    
    
    

1.3启动仿真环境
编写launch文件,启动gazebo,此处略…

2 Rviz 显示 Kinect 数据
启动 rviz,添加摄像头组件查看数据
URDF、Gazebo与Rviz综合应用(05)_第5张图片URDF、Gazebo与Rviz综合应用(05)_第6张图片
五、补充:kinect 点云数据显示

在kinect中也可以以点云的方式显示感知周围环境,在 rviz 中操作如下:
URDF、Gazebo与Rviz综合应用(05)_第7张图片问题:在rviz中显示时错位。

原因:在kinect中图像数据与点云数据使用了两套坐标系统,且两套坐标系统位姿并不一致。

解决:
1.在插件中为kinect设置坐标系,修改配置文件的标签内容:

support_depth

2.发布新设置的坐标系到kinect连杆的坐标变换关系,在启动rviz的launch中,添加:


3.启动rviz,重新显示。
URDF、Gazebo与Rviz综合应用(05)_第8张图片

你可能感兴趣的:(ros笔记)