Gazebo学习--第二讲:构建一个简单模型

第二讲 建立一个简单模型

概述

本讲将详细介绍SDF模型对象。
SDF模型可以描述从简单的形状到复杂的机器人。它指的是 SDF标签,本质上是链接,关节,碰撞对象,视觉效果和插件的集合。如果模型很复杂,生成模型文件可能很困难。该页面将提供一些有关如何构建模型的提示。

SDF 模型的组成

  • Links : 链接(Link) 包含模型一个实体的物理属性。这可以是轮子,也可以是关节链中的链接。每个链接可能包含许多碰撞和视觉元素。尝试减少模型中的链接数,可以提高性能和稳定性。例如,一个桌子模型可以包含5个通过关节连接的链接(4条腿,1条腿)。但是,这过于复杂,尤其是因为关节永远不会移动。而是创建具有1个链接和5个碰撞元素的桌子模型。
    • Collision碰撞 碰撞元素封装了用于碰撞检查的几何体。这可以是简单的形状(首选),也可以是三角形的网格(消耗更多的资源)。一个 链接(Link) 可能包含许多 碰撞 元素。
    • Visual : 视觉 视觉元素用于 链接(Link) 的可视化部分。一个 链接(Link) 可能有0个或者多个 视觉 元素。
    • Inertial惯性 元素描述了链节的动力学特性,例如质量和旋转惯性矩阵。
    • Sensor: 传感器 使用插件在 世界(world) 中收集数据。一个 链接(Link) 可以有0个或者多个 传感器
    • Light: 灯光 描述附加在 链接(Link) 上的光源。一个 链接(Link) 可以有0个或者多个光源。
  • Joints: 关节用于连接两个链接。关节将建立 链接(Link) 的父子关系以及其他参数,例如坐标轴的旋转角度和关节的限制。
  • Pligins : 插件是第三方创建的用于控制模型的共享库。

建立一个模型

第一步:组织网格信息

此步骤涉及收集构建模型所需的所有必要3D网格文件。Gazebo提供了一组简单的形状:盒子,球体和圆柱体。如果您的模型需要更复杂的东西,请继续阅读。
网格来自许多地方。Google的3D仓库是个获取3D模型的好地方。或者,您可能已经具有必要的文件。最后,您可以使用3D建模器(例如Blender或Sketchup)制作自己的网格。
Gazebo要求网格文件的格式设置为STL,Collada或OBJ,其中Collada和OBJ是首选格式。

  • 提示:使用3D建模软件移动每个网格,使其以原点为中心。这将大大简化模型在凉亭中的放置。

  • 提示: Collada和OBJ文件格式允许您将材料附加到网格。使用此机制可以改善网格的视觉外观。

  • 提示:保持网格简单。如果计划将网格用作碰撞元素,则尤其如此。通常的做法是将低多边形网格用于碰撞元素,将较高多边形网格用于视觉元素。更好的做法是使用内置形状之一(盒子,球体,圆柱体)作为碰撞元素

第二步:生成自己的模型SDF文件

首先创建一个非常简单的模型文件,或者复制一个现有的模型文件。这里的关键是从您知道有效的东西开始,或者可以很容易地调试。

这是一个非常基本的最小盒子模型文件,它只有一个单位大小的盒子形状作为碰撞几何体,并且具有相同的单位盒子视觉和单位惯性:
创建box.sdf 模型文件

gedit box.sdf

将以下内容拷贝到box.sdf文件中:




  
    0 0 0.5 0 0 0
    true
    
      
        1.0
         
          
          0.083       
          0.0         
          0.0         
          0.083       
          0.0         
          0.083       
        
      
      
        
          
            1 1 1
          
        
      
      
        
          
            1 1 1
          
        
      
    
  

请注意,Box几何的原点位于盒子的几何中心,因此,为了使盒子的底部与地面齐平,请添加标签< pose>0 0 0.5 0 0 0< /pose>,从而使盒子在地面以上。
提示 :上述例子中将盒子设置为静态,这使模型不可移动。这个特性在模型创建时非常有用。一旦你完成了模型创建,将标签< static>设置为false,从而使模型可移动。

第三步:增加模型sdf文件

慢慢增加更多的复杂性到sdf问价中。
最好按照以下顺序添加特征:

  1. 添加一个link;
  2. 设置碰撞单元;
  3. 设置可见单元;
  4. 设置惯性属性;
  5. 返回1,直到所有的links都被添加;
  6. 添加所有的joints;
  7. 添加所有的插件(如果有)。
    每添加一个属性,使用图形化客户端加载模型确保模型正确。但是box.sdf文件自己不足以加载模型到图形化客户端。必须设置正确的模型路径,从下一讲中将介绍:如何制作一个移动机器人。

你可能感兴趣的:(Gazebo学习--第二讲:构建一个简单模型)