11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践

马肤

温馨提示:这篇文章已超过433天没有更新,请注意相关的内容是否还可用!

摘要:本文介绍了机器人系统仿真搭建的过程,特别是在gazebo环境下的操作。通过仿真深度相机、雷达和RGB相机,实现了机器人系统的全面仿真测试。该过程对于机器人开发过程中的验证和调试至关重要,有助于提高机器人的性能和稳定性。

目录

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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第1张

            是一个空的世界,我们设置一些障碍物。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第2张

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

            选择Editor --> Building Editor

            可以添加门添加窗户等。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第3张

    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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第4张

              把这个传动装置以及控制器相关文件集成进总的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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第5张

              这里要改成我们自己的关节。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第6张

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

          
          

              后面是差速控制器:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第7张

              整体来看是这样!

          
              
              
                  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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第8张

              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-teleop-twist-keyboard11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第9张

      rosrun teleop_twist_keyboard teleop_twist_keyboard.py

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第10张

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

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

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

              现在运动幅度就小多了。

      2.3.4 里程计查看

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

          
          
          
      
      

              我们再打开之前的节点:

          
          
              
          
          
      
      

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第11张

              设置Fix Frame为odom。

              我们打开键盘控制节点:

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第12张

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第13张

              都动啦!11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第14张

      3 雷达仿真信息以及显示

      3.1 实现流程

      实现流程:

      雷达仿真基本流程:

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

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

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

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

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

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第15张

              之前我们设置过lidar:

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第16张

              如下:

          
              
                  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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第17张

              /scan话题就是雷达话题。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第18张

              gazebo中也有显示了。这是雷达的不可见扫描光束。11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第19张

      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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第20张

              成功!11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第21张

      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相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第22张

      5.2 kinect点云数据显示

              在kinect中也可以以点云的方式显示感知周围环境,在 rviz 中操作如下:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第23张

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

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

              怎么解决呢??

              在插件中为kinect设置坐标系,修改配置文件的标签内容:11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第24张

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

          
          
          
          
      
      

      11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机,机器人系统仿真搭建指南,Gazebo环境下深度相机、雷达及RGB相机的仿真实践 第25张        OK!


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码