创建模型

  • 本节目标
  • 一、模型编辑器用户界面
    • 调色板(左面板)
    • 工具列
    • 局限性
  • 二、车辆构造
    • 1、创建车辆
      • (1)、底盘
      • (2)前轮
      • (3)脚轮
    • 2、添加传感器
    • 3、添加插件
    • 保存模型

本节目标

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

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

一、模型编辑器用户界面

想要创建一个简单的机器人,我们首先要熟悉如何使用gazebo自带的模型编辑器,先从其用户界面开始叭~

要进入模型编辑器,在顶部菜单栏中单击Edit,然后选择Model Editor。或者,使用热键Ctrl + M

  • 注意:一旦进入模型编辑器中,gazebo中的物理仿真将立即暂停。

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

①工具栏 -包含用于编辑模型的工具
②调色板 -也称为“ 左面板”。有两个用于编辑模型的标签。
③插入标签 -用于添加关节和模型约束的工具
④“模型”选项卡 -允许编辑模型属性和内容

调色板(左面板)

改版块有两个选项卡。

①INSERT:在“插入”选项卡中,您可以将新零件(链接和模型)添加到模型编辑器。共分为三个部分。

  • 简单形状:这些是可以插入以在模型中形成链接的基本几何形状。
  • 自定义形状:该Add按钮允许您从模型的链接中导入自定义网格。目前,它支持COLLADA(.dae),3D Systems(.stl),Wavefront(.obj)和W3C SVG(.svg)文件。
  • 模型数据库:具有模型列表。可以按照与简单形状相同的方式将它们插入到“模型编辑器”中。插入后,它们称为嵌套模型。

②模型:使用“模型”选项卡可以设置要构建的模型的名称和基本参数。它显示了模型中的链接,关节,模型约束和插件的列表。可以使用Link Inspector修改参数。可以使用任何这些方法打开它。

  • 双击列表中的项目
  • 双击场景中的项目
  • 右键单击列表中的项目,然后选择 Open Link Inspector
  • 右键单击场景中的项目,然后选择 Open Link Inspector

工具列

与“仿真”模式下一样,“模型编辑器”中的主工具栏包括用于与场景中的对象进行交互的工具。

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

局限性

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

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

二、车辆构造

熟悉模型编辑器的界面之后,我们正式开始“造车”~

1、创建车辆

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

(1)、底盘

①首先,我们将创建车辆底盘。在左侧面板的“insert”选项卡中,在“box”图标上单击一次,将光标移至“场景”中的任何位置,然后再次单击以释放框。

②接下来,调整盒子的尺寸,使其看起来更像汽车底盘的形状。我们可以通过选择顶部工具栏上的“缩放”工具来做到这一点。在“场景”中选择该框,并且该框上方应显示RGB标记。红色标记代表X轴,绿色代表Y,蓝色代表Z。将鼠标移到红色标记上以使其突出显示,然后单击并拖动以使机箱沿X轴更长。缩放机箱,使其大约2米长。您可以通过查看地面上的1x1米网格来估算。

③现在,使用“缩放”工具展平机箱。单击并向下拖动蓝色标记,以使机箱大约是其原始大小的一半。

④我们希望将底盘降低到更靠近地面的位置。为了给出精确的测量值,我们将使用链接检查器(link inspector)。双击该框以调出检查器。向下滚动到link选项卡的底部以找到Pose参数,并将其更改Z为0.4m,然后在框外单击(不要按Enter)。单击OK以保存更改并关闭检查器。

(2)前轮

现在我们开始制作轮子
①首先从左侧面板上的insert选项卡插入圆柱体。

②圆柱体在其默认方向上滚动得不会很好。让我们使用Link Inspector沿X轴旋转它。双击圆柱体,滚动到底部的“姿势”部分,然后更改Roll为1.5707弧度(90度),然后在框外单击。暂时不要关闭检查器。

③接下来,通过提供确切的尺寸来调整轮子的尺寸。转到视觉选项卡以查看此链接中的视觉列表。应该只有一个。通过单击visual文本标签旁边的小箭头来展开可视项。向下滚动到该Geometry部分,然后将其更改Radius 为0.3m和Length为0.25m。

④现在,您应该在较大的圆柱体内看到较小的圆柱。这是预料之中的,因为我们仅更改了视觉几何体,而没有更改碰撞。visual是链接的图形表示,不影响物理模拟。切换到Geometry选项。设置Radius:0.3m和Length:0.25m 单击OK以保存更改并关闭检查器。

右边collision选项卡用于碰撞检查。

⑤现在我们已经创建了第一个轮子,我们将其用作模板并制作另一个轮子。选择滚轮,然后单击顶部工具栏中的复制图标。

⑥单击“粘贴”图标,然后将鼠标移回“场景”以插入副本

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

⑦底盘和车轮目前是自由移动的车身。为了限制它们的运动,我们将在每个车轮和底盘之间添加关节。单击顶部工具栏上的Joint图标以弹出Create Joint对话框。

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

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

注意:您可能会发现此时更改视角很有用。可以在上部工具栏中完成;单击带有橙色边的多维数据集图标。


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

⑪为了使车轮与底盘对齐,我们将在“ Joint Creation”对话框的部分中使用不同的对齐选项Align links。首先,我们将在X轴上对齐,因此单击X Align Max选项以查看对齐结果。圆柱体应突出显示以指示其姿势已更改。


⑫在我们的示例中,我们要使轮子与底盘平齐。要使车轮更靠近,请单击Y Align Max选项。但是,这还不是我们想要的。单击Y对齐选项旁边的Reverse选项,以将轮子的最小值(最大值的反方向)与底盘的最大值对齐。最后点击按Create

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

⑬要将轮子放置在地面上方,请双击轮子以打开链接检查器(link inspector)。我们可以使用Pose对话框底部的部分来移动轮子。假设轮子的半径为0.3m,请继续并将Z位置更改为0.3m以放置在地面上,然后按Ok

⑭重复另一个前轮的关节创建过程和轴配置,确保:

  • a)底盘是关节的父级,而轮是子级的,
  • b)旋转轴设置为Z
  • c)使用Y Align Min选项将右轮对准底盘的另一侧。

(3)脚轮

①要为车辆制作脚轮,请单击左侧面板上的“球形”按钮,然后将其插入场景。

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

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

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

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

⑥最后,调整脚轮的位置,使其位于地面上方。通过打开link inspector并将Z位置设置为0.2m。

2、添加传感器

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

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

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

③这些模型按字母顺序排列。在列表中找到“深度相机” (Depth Camera),然后单击它以开始下载模型。这可能需要几秒钟,具体取决于网络连接。

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

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

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

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

3、添加插件

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

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

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

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

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

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

保存模型

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

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

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

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

https://blog.csdn.net/weixin_41045354/article/details/103668162.

gazebo入门教程(二)建立简单模型相关推荐

  1. 【Gazebo入门教程】第二讲 模型库导入与可视化机器人建模(模型编辑器)

    [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 文章目录 [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 一.模型库导入 二.模型编辑器(以轮式 ...

  2. python爬虫入门教程(二):开始一个简单的爬虫

    2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...

  3. 【Gazebo入门教程】第四讲 场景建模/建筑编辑器

    [Gazebo入门教程]第四讲 场景建模/建筑编辑器 文章目录 [Gazebo入门教程]第四讲 场景建模/建筑编辑器 一.场景编辑器 1.1 打开方式: 1.2 UI界面分析: 二.导入平面图 2.1 ...

  4. 【Gazebo入门教程】第一讲 Gazebo的安装、UI界面、SDF文件介绍

    [Gazebo入门教程]第一讲 Gazebo的安装.UI界面.SDF文件介绍 文章目录 [Gazebo入门教程]第一讲 Gazebo的安装.UI界面.SDF文件介绍 一.Gazebo的简介与安装 1. ...

  5. 【Gazebo入门教程】第五讲 控制器插件的编写与配置(上)

    [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 文章目录 [Gazebo入门教程]第五讲 控制器插件的编写与配置(上) 一.控制插件的使用方法 1. 插件简介 2. 插件编写流程 二.模 ...

  6. 【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模

    [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 文章目录 [Gazebo入门教程]第三讲 SDF文件的静/动态编程建模 一.自定义模型并导入Gazebo 1. 基础操作准备 2. 建立模 ...

  7. 【Gazebo入门教程】第六讲 控制器插件的编写与配置(下)

    [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) \qquad 文章目录 [Gazebo入门教程]第六讲 控制器插件的编写与配置(下) 一.系统插件 二.Velodyne传感器插件 1. ...

  8. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  9. Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输

    Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...

  10. LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。

    LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...

最新文章

  1. Scala和范畴论 -- 对Monad的一点认识
  2. ElasticJob-分布式作业调度神器,你们还在用Quartz吗
  3. 在notepad++中配置java编译环境
  4. 黑马程序员 Python学习笔记 之 名片管理系统
  5. 牛客网 2018年全国多校算法寒假训练营练习比赛(第五场) 题解
  6. java sql注入 正则表达式_有效防止SQL注入的5种方法总结
  7. adobe cs5中文补丁 indesign_indesign cs5下载_Adobe InDesign CS5简体中文版下载 - 下载之家...
  8. MYSQL 经纬度 地理位置
  9. PHP爬虫之phpspider
  10. 人力资源管理理论与实务第三章
  11. Pg extention pgcrypto
  12. java刻画三角形和梯形和圆形_三角形、梯形和圆形的类封装
  13. 干货!手把手教你穿透内网
  14. 360 私有云平台 MySQL 自动化实现剖析
  15. 微信小程序实现添加银行卡,银行卡号每隔四位插入空格并展示时仅显示前后四位,或者仅显示后四位(超详细)
  16. 到底什么是幸存者偏差?有哪些例子?
  17. 动态网站与数据库的连接
  18. 压缩文件算法-哈夫曼详解
  19. 科汛在线图文下单系统
  20. 无需在线攻击-通过时间块利用 S7-1500 PLC

热门文章

  1. Oracle 字符集 原理及问题解决 (全)
  2. 时间格式中,hh小写的是12小时制,大写(HH)是24小时制的。
  3. 认识路由器与交换机,在常见的企业组网中起什么样的作用呢?
  4. Winlogon通知包(Winlogon Notification Package)
  5. 弟兄胜过他,因为羔羊的血
  6. 不同颜色的RGB值、透明度A
  7. 软件项目管理复习要点
  8. C# 接入企业微信群聊--机器人【markdown】
  9. Linux文本三剑客之一——awk详解(1)——awk看这两篇就够啦~PS:文末有练习,来练练手吧
  10. 学习笔记(5):第01章-互联网的概述(历史发展+技术发展+常见应用)-互联网的接入(手把手教你调试ADSL宽带技术)