创建模型
- 本节目标
- 一、模型编辑器用户界面
- 调色板(左面板)
- 工具列
- 局限性
- 二、车辆构造
- 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米长。您可以通过查看地面上的1×1米网格来估算。
③现在,使用“缩放”工具展平机箱。单击并向下拖动蓝色标记,以使机箱大约是其原始大小的一半。
④我们希望将底盘降低到更靠近地面的位置。为了给出精确的测量值,我们将使用链接检查器(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。