ROS学习笔记之深度相机仿真、小结

通过 Gazebo 模拟kinect摄像头,并在 Rviz 中显示kinect摄像头数据。

实现流程:

kinect摄像头仿真基本流程:

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

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

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

1.Gazebo仿真Kinect

1.1 新建 Xacro 文件,配置 kinetic传感器信息


          //这里使用的是雷达的支架support作为深度相机
      
        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名称       //support
          0.1
          0.0
          0.0
          0.0
          0.0
          0.0
          0.4
        
      
    


需要自行配置的地方已注释

和camera同样配置,这里在rviz的camera插件的话题选项中多个两个选项,分别是深度相机视角和rgb不同相机视角,深度相机也能当成普通相机使用,而深度视角采用黑、白、灰的显示方式体现深度。

 

ROS学习笔记之深度相机仿真、小结_第1张图片

补充:kinect 点云数据显示

在kinect中也可以以点云的方式显示感知周围环境,在 rviz 中操作如下:

ROS学习笔记之深度相机仿真、小结_第2张图片

问题:在rviz中显示时错位。

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

解决:

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

support_depth

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


这里注意看老师的操作,rosrun tf2_ros s +Tab,后边节点的名称直接复制,并不需要记住节点的全名,但是要会找。这里args参数是  偏移量z y x  欧拉角z y x   父极坐标系 子极坐标系

这里我手敲的代码不行,怀疑是中文空格的问题,重新敲了一遍就行了,注意。

3.启动rviz,重新显示

 ROS学习笔记之深度相机仿真、小结_第3张图片

 

本章主要介绍了ROS中仿真实现涉及的三大知识点:

  • URDF(Xacro)
  • Rviz
  • Gazebo

URDF 是用于描述机器人模型的 xml 文件,可以使用不同的标签具代表不同含义,URDF 编写机器人模型代码冗余,xacro 可以优化 URDF 实现,代码实现更为精简、高效、易读。容易混淆的是Rviz与Gazebo,在此我们着重比较以下二者的区别:

rviz是三维可视化工具,强调把已有的数据可视化显示;

gazebo是三维物理仿真平台,强调的是创建一个虚拟的仿真环境。

rviz需要已有数据

rviz提供了很多插件,这些插件可以显示图像、模型、路径等信息,但是前提都是这些数据已经以话题、参数的形式发布,rviz做的事情就是订阅这些数据,并完成可视化的渲染,让开发者更容易理解数据的意义。

gazebo不是显示工具,强调的是仿真,它不需要数据,而是创造数据

我们可以在gazebo中免费创建一个机器人世界,不仅可以仿真机器人的运动功能,还可以仿真机器人的传感器数据。而这些数据就可以放到rviz中显示,所以使用gazebo的时候,经常也会和rviz配合使用。当我们手上没有机器人硬件或实验环境难以搭建时,仿真往往是非常有用的利器。

综上,如果你手上已经有机器人硬件平台,并且在上边可以完成需要的功能,用rviz应该就可以满足开发需求。

如果你手上没有机器人硬件,或者想在仿真环境中做一些算法、应用的测试,gazebo+rviz应该是你需要的。

另外,rviz配合其他功能包也可以建立一个简单的仿真环境,比如rviz+ArbotiX。

在几句个人感受:

双系统!很多仿真跑步起来可能是虚拟机的问题,之前觉得Ubuntu看视频做笔记不方便,后来配置好以后所有操作都很顺畅,跟着做一遍几乎都是自己可能代码敲错了的问题,不会摸不到头脑让人崩溃。最重要的一点是:没有社交软件!只有git(全球最大同性社交软件)陪我学习。那种专注力,感觉不到时间流逝,右下角也看不大时间(在上边,想不起来看),学了很多。

另外就是现在很多操作都是跟着老师敲,或者复制官网的代码,并不能很好的理解和锻炼,准备好好看看原理,关于整个ros的运行框架和原理近期会整理出来。

关于现阶段的学习,是b站学、code敲、博客记录,我挺喜欢这种方式的,可能的问题就是1Ubuntu不是特别熟,还是会偶然出问题,比如耳机没声音。2博客完全沦为笔记(也算不上问题),内容有点冗余。

ros才学了很久,但是感觉最近才好好学上手吧,好好干!已经浪费很多很多时间啦,虽然很晚了,但是emmm,好过“明天学”吧。希望一开始接触就能好好学,那样我也会像那位学长一样进实验室吧。哈。深夜emo。

2021/11/30/3:14

你可能感兴趣的:(ROS学习笔记,人工智能,机器学习,c++)