Gazebo学习笔记4:模型编辑器

原文链接:http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3


现在我们将构建我们的简单机器人。 我们将制造一辆轮式车辆,并添加一个传感器,使机器人能够跟随一个斑点(人)。

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

模型编辑器(Model Editor)用户界面

要进入Model Editor,请单击菜单栏中的Edit并选择Model Editor。 或者使用热键Ctrl+M当你在模型编辑器中时,仿真将立即暂停。

模型编辑器界面看起来类似于主Gazebo UI,但有一些细微的不同。 左侧面板和顶部工具栏现在仅包含用于编辑和创建模型各部分的小部件。 由于现在暂停了仿真,因此显示仿真数据的底部工具栏处于隐藏状态。
在这里插入图片描述

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

选项板/左面板(Palette)

左面板有两个选项卡。

  • INSERT 插入: Insert选项卡是将新部件(链接和模型)添加到模型编辑器的位置。 有三个部分。

    • Simple Shapes 简单形状: 这些是可以插入以在模型中形成链接的基本体几何图形。
    • Custom Shapes 自定义形状: 使用Add按钮可以从模型中的链接导入自定义网格导。 它目前支持COLLADA(.dae)、3D Systems(.stl)、Wavefront(.obj)和W3C SVG(.svg)格式的文件。
    • Model Database 模型数据库: 有一个模型列表。 这些可以像简单的形状一样插入到模型编辑器中。 一旦插入,它们被称为嵌套模型。
  • MODEL 模型: Model 选项卡允许你设置正在构建的模型的名称和基本参数。 它显示模型中的链接、关节、嵌套模型和插件的列表。 可以使用链接检查器(Link Inspector)修改参数。 你可以使用这些方法中的任何一种来打开它:

    • 双击列表中的项目;
    • 双击场景中的项目;
    • 右键单击列表中的项目,并选择打开链接检查器;
    • 右键点击场景中的项目,然后选择打开链接检查器

工具栏 Toolbar

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

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

模型编辑器的局限性

模型编辑器支持通过编写SDF可以完成的大多数基本模型构建任务。 但是,有几个功能尚未提供:

  • 编辑嵌套模型和嵌套模型中的链接;
  • 添加和编辑某些几何类型,包括平面和折线;
  • 支持高度图;
  • CAD 功能。

简单小车的构造

创建一个小车

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

底盘

  1. 首先,我们将创建车辆底盘。 在左侧面板的Insert选项卡中,单击一次长方体图标,将光标移动到场景中的任意位置,然后再次单击以释放长方体。
    在这里插入图片描述
  2. 接下来,调整长方体的大小,使其看起来更像汽车底盘的形状。 我们可以通过选择位于顶部工具栏上的缩放工具来完成此操作。 选择场景中的长方体,长方体上方应该会出现一个RGB颜色的标记。 红色标记表示X轴,绿色表示Y,蓝色表示Z。将鼠标移到红色标记上以高亮显示它,然后单击并拖动以使机箱沿X轴加长。 对机箱进行缩放,使其大约有2米长。 您可以通过查看地面上的1x1米栅格来估计这一点。
    在这里插入图片描述
  3. 现在使用缩放工具展平机箱。 单击并向下拖动蓝色标记,使机箱大约是其原始大小的一半。
    在这里插入图片描述
  4. 我们想把底盘降低到离地面更近的地方。 为了提供精确的测量,我们将使用链接检查器 Link Inspector。 双击该底盘以调出Inspector。 向下滚动到链接选项卡的底部以找到姿势Pose参数,并将Z更改为0.4m,然后在框外单击(不要按Enter键)。 单击OK保存更改并关闭检查器。
    在这里插入图片描述

前轮

  1. 让我们继续讨论前轮。 首先从左侧面板上的Insert(插入)选项卡插入一个圆柱体。

  2. 处于默认方向的圆柱体是不能滚动的。 让我们使用链接检查器Link Inspector沿X轴旋转它。 双击圆柱体,打开链接检查器 Link Inspector滚动到底部的姿势部分,将侧滚Roll更改为1.5707弧度(90度),然后在框外单击。 暂时不要关闭链接检查器 Link Inspector。
    在这里插入图片描述

  3. 接下来,通过给出精确的尺寸来调整轮子的大小。转到“视觉“Visual 选项卡查看此链接中的视觉对象列表。应该只有一个。通过单击可视文本标签旁边的小箭头展开可视项。向下滚动到“几何体” Geometry部分,将“半径”Radius更改为0.3m,将“长度”Length更改为0.25m。
    在这里插入图片描述

  4. 现在,您应该看到一个较大的圆柱体内部有一个较小的圆柱体。 这是意料之中的,因为我们只更改了视觉几何体,而没有更改碰撞 collision。 “视觉”是链接的图形表示,不影响物理仿真。 另一方面,物理引擎使用“冲突” 'collision’进行冲突检查。 若要同时更新控制盘的碰撞 ‘collision’,请转到碰撞选项卡 collision,展开唯一的碰撞项,然后输入相同的几何尺寸。 半径Radius:0.3m,长度Length:0.25m。 单击OK保存更改并关闭Inspector。

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

  6. 单击粘贴图标并将鼠标移回场景以插入副本。
    在这里插入图片描述
    现在,让我们通过沿X轴正方向(场景中的红色标记)对齐底盘来确保车辆正确行驶。在下一步中添加车轮时,请确保车轮位于沿X轴正方向延伸的车辆末端。

  7. 底盘和车轮目前都是自由移动的车身。 为了约束它们的运动,我们将在每个轮子和底盘之间添加关节。 单击顶部工具栏中的关节Joint图标以打开关节创建对话框。
    在这里插入图片描述

  8. ”关节创建“'Joint Creation'对话框包含通常为关节指定的关节属性。 在配置任何属性之前,系统会提示您选择关节的父链接和子链接。 将鼠标移动到场景中的底盘上,看到它突出显示,然后单击它,将其设置为关节的父节点。
    在这里插入图片描述

  9. 将鼠标移到左前轮;现在应该会有一条线从机箱的起点延伸到鼠标的末端。 单击控制盘以将其设置为关节的子项。 将创建一个新运动类型。 默认情况下,它是旋转运动类型(如对话框中的运动类型 Joint Types 部分所示),恰好是我们需要的运动类型。
    注意:此时更改视角可能会很有用。这可以在上面的工具栏中完成;单击带有橙色边的立方体图标。
    在这里插入图片描述

  10. 接下来,我们需要配置车轮的旋转轴。 在关节创建对话框中,找到关节轴 Joint axis部分,并将轴更改为Z (0,0,1)。 注意轮子上的RGB关节视觉。 您应该会看到,现在关节视觉的蓝色箭头上方会出现一个黄色的圆环,表示它是旋转轴。
    在这里插入图片描述

  11. 为了使车轮与底盘对齐,我们将在关节创建对话框的对齐关节 Align links 部分使用不同的对齐选项。 首先,我们将在 X 轴对齐,所以单击 X 最大对齐X Align Max选项,以查看对齐的结果。 圆柱体应该突出显示,以表明其姿态已经改变。
    在这里插入图片描述
    在这里插入图片描述

  12. 在我们的示例中,我们希望将车轮与底盘平齐放置。若要拉近车轮,请单击“Y向最大对齐”Y Align Max选项。然而,这还不是我们想要的。单击Y对齐选项旁边的反转Reverse选项,将车轮的最小值(最大值的反转)与底盘的最大值对齐。请注意,“反转”Reverse选项将应用于子链接,因为下面下拉列表中显示的默认对齐配置是从子到父Child to Parent的。如果设置了父到子Parent to Child的配置,则反向Reverse选项将应用于父链接。点击创建Create
    在这里插入图片描述

  13. 若要将车轮放置在地面上,请双击车轮以打开“链接检查器”。我们可以使用对话框底部的Pose部分来移动车轮。假设车轮的半径为0.3米,继续将Z位置更改为0.3米以放置在地面上,然后按“确定”OK

  14. 对另一个前轮重复关节创建过程和轴配置,确保 a)底盘是关节的父级,车轮是子级,b)旋转轴设置为Z,以及 c)使用Y Align Min选项将右车轮与底盘另一侧对齐。
    在这里插入图片描述

后轮

  1. 要为车辆制作后轮,请单击左侧面板上的球体按钮并将其插入到场景中。
    在这里插入图片描述
  2. 通过以与前轮相同的方式为球体指定精确尺寸来调整球体大小。 转到Visual选项卡以查看此链接中的可视对象列表,展开唯一的可视项目,向下滚动到Geometry部分,并将Radius更改为0.2m。 确保也对冲突collision选项卡中的冲突执行相同的操作。
    在这里插入图片描述
  3. 要在后轮和底盘之间创建关节,请通过单击顶部工具栏中的关节图标来调出关节创建对话框。 将鼠标移至场景,并选择车体作为父链接,选择球体作为子链接。
    在这里插入图片描述
  4. 与前轮关节不同,脚轮向所有方向滚动,没有特定的旋转轴。 在Gazebo中,这是使用滚珠关节模拟的。 因此,在“关节类型”Joint types区域下,选择“滚珠Ball运动类型”选项。 您应该在场景中看到关节视觉更改颜色,以指示已设置不同的关节类型。
    在这里插入图片描述
  5. 接下来,将后轮对齐,使其与车体居中,并位于后端。 在对齐链接区域中,选择Y对齐中心 Y Align Center选项以使两个链接在Y轴上居中,并选择X对齐最小 X Align Min选项以移动后轮,使其放置在车辆后方的右侧。 按创建 Create按钮以完成关节创建过程。
    在这里插入图片描述
  6. 最后,调整后轮的位置,使其位于地面上方。 通过打开链接检查器并将 Z位置设置为0.2m来执行此操作。

添加传感器

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

  1. 转到选项板(左侧面板)并选择 Insert选项卡,以查看Model Database部分中可用的模型列表。
    在这里插入图片描述
  2. 列表中的模型按它们所在的路径进行组织。 如您所见,第一个列表包含本地计算机上可用的型号,如标题中的路径所示。你可以从在线模型数据库下载一些普遍的模型。模型的网站为https://bitbucket.org/osrf/gazebo_models/src/default/,这些模型是按字母顺序排列的。 在列表中可以看到深度相机 Depth Camera。可以使用以下命令单独下载这个模型:
    hg clone https://bitbucket.org/osrf/gazebo_models/depth_camera
    
    建议下载到Model Database的第一个路径下。
    点击clone可以查看clone的格式
    然后单击它开始下载模型。如果网速太慢clone不了,可以尝试自己新建/depth_camera的文件夹和model.configmode.sdf文件,将网站中文件的内容复制进去。需要重启Gazebo后才能在原路径下显示新建的深度相机模型,重启前一定要保存小车模型,请跳到最后一步查看如何保存模型。
  3. 重启Gazebo后,在“插入”面板找到刚才保存的模型,在模型上右键,选择编辑模型,重新进入编辑模式。这时我们将深度相机加入场景。它看起来像一个小立方体。 将鼠标移到场景上,然后单击汽车前面的空白区域以插入深度摄影机。
    在这里插入图片描述
  4. 选择顶部工具栏中的平移工具,然后移动深度摄影机,使其位于车辆前面的底盘顶部,并大致居中于Y轴。
    在这里插入图片描述5. 接下来,将深度相机固定到车体上。 单击顶部工具栏中的关节Joint图标以打开关节创建对话框。 将鼠标移至场景,并选择车体作为父链接,选择深度摄影机作为子链接。
    在这里插入图片描述
  5. 在关节创建对话框中的关节类型 Joint Types部分下,选择固定关节 Fixed选项,然后单击创建 Create以完成关节的创建。
    在这里插入图片描述

添加插件

到目前为止,我们创建的车辆已经配备了所有的物理和传感器组件。 但是,它不会真正起到什么作用,只是静止不动,并在模拟中生成深度数据。 通过允许模型执行传感器数据处理、路径规划和控制等计算,插件是增强模型自主性的好方法。 为简单起见,本教程将使用我们车辆的现有插件。 请注意,您可以创建自己的插件,但这需要编写代码。 请参阅插件教程

  1. 转到左侧面板并选择Model选项卡,以查看构成您构建的汽车模型的部件。
    在这里插入图片描述

  2. Model Plugins下面,您应该看到一个Add按钮。 点击它可以打开一个Model plugin Inspector,它允许您向模型中添加一个新的插件。
    在这里插入图片描述

  3. 首先,给插件命名。 在Plugin Name字段中输入‘follower’。 插件名称在此模型中必须是唯一的。

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

  5. follower插件不需要任何附加参数,因此可以将Innerxml字段留空。注意:这是一个用于演示的简单插件。插件通常具有各种相关参数,例如,差速驱动插件需要指定控制左右车轮的接头名称,以便能够将车辆移动到正确的方向。在follower插件的情况下,它对它所连接的模型类型进行了许多假设,并尝试自动查找关节和传感器

  6. 单击OK以添加插件。 该插件现在应该出现在左面板中的Model Plugins下。
    在这里插入图片描述

保存你的模型

  1. 通过转到File菜单并选择另存为Save As来保存模型。 输入模型的名称,然后单击保存 Save
    在这里插入图片描述
  2. 通过转到File并选择Exit Model Editor退出Model Editor。 Gazebo 现在应该切换回正常模拟模式。 点击Play按钮以运行模拟。
    在这里插入图片描述
  3. 要测试插件是否正常工作,请在汽车前面插入一个框,然后看到汽车慢慢地朝它移动。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

如果您想稍后再次编辑该模型,只需在其上单击鼠标右键,然后在上下文菜单中选择Edit Model

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值