Gazebo学习笔记4:模型编辑器
原文链接:http://gazebosim.org/tutorials?cat=guided_b&tut=guided_b3
文章目录
- 模型编辑器(Model Editor)用户界面
- 选项板/左面板(Palette)
- 工具栏 Toolbar
- 模型编辑器的局限性
- 简单小车的构造
- 创建一个小车
- 底盘
- 前轮
- 后轮
- 添加传感器
- 添加插件
- 保存你的模型
现在我们将构建我们的简单机器人。 我们将制造一辆轮式车辆,并添加一个传感器,使机器人能够跟随一个斑点(人)。
模型编辑器允许我们在图形用户界面(GUI)中构建简单的模型。 对于更复杂的模型,您需要学习如何编写SDF文件,并查看有关构建机器人的教程。 但是现在,我们现在可以在Gazebo GUI中做一切的事情!
模型编辑器(Model Editor)用户界面
要进入Model Editor,请单击菜单栏中的Edit
并选择Model Editor
。 或者使用热键Ctrl+M。当你在模型编辑器中时,仿真将立即暂停。
模型编辑器界面看起来类似于主Gazebo UI,但有一些细微的不同。 左侧面板和顶部工具栏现在仅包含用于编辑和创建模型各部分的小部件。 由于现在暂停了仿真,因此显示仿真数据的底部工具栏处于隐藏状态。
- Toolbar 工具栏-包含用于编辑模型的工具;
- Palette 面板-也称为左侧面板。 有两个用于编辑模型的选项卡;
- Insert tab 插入选项卡-用于添加链接和嵌套模型的工具;
- 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 功能。
简单小车的构造
创建一个小车
本节提供有关在模型编辑器中创建简单车辆模型的分步说明。
底盘
- 首先,我们将创建车辆底盘。 在左侧面板的Insert选项卡中,单击一次长方体图标,将光标移动到场景中的任意位置,然后再次单击以释放长方体。
- 接下来,调整长方体的大小,使其看起来更像汽车底盘的形状。 我们可以通过选择位于顶部工具栏上的缩放工具来完成此操作。 选择场景中的长方体,长方体上方应该会出现一个RGB颜色的标记。 红色标记表示X轴,绿色表示Y,蓝色表示Z。将鼠标移到红色标记上以高亮显示它,然后单击并拖动以使机箱沿X轴加长。 对机箱进行缩放,使其大约有2米长。 您可以通过查看地面上的1x1米栅格来估计这一点。
- 现在使用缩放工具展平机箱。 单击并向下拖动蓝色标记,使机箱大约是其原始大小的一半。
- 我们想把底盘降低到离地面更近的地方。 为了提供精确的测量,我们将使用链接检查器
Link Inspector
。 双击该底盘以调出Inspector。 向下滚动到链接选项卡的底部以找到姿势Pose
参数,并将Z
更改为0.4m,然后在框外单击(不要按Enter键)。 单击OK
保存更改并关闭检查器。
前轮
让我们继续讨论前轮。 首先从左侧面板上的Insert(插入)选项卡插入一个圆柱体。
处于默认方向的圆柱体是不能滚动的。 让我们使用链接检查器
Link Inspector
沿X轴旋转它。 双击圆柱体,打开链接检查器 Link Inspector滚动到底部的姿势部分,将侧滚Roll
更改为1.5707弧度(90度),然后在框外单击。 暂时不要关闭链接检查器 Link Inspector。
接下来,通过给出精确的尺寸来调整轮子的大小。转到“视觉“
Visual
选项卡查看此链接中的视觉对象列表。应该只有一个。通过单击可视文本标签旁边的小箭头展开可视项。向下滚动到“几何体”Geometry
部分,将“半径”Radius
更改为0.3m,将“长度”Length
更改为0.25m。
现在,您应该看到一个较大的圆柱体内部有一个较小的圆柱体。 这是意料之中的,因为我们只更改了视觉几何体,而没有更改碰撞 collision。 “视觉”是链接的图形表示,不影响物理仿真。 另一方面,物理引擎使用“冲突” 'collision’进行冲突检查。 若要同时更新控制盘的碰撞 ‘collision’,请转到碰撞选项卡
collision
,展开唯一的碰撞项,然后输入相同的几何尺寸。 半径Radius
:0.3m,长度Length
:0.25m。 单击OK保存更改并关闭Inspector。现在我们已经创建了第一个轮子,我们将使用它作为模板并制作另一个轮子。 选择控制盘并单击顶部工具栏中的复制图标
单击粘贴图标并将鼠标移回场景以插入副本。
现在,让我们通过沿X轴正方向(场景中的红色标记)对齐底盘来确保车辆正确行驶。在下一步中添加车轮时,请确保车轮位于沿X轴正方向延伸的车辆末端。底盘和车轮目前都是自由移动的车身。 为了约束它们的运动,我们将在每个轮子和底盘之间添加关节。 单击顶部工具栏中的关节
Joint
图标以打开关节创建对话框。
”关节创建“
'Joint Creation'
对话框包含通常为关节指定的关节属性。 在配置任何属性之前,系统会提示您选择关节的父链接和子链接。 将鼠标移动到场景中的底盘上,看到它突出显示,然后单击它,将其设置为关节的父节点。
将鼠标移到左前轮;现在应该会有一条线从机箱的起点延伸到鼠标的末端。 单击控制盘以将其设置为关节的子项。 将创建一个新运动类型。 默认情况下,它是旋转运动类型(如对话框中的运动类型
Joint Types
部分所示),恰好是我们需要的运动类型。
注意:此时更改视角可能会很有用。这可以在上面的工具栏中完成;单击带有橙色边的立方体图标。
接下来,我们需要配置车轮的旋转轴。 在关节创建对话框中,找到关节轴
Joint axis
部分,并将轴更改为Z
(0,0,1)。 注意轮子上的RGB关节视觉。 您应该会看到,现在关节视觉的蓝色箭头上方会出现一个黄色的圆环,表示它是旋转轴。
为了使车轮与底盘对齐,我们将在关节创建对话框的对齐关节
Align links
部分使用不同的对齐选项。 首先,我们将在X
轴对齐,所以单击 X 最大对齐X Align Max
选项,以查看对齐的结果。 圆柱体应该突出显示,以表明其姿态已经改变。
在我们的示例中,我们希望将车轮与底盘平齐放置。若要拉近车轮,请单击“Y向最大对齐”
Y Align Max
选项。然而,这还不是我们想要的。单击Y对齐选项旁边的反转Reverse
选项,将车轮的最小值(最大值的反转)与底盘的最大值对齐。请注意,“反转”Reverse
选项将应用于子链接,因为下面下拉列表中显示的默认对齐配置是从子到父Child to Parent
的。如果设置了父到子Parent to Child
的配置,则反向Reverse
选项将应用于父链接。点击创建Create
。
若要将车轮放置在地面上,请双击车轮以打开“链接检查器”。我们可以使用对话框底部的
Pose
部分来移动车轮。假设车轮的半径为0.3米,继续将Z
位置更改为0.3米以放置在地面上,然后按“确定”OK
。对另一个前轮重复关节创建过程和轴配置,确保 a)底盘是关节的父级,车轮是子级,b)旋转轴设置为Z,以及 c)使用Y Align Min选项将右车轮与底盘另一侧对齐。
后轮
- 要为车辆制作后轮,请单击左侧面板上的球体按钮并将其插入到场景中。
- 通过以与前轮相同的方式为球体指定精确尺寸来调整球体大小。 转到
Visual
选项卡以查看此链接中的可视对象列表,展开唯一的可视项目,向下滚动到Geometry
部分,并将Radius
更改为0.2m。 确保也对冲突collision
选项卡中的冲突执行相同的操作。
- 要在后轮和底盘之间创建关节,请通过单击顶部工具栏中的关节图标来调出关节创建对话框。 将鼠标移至场景,并选择车体作为父链接,选择球体作为子链接。
- 与前轮关节不同,脚轮向所有方向滚动,没有特定的旋转轴。 在Gazebo中,这是使用滚珠关节模拟的。 因此,在“关节类型”
Joint types
区域下,选择“滚珠Ball
运动类型”选项。 您应该在场景中看到关节视觉更改颜色,以指示已设置不同的关节类型。
- 接下来,将后轮对齐,使其与车体居中,并位于后端。 在对齐链接区域中,选择Y对齐中心
Y Align Center
选项以使两个链接在Y
轴上居中,并选择X对齐最小X Align Min
选项以移动后轮,使其放置在车辆后方的右侧。 按创建Create
按钮以完成关节创建过程。
- 最后,调整后轮的位置,使其位于地面上方。 通过打开链接检查器并将
Z
位置设置为0.2m来执行此操作。
添加传感器
我们要加到车里的传感器是一个深度相机传感器,它将帮助我们探测车前的物体。 在本教程中,我们将从模型数据库中插入现有的传感器模型。
- 转到选项板(左侧面板)并选择
Insert
选项卡,以查看Model Database
部分中可用的模型列表。
- 列表中的模型按它们所在的路径进行组织。 如您所见,第一个列表包含本地计算机上可用的型号,如标题中的路径所示。你可以从在线模型数据库下载一些普遍的模型。模型的网站为https://bitbucket.org/osrf/gazebo_models/src/default/,这些模型是按字母顺序排列的。 在列表中可以看到深度相机 Depth Camera。可以使用以下命令单独下载这个模型:
hg clone https://bitbucket.org/osrf/gazebo_models/depth_camera
建议下载到
Model Database
的第一个路径下。
然后单击它开始下载模型。如果网速太慢clone不了,可以尝试自己新建/depth_camera
的文件夹和model.config
及mode.sdf
文件,将网站中文件的内容复制进去。需要重启Gazebo后才能在原路径下显示新建的深度相机模型,重启前一定要保存小车模型,请跳到最后一步查看如何保存模型。 - 重启Gazebo后,在“插入”面板找到刚才保存的模型,在模型上右键,选择编辑模型,重新进入编辑模式。这时我们将深度相机加入场景。它看起来像一个小立方体。 将鼠标移到场景上,然后单击汽车前面的空白区域以插入深度摄影机。
- 选择顶部工具栏中的平移工具,然后移动深度摄影机,使其位于车辆前面的底盘顶部,并大致居中于
Y
轴。
5. 接下来,将深度相机固定到车体上。 单击顶部工具栏中的关节Joint
图标以打开关节创建对话框。 将鼠标移至场景,并选择车体作为父链接,选择深度摄影机作为子链接。
- 在关节创建对话框中的关节类型
Joint Types
部分下,选择固定关节Fixed
选项,然后单击创建Create
以完成关节的创建。
添加插件
到目前为止,我们创建的车辆已经配备了所有的物理和传感器组件。 但是,它不会真正起到什么作用,只是静止不动,并在模拟中生成深度数据。 通过允许模型执行传感器数据处理、路径规划和控制等计算,插件是增强模型自主性的好方法。 为简单起见,本教程将使用我们车辆的现有插件。 请注意,您可以创建自己的插件,但这需要编写代码。 请参阅插件教程。
转到左侧面板并选择
Model
选项卡,以查看构成您构建的汽车模型的部件。
在
Model Plugins
下面,您应该看到一个Add
按钮。 点击它可以打开一个Model plugin Inspector
,它允许您向模型中添加一个新的插件。
首先,给插件命名。 在
Plugin Name
字段中输入‘follower’。 插件名称在此模型中必须是唯一的。我们将要使用的插件名为
libFollowerPlugin.so
, 请在Filename
字段中输入此插件名。 文件名对应于存储在本地计算机上的插件库的实际文件名。 它以动态链接的共享对象库的形式存在,因此有命名约定和扩展名.so
(在Linux上)。 如果您在其他操作系统上使用 Gazebo,请不要担心,因为扩展会自动替换为正确的扩展。
follower
插件不需要任何附加参数,因此可以将Innerxml
字段留空。注意:这是一个用于演示的简单插件。插件通常具有各种相关参数,例如,差速驱动插件需要指定控制左右车轮的接头名称,以便能够将车辆移动到正确的方向。在follower
插件的情况下,它对它所连接的模型类型进行了许多假设,并尝试自动查找关节和传感器单击
OK
以添加插件。 该插件现在应该出现在左面板中的Model Plugins
下。
保存你的模型
- 通过转到
File
菜单并选择另存为Save As
来保存模型。 输入模型的名称,然后单击保存Save
。
- 通过转到
File
并选择Exit Model Editor
退出Model Editor
。 Gazebo 现在应该切换回正常模拟模式。 点击Play
按钮以运行模拟。
- 要测试插件是否正常工作,请在汽车前面插入一个框,然后看到汽车慢慢地朝它移动。
如果您想稍后再次编辑该模型,只需在其上单击鼠标右键,然后在上下文菜单中选择Edit Model
。
Gazebo学习笔记4:模型编辑器相关推荐
- CSS 学习笔记 - 盒模型
CSS学习笔记 - 盒模型 外边距margin 内边距padding 背景background 背景图background-image 边框border 样式 宽度 颜色 圆角 边框图片border- ...
- 学习笔记_OSI模型
学习笔记_OSI模型 OSI模型简介 OSI模型各层说明 OSI模型简介 OSI/RM协议由ISO(国际标准化组织)指定,功能为 给开发者提供一个通用的.必须的概念以便开发及完善:可以用来解释连接不同 ...
- labview学习笔记--3D模型(3)
labview学习笔记–3D模型(3) 这次的内容是设置模型的运动–平移和旋转 1.首先,我们先找到设置平移和设置旋转的控件:程序框图->编程->图形与声音->三维图片控件-> ...
- 《南溪的目标检测学习笔记》——模型预处理的学习笔记
1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...
- CV学习笔记-相机模型(欧式变换及仿射变换)
相机模型 1.相机模型原理 1. 相机成像 相机成像是一个小孔成像模型,将现实生活中的三维空间物体映射到二维的成像平面上,进而生成二维的图像. 相机模型中的坐标系: 世界坐标系Pw(Xw, Yw, Z ...
- Unity3d开发——保卫萝卜学习笔记一地图编辑器开发
一直在学习,几乎边学边忘,再也不想打王者农药了,现在打卡学习持续写博客,现在在开发学习保卫萝卜,这篇文章关于地图编辑器的开发,在项目中不能是无限个场景,用读取xml文件的方法可以说是能实现无限关卡,同 ...
- EntityFramework Core 学习笔记 —— 创建模型
原文地址:https://docs.efproject.net/en/latest/modeling/index.html 前言: EntityFramework 使用一系列的约定来从我们的实体类细节 ...
- 《如何了解软件的设计》学习笔记0——模型-接口-实现
如何理解软件的设计?一套流程:模型-接口-实现. 模型 找类与类之间的关系,绘制整体图,这个步骤就是找模型.有个整体地图. 接口 类中的各方法就是接口. 接口反映模型. 实现 类中方法的函数体就是实现 ...
- 深度学习笔记——生成模型
什么是生成模型 生成模型可以描述一个生成数据的模型,属于一种概率模型. 通过这个模型我们可生成不包含在训练数据集中的新的数据. 每次生成模型要输出不同的内容.如果说某些特定的图片服从某些概率分布,生成 ...
- 《machine learning in action》机器学习 算法学习笔记 决策树模型
决策树模型 重要任务:是为了理解数据中所蕴含的知识信息,因此决策树可以使用不熟悉的数据集合,并从中提取出一系列规则,这些机器根据数据集创建规则的过程就是机器学习的过程. 优点:计算复杂度不高,输出结果 ...
最新文章
- 如何用Asp判断你的网站的虚拟物理路径
- 【HTML】DAY 4
- Ubuntu常见命令记录
- 机器学习实战——特征工程之数据预处理
- USB接口芯片的选型参考(Z)
- 2007武汉.NET俱乐部沙龙-VS2008、WPF、Silverlight
- 接口自动化关联解决方案
- oracle中时间、日期函数的总结
- linux查看文件写进程,Linux下如何知道文件被那个进程写
- express学习 - (3)express 路由
- IDEA 连接 ORACLE 的配置(OJDBC14通过pom配置, OJDBC7通过library配置)
- vb中换行的几种方法
- 苹果id注册邮箱方法
- 笔记本 续航测试软件,续航测试:较高强度运行状态_笔记本评测-中关村在线
- 达梦sql优化实践5
- XXL-JOB任务调度
- ssm+java计算机毕业设计英雄联盟俱乐部管理系统j4oh6(程序+lw+源码+远程部署)
- Hastelloy G-35哈氏合金板材 棒材
- app下载统计 php,如何统计app在各个渠道的下载量?
- iptables匹配iprange