Gazebo教程(四)如何制作model

Gazebo教程(四)如何制作model,第1张

之前还有一个教程是关于如何上传model的,由于我没有这个需求也没有bitbucket的帐号所以就不做了。

这个教程会教关于模型SDF的一些细节。

SDF模型从简单到难都可以做,它取决于 <model>的SDF标记,它本质上就是一个关于链接、关节、碰撞目标、视觉以及插件的收集。生成一个模型文件可能很困难,取决于你想要的模型的复杂程度。

links :链接包括模型的物理性能,可以是轮子或者链子,每个link都要包括碰撞以及视觉属性。减少link的数量可以改善模型的表现和稳定度。比如,1个桌子模型包括5个link(四条腿和一个板)通过关节来进行链接,但是这样太复杂了,特别是这些关节从来不动,所以我们可以只用1个link和5个元素来组成这个桌子。

Collision :一个碰撞单元包括来一个用来进行碰撞检测的几何形状。最好是一个简单的形状,或者是一个三角网格(这会花费更多的资源)。一个link当中可能会包含很多碰撞元素。

Visual :一个视觉元素用来使link可视化,一个link可以包括0个或者更多。

Inertial :惯性元素表示link的运动性能,比如转动惯量矩阵和质量等。

Sensor :传感器通过插件收集世界当中的数据,一个link当中可以包括0个或者更多。

Light :一个光元素卡亚描述link的光资源,同上0个或更多。

Joints :一个关节用来链接两个link,一个类似于父母和孩子的关系被建立,其中的参数包括旋转轴的位置以及转轴限制。

Plugins :插件是一个由第三方写好用来控制模型的共享程序库。

tips:

1.使用你的3D建模软件移动mesh使其定位在中间,这种放置方式可以使模型在gazebo中的放置更加容易。

2.Collda和OBJ文件格式可以让你把材料固定在网格上,可以使用这种方式来改善你网格的视觉效果。

3.尽量保持网格的简单,这个特别重要如果你要把它当作碰撞单元。普通的联系可以使用边较少的多边形作为碰撞单元,多的多边形作为视觉效果。更好的尝试可以使用内置的形状作为碰撞单元进行测试。

第二步:制作模型的SDF文件

从一个简单的模型文件或者copy别人的文件开始,这里的捷径就是找一个你已经知道或者是可以简单调试的项目。

这里有个基础的小盒子模型可以作为碰撞模型,其中包括了视觉以及惯性部分。

首先制造一个 box.sdf 文件,然后把下面的程序拷贝到里面。

记得盒子的中心要与其几何中心重合,为了让盒子的底部在地板上,我们要出初始化 <pose>0 0 0.5 0 0 0</pose>这一行是让盒子在地板之上。

tips:上面制作的这个简单小盒子是静态的,所以不能移动,这是一个在建图当中很有用的特征(有些东西不能动比如墙)。当你完成了你的模型,设定 <static>标识变成flase如果你想让模型移动。

第三步:加入模型的 <sdf>文件

当你完成了sdf文件的创建,你可以慢慢增加复杂性,随着更多特性的增加使你的模型更加逼真。

以下是一个比较好的增加特性的顺序:

1.加一个link

2.设置一个碰撞元素

3.设置一个视觉元素

4.设置一个惯性属性

5.返回1制作完所有link

6.加入关节

7.加入插件

源网页: http://gazebosim.org/tutorials?tut=build_model&cat=build_robot

在gazebo中,我们不仅可以对机器人建模,还可以对场景建模(即机器人所在环境),这一节就给大家介绍如何在gazebo中创建一栋房子,作为机器人的活动空间。

启动gazebo,依次点击 Edit ->Building Editor , 或者使用快捷键 Ctrl+B 打开编辑器。界面如下:

该编辑器由以下3个区域组成:

您可以从零开始创建建筑场景,也可以使用现有图像作为模板进行追溯。该图像可以是例如建筑物的2D激光扫描。

这里给出示例平面图:

然后按以下步骤 *** 作:

1、点击调色板下方的 Import 按钮。然后将会d出 Import Image 对话框。

2、选择平面图所在路径,然后单击 Next 。

3、为确保在图像上绘制的墙以正确的比例显示,必须以像素/米( px/m )设置图像的分辨率。如果知道分辨率,则可以直接在对话框中输入分辨率,然后单击 Ok 。在此示例中,我们不知道分辨率,但是我们知道图像中两点之间的真实距离(例如7.5 m的顶壁),因此我们可以使用它来计算分辨率:

我们接下来会根据平面图绘制所有的墙壁。值得注意的是,稍后我们会将门窗附加到墙壁上,因此现阶段可以直接忽略门窗位置。如果你觉得墙壁不完美,不用担心,稍后我们将对其进行更加细致的编辑。

注意:目前,门窗是墙上的简单孔。

让我们在平面图上所示的位置插入门窗。

尽管在这个平面图上没有显示楼梯,但是我们还是要插入一个楼梯。

我们已经完成了第1层的工作。接下来我们要在建筑物中添加另一个层,使得我们的楼梯能够连接到某个地方。

由于添加一层,因此在2D视图中我们看到的同样是新一层的平面图。您可以通过从2D视图顶部的下拉列表中选择层2返回到层1。

如果有需要,我们还可以编辑一些相关层的配置。

您可能添加了不需要的级别,或者在当前层中弄乱了,并希望重新绘制,可以

我们之前画了很多墙,但是也许它们并没有完全按照我们想要的方式绘制。我们有以下方式可以进行修改:

1、在2D视图中,单击要编辑的墙。

2、在2D视图中双击墙以打开带有配置选项的检查器。或者,右键单击并选择 Open Wall Inspector 。编辑你想要修改的内容,然后按 Apply 预览更改。

3、选中你想要删除的墙体,按下键盘上的 Delete 键,或在2D视图中右键单击墙体,选择 Delete 。

现在让我们一起编辑门窗。正如我们编辑墙体那样,也可以通过以下几种不同的方式更精确地控制门窗属性。

1、在2D视图中,单击要编辑的特征。

2、双击2D视图中的特征以打开带有配置选项的检查器。或者,右键单击并选择 Open Window/Door Inspector

3、选中想要删除的特征,按下键盘的 Delete 键,或在2D视图中右键单击并选择 Delete 。

编辑楼梯同样如此,这里就不细说了

现在,一切都已正确放置并确定大小,您可以为墙壁,地板和楼梯分配颜色和纹理。请记住,门窗只是墙上的孔,因此不能有任何材料。

有两种方法可以为建筑物添加颜色和纹理:

a、单击调色板中的颜色或纹理。

b、在3D视图中移动鼠标时,悬停的功能将突出显示,显示所选材质的预览。

c、单击突出显示的功能会为其分配选定的材料。您可以根据需要单击任意数量的功能。

d、完成所选材质的 *** 作后,右键单击3D视图,或在任何要素外部单击以退出材质模式。

凉亭5.1的新增功能:要选择自定义颜色,请在More调色板上单击。将打开一个对话框,您可以在其中指定自定义颜色。

保存之前,在选用板上给您的建筑物起个名字。

在顶部菜单上,选择 File ,然后 Save As (或按 Ctrl+S )。将出现一个对话框,您可以在其中选择模型保存的位置。

注意:一旦退出场景编辑器后,场景就不能够再次编辑了。

完成创建建筑物并保存之后,请转到 File ,然后单击 Exit Building Editor ,您的建筑物将显示在主窗口中。您可以在 Insert 标签中找到该场景。

, , ,

这一段时间里,我进行了一个对现有场地的模型建立,有一些心得体会分享一下。

首先我需要对场地的整个地图进行绘制,这个用CAD或者其他什么软件都可以完成。

在建立好了地图之后

点击左上角file-exit buinding editor 点击save 然后就会回到原始的界面。

接下来由于我工作的需要,我需要在地图上进行一些标定,同时它又不能影响到地图上的碰撞属性,这个时候发挥了我的奇思妙想,这个时候可以选择一个model把它的collision属性删掉(怎么删掉这个属性是一个经历曲折的过程)。

一开始打开左上角 edit-model editor,然后使用左边的正方体,拉一个到场地中间来,点击右键的openlink inspector之后会出现下面这个界面。

这里可以设置link的位置和它的visual以及collision,我本来以为只要把collision这个属性给删掉就可以了,但是我后来发现,当你删掉之后,在保存的时候还是会使用默认的设置。

当我们设置好一个model之后,我们可以点击左上角之后,退出并保存这个世界。

最好把这个世界保存在我们设置工作空间/src/worlds/下。

接下来我们打开这个world文件,然后ctrl+f找collision这个元素,把这些需要标记但是不要碰撞属性的物体的这个属性给删掉,然后再通过launch文件打开这个world,就会发现这个物体的碰撞属性消失了,最后给大家看一个效果。

恩大概就是这么一个效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7947519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存