美文网首页
gazebo教程(四)改善Velodyne模型外观

gazebo教程(四)改善Velodyne模型外观

作者: _我是_ | 来源:发表于2020-03-29 17:34 被阅读0次

    csdn同步更新,主页

    一、介绍

    具有纹理和3D网格的模型可以改善您的视觉体验,更重要的是可以改善环境的真实感。将这些信息提供给视觉处理算法的模拟,摄像机也将从实际模型中受益。

    在本节中,我们将使用Velodyne网站上提供的3D网格来改善模型的视觉外观。更多制造商正在提供3D网格,但是有时可能很难找到现有的网格。在这些情况下,您可以尝试创建网格,与建模师合作或直接与制造商联系。

    Velodyne 的网站上有HDL-32 的STEP文件。gazebo只能使用STL,OBJ或Collada文件,因此我们必须转换此文件,然后将其添加到模型中。

    二、准备网格模型

    1、在官网中找到并下载STEP模型

    2、如果您使用的是Ubuntu,则可以使用以下命令安装freecad:sudo apt-get install freecad,windows下有很多方法,这里就不赘述了。用以下命令打开模型(cd到文件目录)

    freecad HDL32E_Outline_Model.STEP
    

    3、单击左侧面板Labels & Attributes中的“HDL32 OUTLINE MODEL”来选择Velodyne的底座。

    base

    4、通过File->Export,将模型导出到名为velodyne_base.dae的文件中。
    5、我们需要在Blender中修改velodyne_base.dae文件 ,因为单位不正确,并且我们希望网格以原点为中心。

    blender
    

    6、依次点击File->Import->Collada,导入velodyne_base.dae文件。

    import
    7、当前单位是毫米,而gazebo的单位是米。模型的坐标轴也不是我们希望的,我们需要其顶部朝向Z轴,即沿x轴旋转90°

    8、拉出blender右选项卡(在渲染窗口右上角附近寻找加号)。在Dimensions 此标签下的部分下,将x,y,z分量除以1000。

    9、在同一标签中,将模型绕X轴旋转90度。效果参见下图。

    在这里插入图片描述

    10、以此点击File->Export->Collada,导出我们的模型
    11、对Velodyne的顶部模型重复此过程。在FreeCAD上,将“ HDL32E OUTLINE MODEL006”导出为velodyne_top.dae。还必须平移此网格文件,以使底部位于XY平面上。使用左上方的 Translate按钮(单击两次以在左下方打开对话框),将模型沿Z轴向下移动-0.06096。

    在这里插入图片描述

    此时,您应该有两个网格文件:velodyne_base.daevelodyne_top.dae。如果以上步骤实在有问题,这里我已经给大家准备好这两个文件了,大家直接复制全文,创建一个新的dae文件黏贴就OK了

    三、将网格模型添加到sdf文件中

    亭定义了一个模型目录结构,该结构支持独立模型,并能够通过在线模型数据库共享模型。Gazebo模型结构的另一个好处是,它可以方便地组织模型所需的资源,例如网格文件。在本节中,我们将创建Velodyne SDF模型,并在其中添加两个网格文件velodyne_base.daevelodyne_top.dae

    1、命令行中输入以下命令创建目录。由于Gazebo知道模型路径,因此我们直接将目录放置在~/.gazebo/models中,这样就不用另外设置了,

    mkdir ~/.gazebo/models/velodyne_hdl32
    

    2、创建文件model.config。用于记录模型需要一些信息。包括引用的模型描述文件(xxx.sdf)

    gedit ~/.gazebo/models/velodyne_hdl32/model.config
    

    配置文件内容如下;

    <?xml version="1.0"?>
    
    <model>
      <name>Velodyne HDL-32</name>
      <version>1.0</version>
      <sdf version="1.5">model.sdf</sdf>
    
      <author>
        <name>Optional: YOUR NAME</name>
        <email>Optional: YOUR EMAIL</email>
      </author>
    
      <description>
        A model of a Velodyne HDL-32 LiDAR sensor.
      </description>
    
    </model>
    

    3、将上一篇velodyne.world 中的内容复制到model.sdf里面,只保留<?xml>, <sdf><model>这三个块, 去掉以下部分:

    • <include>块,该块包含光线和地面两部分
    • <world>标签,注意是标签,不要删除里面内容

    4、启动gazebo选择Insert左侧的标签,然后向下滚动以找到 Velodyne HDL-32
    单击Velodyne HDL-32,然后在渲染窗口中单击鼠标左键以生成模型。

    5、在velodyne_hdl32文件夹下创建meshes文件夹并将两个dae文件放入其中,接下来我们编辑sdf文件,在<visual>块中将原本的<cylinder>内容替换为<mesh>

     <visual name="top_visual">
       <geometry>
         <!-- The mesh tag indicates that we will use a 3D mesh as
              a visual -->
         <mesh>
           <!-- The URI should refer to the 3D mesh. The "model:"
               URI scheme indicates that the we are referencing a Gazebo
               model. -->
           <uri>model://velodyne_hdl32/meshes/velodyne_top.dae</uri>
         </mesh>
       </geometry>
     </visual>
    

    重新加载模型后我们可以看到以下效果:

    在这里插入图片描述
    通过初始化位置来纠正摆放(<pose>标签)
    <visual name="top_visual">
      <!-- Lower the mesh by half the height, and rotate by 90 degrees -->
      <pose>0 0 -0.0376785 0 0 1.5707</pose>
      <geometry>
        <mesh>
          <uri>model://velodyne_hdl32/meshes/velodyne_top.dae</uri>
        </mesh>
      </geometry>
    </visual>
    
    在这里插入图片描述

    6、主体部分同样如此

    <visual name="base_visual">
      <!-- Offset the visual by have the base's height. We are not rotating
           mesh since symmetrical -->
      <pose>0 0 -0.029335 0 0 0</pose>
      <geometry>
        <mesh>
          <uri>model://velodyne_hdl32/meshes/velodyne_base.dae</uri>
        </mesh>
      </geometry>
    </visual>
    

    最后我们得到了含真实样子的传感器模型了


    在这里插入图片描述

    \color{#2d7dcd}{如果觉得ok}\color{#FFDEAD}{点个赞}\color{#FFDEAD}{点个关注}\color{#2d7dcd}{也欢迎给个} \color{#FFDEAD}{打赏} \color{#2d7dcd}{支持一下编者的工作}

    相关文章

      网友评论

          本文标题:gazebo教程(四)改善Velodyne模型外观

          本文链接:https://www.haomeiwen.com/subject/wlpzfhtx.html