11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机

作者 : admin 本文共4062个字,预计阅读时间需要11分钟 发布时间: 2023-12-6 共4人阅读

目录

1 gazebo仿真环境搭建

1.1  直接添加内置组件创建仿真环境

1.2 urdf、gazebo、rviz的综合应用

2 ROS_control

2.1 运动控制实现流程(Gazebo)

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

2.1.2 将此文件集成进xacro文件

2.1.3 修改launch文件

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

2.3.4 里程计查看

3 雷达仿真信息以及显示

3.1 实现流程

3.2 为机器人模型添加雷达配置

3.3 集成进xacro文件

3.4 启动 Gazebo,使用 Rviz 显示雷达信息

4 摄像头仿真

4.1 为机器人模型添加摄像头配置

4.2 为机器人模型添加相机配置

5 深度相机Kinect仿真

5.1 为机器人模型添加深度相机配置

5.2 kinect点云数据显示


1 gazebo仿真环境搭建

        到目前为止,我们已经可以将机器人模型显示在 Gazebo 之中了,但是当前默认情况下,在 Gazebo 中机器人模型是在 empty world 中,并没有类似于房间、家具、道路、树木… 之类的仿真物,如何在 Gazebo 中创建仿真环境呢?

Gazebo 中创建仿真实现方式有两种:

  • 方式1: 直接添加内置组件创建仿真环境

  • 方式2: 手动绘制仿真环境(更为灵活)

也还可以直接下载使用官方或第三方提高的仿真环境插件。

1.1  直接添加内置组件创建仿真环境

        启动roscore之后:

rosrun gazebo_ros gazebo

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图

        是一个空的世界,我们设置一些障碍物。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(1)

        点击保存(save world as)即可。生成一个.world文件。

        选择Editor –> Building Editor

        可以添加门添加窗户等。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(2)

1.2 urdf、gazebo、rviz的综合应用

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

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

  • 雷达信息仿真以及显示

  • 摄像头信息仿真以及显示

  • kinect 信息仿真以及显示

2 ROS_control

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

        场景:同一套 ROS 程序,如何部署在不同的机器人系统上,比如:开发阶段为了提高效率是在仿真平台上测试的,部署时又有不同的实体机器人平台,不同平台的实现是有差异的,如何保证 ROS 程序的可移植性?ROS 内置的解决方式是 ros_control。

        ros_control:是一组软件包,它包含了控制器接口,控制器管理器,传输和硬件接口。ros_control 是一套机器人控制的中间件,是一套规范,不同的机器人平台只要按照这套规范实现,那么就可以保证 与ROS 程序兼容,通过这套规范,实现了一种可插拔的架构设计,大大提高了程序设计的效率与灵活性。

        gazebo 已经实现了 ros_control 的相关接口,如果需要在 gazebo 中控制机器人运动,直接调用相关接口即可。

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

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

  2. 将此文件集成进xacro文件

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

2.1 运动控制实现流程(Gazebo)

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

        我们建立一个文件夹gazebo,存放传动装置以及控制器相关文件:move.xacro

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(3)

        把这个传动装置以及控制器相关文件集成进总的xacro文件中:

        官方文档复制下来即可,无需自己写:



    
    
        
        
            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 
        
    


        解释一下怎么适配自己的场景:

        第一部分是传动实现:用于连接控制器与关节

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(4)

        这里要改成我们自己的关节。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(5)

        我们的驱动轮关节名叫做base_link2_${wheel_name},传入参数是left和right,因此move.xacro改为:

    
    

        后面是差速控制器:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(6)

        整体来看是这样!



    
        
        
            transmission_interface/SimpleTransmission
            
                hardware_interface/VelocityJointInterface
            
            
                hardware_interface/VelocityJointInterface
                1
            
        
    

    
    

    
        
            Debug
            true
            /
            1
            true
            true
            100.0
            true
            base_link2_left
            base_link2_right
            ${base_radius * 2}
            ${wheel_radius * 2}
            1
            30
            1.8
            cmd_vel
            odom
            odom
            base_footprint
        
    


2.1.2 将此文件集成进xacro文件




    

    
    
    

    
    
    

        就把刚刚加入就好。

2.1.3 修改launch文件

         不需要修改:




    

    
    
    

    
    
    

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(7)

        roslaunch test gazebo_car.launch

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

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

        机器人运动了!

        或者安装控制节点:

sudo apt install ros-melodic-teleoptwistkeyboard11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(8)

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(9)

        当然,线速度、角速度比较快…..

        我们可以通过传参降低速度:

 rosrun teleop_twist_keyboard teleop_twist_keyboard.py _speed:=0.3  _turn:=0.5

        现在运动幅度就小多了。

2.3.4 里程计查看

        我们要启动关节和机器人运动发布状态节点:multisensor.launch




    

    
    
    

    
    
    

        我们再打开之前的节点:




    

    
    
    

    
    
    

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(10)

        设置Fix Frame为odom。

        我们打开键盘控制节点:

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(11)

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(12)

        都动啦!11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(13)

3 雷达仿真信息以及显示

3.1 实现流程

实现流程:

雷达仿真基本流程:

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

  2. 将此文件集成进xacro文件;

  3. 启动 Gazebo,使用 Rviz 显示雷达信息。

3.2 为机器人模型添加雷达配置

        我们需要把雷达贴到一个模块上:

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(14)

        之前我们设置过lidar:

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(15)

        如下:



    
        
            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
            
        
    


        完成!

3.3 集成进xacro文件




    

    
    
    

    
    
    

        把雷达传感器集成进xacro。

3.4 启动 Gazebo,使用 Rviz 显示雷达信息

        启动双launch节点:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(16)

        /scan话题就是雷达话题。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(17)

        gazebo中也有显示了。这是雷达的不可见扫描光束。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(18)

4 摄像头仿真

4.1 为机器人模型添加摄像头配置


    
        
            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
            
        
    

4.2 为机器人模型添加相机配置




    

    
    
    

    
    
    

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(19)

        成功!11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(20)

5 深度相机Kinect仿真

5.1 为机器人模型添加深度相机配置


      
      
        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
          support
          0.1
          0.0
          0.0
          0.0
          0.0
          0.0
          0.4
        
      
    





    

    
    
    

    
    
    

        启动!11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(21)

5.2 kinect点云数据显示

        在kinect中也可以以点云的方式显示感知周围环境,在 rviz 中操作如下:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(22)

        添加PointCloud2点云,但是显示错位了。

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

        怎么解决呢??

        在插件中为kinect设置坐标系,修改配置文件的标签内容:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(23)

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




    

    
    
    

    
    
    

11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机插图(24)        OK!

本站无任何商业行为
个人在线分享 » 11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机
E-->