初级教程: 模型编辑器


模型编辑器

现在,我们将构建一个简单的机器人——轮式车辆模型,并添加一个传感器,使其能够使机器人跟随目标点(人)。

使用模型编辑器,我们可以在图形用户界面(GUI)中构造简单的模型。对于更复杂的模型,您需要学习如何编写SDF文件,并查看有关构建机器人的教程。但是现在,我们可以在Gazebo GUI中完成所有操作!

模型编辑器用户界面

在顶部菜单栏中点击Edit并选择Model Editor,或者使用快捷键Ctrl+M 进入模型编辑器。一旦进入模型编辑器状态,物理仿真将立即暂停

模型编辑器的界面看起来与Gazebo主界面相似,但有一些细微的差异。左面板和顶部工具栏现在只包含用于编辑和创建模型部分的小部件。因为现在暂停了仿真,所以显示模拟数据的底部工具栏被隐藏了。

  1. 工具栏(Toolbar) - 包含用于编辑模型的工具
  2. 调色板(Palette) - 也称为 左面板 。有两个选项卡用于编辑模型。
  3. 插入选项卡(Insert tab) - 用于添加链接和嵌套模型的工具
  4. 模型选项卡(Model tab) - 允许编辑模型属性和内容

调色板 (左面板)

调色板 有两个选项卡.

  • 插入: “插入”选项卡用于向模型编辑器添加新零件(链接和模型),共三个部分:

    • 简单形状: 可以插入以在模型中形成链接的基本几何形状。
    • 自定义形状: 使用“添加”按钮,可以导入自定义网格。目前支持COLLADA(.dae)、3D系统(.stl)、Wavefront(.obj)和W3C SVG(.SVG)文件.
    • 模型数据库: 有一个模型列表,模型可以像简单形状一样插入到模型编辑器中。一旦插入,它们就称为嵌套模型。
  • 模型: 使用“模型”选项卡可以设置要构建的模型的名称和基本参数。它显示模型中的链接、关节、嵌套模型和插件的列表。可以使用Link Inspector修改参数,也可以使用下面方法中的任何一种打开它。

    1. 双击列表中的项目
    2. 双击场景中的项目
    3. 右键单击列表中的项并选择“Open Link Inspector
    4. 右键单击场景中的项目并选择“Open Link Inspector

工具栏

与模拟模式类似,模型编辑器中的主工具栏包含用于与场景中的对象交互的工具,请参见(用户界面教程)。

可用的工具包括选择、平移、缩放、旋转、撤消和重做、复制和粘贴、对齐、捕捉、视图调整和关节创建。

局限性

模型编辑器支持大多数基本的模型构建任务,这些任务可以通过编写SDF来完成。但是,有些功能尚不可用:

  • 编辑嵌套模型和嵌套模型中的链接。

  • 添加和编辑某些几何图形类型,包括平面和折线。

  • 支持高度图。

  • CAD功能。

车辆模型

创建车辆

本节提供有关在模型编辑器中创建简单车辆模型的分步说明。

首先,切换到编辑模型模式。我们可以点击菜单栏的 Edit,选择Model Editor。

底盘

  1. 首先,我们将创建车辆底盘。在左侧面板的“insert”选项卡中,单击长方体图标一次(需要在Model Editor模式下),将光标移动到场景中的任何位置,然后再次单击以释放长方体。

  2. 接下来,调整长方体的大小,让它看起来更像汽车底盘的形状。我们可以通过选择位于顶部工具栏上的缩放工具来完成此操作。 选择场景中的长方体,该长方体上方应出现一个RGB颜色的标记。红色标记表示X轴,绿色表示Y轴,蓝色表示Z轴。将鼠标移到红色标记上以高亮显示,然后单击并拖动以使底盘沿X轴变长。缩放底盘,使其大约2米长。你可以通过观察地面上的1x1米的网格来估算。

  3. 现在用缩放工具放平底盘。单击并向下拖动蓝色标记,使底盘大约为其原始大小的一半。

  4. 我们要把底盘降到离地面更近的地方。为了精确测量,我们将使用链接检查器(link inspector)。双击模型以打开link inspector。向下滚动到“link”选项卡的底部,找到Pose参数并将Z更改为0.4米,然后在框外单击(不要按enter键)。单击“Click OK”保存更改并关闭link inspector。

前轮

  1. 首先从左侧面板上的“insert”选项卡中插入一个圆柱体。

  2. 车轮应该是在地面上滚动,我们可以调整圆柱体的方向,使用链接检查器沿X轴旋转它。双击圆柱体,滚动到底部的“Pose”部分,将“Roll”更改为1.5707弧度(90度),然后单击框外-暂时不要关闭Link Inspector。

  3. 接下来,通过提供精确的尺寸来调整轮子的大小。转到“visual”选项卡以查看此链接中的视觉效果。通过单击可视文本标签旁边的小箭头展开可视项。向下滚动到“Geometry”部分,将“Radius”更改为0.3m,“Length”更改为0.25m。

  4. 你现在应该可以看到一个更小的圆柱体在一个更大的圆柱体内。这是意料之中的,因为我们只改变了视觉几何,但没有改变碰撞。“visual”是链接的图形表示,不影响物理模拟。另一方面,物理引擎使用“碰撞”进行碰撞检查。若要同时更新车轮的碰撞,请点击视觉旁边的“collision”选项卡,在与视觉相同的位置,输入相同的几何体尺寸。半径:0.3m,长度:0.25m。单击“确定”保存更改并关闭检查器。

  5. 现在我们已经创建了我们的第一个轮子,我们将使用它作为模板并制作另一个。选择控制盘并单击顶部工具栏中的复制图标。

    现在,让我们确保车辆将通过沿X轴正方向(场景中的红色标记)以确保车辆能够正确行驶。在下一步中添加车轮时,请确保车轮位于沿X轴正方向延伸的车辆末端。

  6. 底盘和车轮目前是两个独立的、可自由移动的物体。为了约束它们的运动,我们将在每个车轮和底盘之间添加关节。单击顶部工具栏中的关节图标以打开“Create Joint”对话框。

  7. “Create Joint”对话框包含通常为关节指定的关节属性。在配置任何属性之前,系统会提示您选择关节的父级和子级链接。将鼠标移到“场景”中的底盘上以使其突出显示,然后单击以将其设置为关节的父级。

  8. 将鼠标移至左前轮;一条线现在应该从底盘的原点延伸到鼠标的末端。单击轮子将其设置为关节的子代。创建一个新的关节。默认情况下,它是旋转关节(Revolute)(如对话框的关节类型部分中所示),恰好是我们想要的关节类型。

    注意:我们可以单击带有橙色边的立方体图标来改变当前的视角。

  9. 接下来,我们需要配置轮子的旋转轴。在“Create Joint”对话框中,找到Joint axis部分,并将轴更改为 Z (0、0、1),注意轮子各个轴上的颜色显示。您应该看到一个黄色的环现在出现在关节图的蓝色箭头上方,表示其为旋转轴。

  10. 为了使车轮与底盘对齐,我们将使用关节创建对话框中的Align Links的对齐选项。首先,我们将在X轴上对齐,因此单击X align Max,这时圆柱体应高亮显示,表示其位置已经发生变化。

  11. 同时我们还希望使车轮与底盘平齐。可以单击“Y Align Max”选项,但是这样的话车轮在地盘内部,我们可以单击旁边的“Reverse”选项,将车轮最小值(最大值的反转)与地盘最大值对齐,然后点击“创建”。

    请注意,此Reverse选项适用于子链接,因为下面的下拉列表中显示的默认对齐方式配置为Child to Parent。如果设置了Parent to Child配置,则Reverse选项将应用于父链接。

  12. 要将地盘放置在地面上,请双击控制盘打开“link inspector”。我们可以使用对话框底部的“Pose”部分来移动轮子。假设车轮的半径为0.3m,继续将Z位置更改为0.3m以放置在地面上,然后按Ok。

  13. 对另一个前轮重复关节创建过程和轴配置.确保a)底盘是关节的父轮,车轮是子轮,b)旋转轴设置为Z,c)使用Y对齐最小值选项将右车轮与底盘另一侧对齐。

脚轮

  1. 要为车辆制作脚轮,请置于顶端面板上的“ball”按钮,然后将其插入场景中。

  2. 通过提供与前轮相同的确切尺寸来调整球体的大小。转到“视觉”选项卡以查看此链接中的视觉列表,展开唯一的选项,向下滚动到该Geometry部分替换其更改Radius为0.2m 。确保对“碰撞”选项卡中的碰撞也执行相同的操作。

  3. 要在脚轮和底盘之间创建关节,请单击顶部工具栏上的“Joint”图标,以显示“Joint Creation”对话框。将鼠标移到场景上,然后选择底盘作为父链接,选择球体作为子链接。

  4. 与前轮关节不同,脚轮在所有方向上滚动,并且没有特定的旋转轴。在Gazebo中,这是使用球形接头模拟的。因此,在Joint types选项中选择Ball(球连接)。您应该在场景中看到关节视觉变化的颜色,以指示已设置了不同的关节类型。Joint typesBall

  5. 接下来,对准脚轮,使其与底盘居中,并位于后端。在Align links部分中,选择Y Align Center,选择在Y轴上居中的选项,然后选择X Align Min(最小对齐),使脚轮移动到车轮右后方的选项。按下Create按钮以完成关节创建过程。Y Align CenterYX Align Min

  6. 最后,调整脚轮的位置,使其位于地面上方。通过打开链接检查器并将Z位置设置为0.2m来执行此操作。

添加传感器

我们将添加到汽车中的传感器是深度相机传感器,它将帮助我们检测汽车前方的物体。在本教程中,我们将从模型数据库中插入现有的传感器模型。

  1. 转到“组件面板”(左面板),然后选择Insert选项卡以查看此部分中可用的模型列表。Model Database

  2. 列表中的模型是根据它们所在的所在路径来组织的。如您所见,第一个列表包含本地计算机上可用的模型,如标题中的路径所示。如果您是初次使用,则列表中可能看不到很多模型。从在线模型数据库下载其时,将会出现更多信息。查找带有路径的列表,然后展开它以查看在线模型数据库中可用的模型。http://gazebosim.org/models/

  3. 这些模型按字母顺序排列。在列表中找到“深度相机”,然后以它为开始下载模型。这可能需要几秒钟,所需的时间取决于网络连接。

  4. 下载完成后,您应该会看到深度相机模型出现在场景中。它看起来像一个小立方体。将鼠标移到场景上,然后单击汽车前面的空白处以插入深度摄像头。

  5. 在顶部工具栏中选择“平移”工具,然后移动深度相机,使其位于车辆前部底盘的顶部,并大致位于Y轴的中心。

  6. 接下来,将深度相机固定到底盘上。单击顶部工具栏中的“关节”图标以打开“关节创建”对话框。将鼠标移至场景,然后选择底盘作为父链接,选择深度摄像头作为子链接。

  7. 在Joint Types部分,选择Fixed选项(即固定连接),然后单击Create以完成创建关节。Joint TypesFixedCreate

添加插件

到目前为止,我们制造的车辆已包含所有物理和传感器组件。但是,它并不会真正做很多事情,但会保持静止并在仿真中生成深度数据。通过允许插件执行诸如传感器数据处理,路径规划和控制之类的计算,插件是一种具有一定自治权的增强模型的好方法。为简单起见,本教程将为我们的车辆使用现有的插件。请注意,可以创建自己的插件,但需要编写代码。请参阅插件教程

  1. 转到左侧面板并选择Model选项卡,以查看组成您所构建汽车模型的零件。

  2. 在Model Plugins选项下面,您应该看到一个ADD按钮。单击它以弹出一个“模型插件检查器”,您可以将新插件添加到模型中。Model PluginsAdd

  3. 首先,给插件起个名字。follower在字段中输入。在此模型中,插件名称必须唯一。

  4. 我们将要使用的插件称为libFollowerPlugin.so,因此请在Filename字段中输入此插件。文件名对应于本地计算机上存储的插件库的实际文件名。它以动态链接的共享库的形式存在,因此具有命名约定和扩展名(在Linux上)。如果您在其他操作系统上使用Gazebo,请不要担心,因为该扩展名将自动替换为正确的扩展名。

  5. follower插件不需要任何其他参数,因此您可以将该Innerxml字段留空。注意:这是一个用于演示目的的简单插件。插件通常具有各种相关的参数,例如,差动驱动插件需要指定控制左右车轮的关节名称,以便它可以沿正确的方向移动车辆。对于follower插件,它会对其附加的模型类型做出许多假设,并尝试自动查找关节和传感器。

  6. 单击OK以添加插件。现在,该插件应显示在左侧面板的下方。Model Plugins

保存模型

  1. 通过转到File菜单并选择来保存模型。输入模型的名称,然后单击。Save AsSave

  2. 通过转到File并选择退出模型编辑器。Gazebo现在应切换回普通模拟模式。点击播放按钮以运行模拟。Exit Model Editor

  3. 要测试插件是否正常工作,请在汽车前面插入一个盒子,然后观察汽车向其缓慢移动。

如果要稍后再编辑模型,只需右键单击它,在右键菜单中选择Edit Model