本文主要是介绍[搬运]Webots 入门教程 2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Webots Tutorial 2
Modification of the environment
A new simulation
这里我们直接在原来的my_first_simulation.wbt基础上,选择另存为obstacles.wbt,就可以创建一个原来的副本。
Modifying the floor
现在来演示一下如何改变地板样式
在3d视图红点击地板,右键delete
点击add,添加Floor节点
The solid node
solid node 是webots中的刚体的节点,其形变可以忽略。
软体和铰接物体不算,比如绳子,海绵,轮胎,机械臂,但是铰接物体仍可以分解为几个刚体。
solid node之所以重要是因为webots中物理引擎是专为刚体动力学设计的。我们在对一个机器人进行模拟时,就需要把其分解为许多的刚体节点。
添加完一个刚体节点,我们还需要通过其内部不同的子节点,对其特性进行定义才能使用:
·children节点下的Shape负责定义其外观
·boundObject负责定义其碰撞边界
·physics负责定义其属于动力学环境还是静态环境
Create a ball
下面来学习如何添加一个solid node
点击Add-base node-solid 完成对solid node的添加
接下来,设置其子节点
双击children,添加base nodes - shape,双击shape下的appearance,添加PBRAppearance定义渲染方式(PBRAppearance节点使用基于物理的着色模型和多个纹理来定义材质属性来渲染几何体的视觉特性。),然后双击geometry,添加sphere定义几何形状,可以看到一个球体出现在原点处。尝试根据需要修改渲染方式,球的半径平滑度等。
接下来双击boundObject来添加一个Sphere,表明其碰撞范围的形状也是球形。注意要根据之前的半径来修改碰撞半径。
最后双击physics,添加Physics,尝试对其密度和质量进行修改。
现在我们可以模拟一下球下落的过程,通过translation的y坐标修改小球高度,然后点击Run,看到下落过程包括反弹都被很好地模拟了出来。
DEF-USE mechanism
此前,我们需要重复修改碰撞半径来使其贴合图形半径,因为我们使用了两个独立的sphere,这样比较容易遗漏。
DEF是webots中节点的复用机制,可以把在一个地方定义好的节点,用DEF string进行标记,然后在其他地方使用,可以避免相同类型节点的大量出现导致文件繁杂,也可以方便我们同时修改多个地方。
点击children-Shape下的sphere,发现下方出现DEF编辑器。写入一个string BALL_GEOMETRY。
接下来点击boundingObject,选择reset to default value,之后双击,添加use下的BALL_GEOMETRY。这样,两个sphere就可以相互关联了。
Add walls
之前我们说physics可以定义刚体节点属于动力学环境还是静态环境。球选择了Physics,因此其可以WorldInfo按照WorldInfo中的物理规则进行运动,属于动力学环境。现在我们添加Wall,其属于静态环境,不会发生移动。(此处可以参考前一个tutorial)
此处我们先创建一面墙,点击shape添加texturebox,修改墙的尺寸和位置,随后添加DEF-string;然后点击boundingobject,添加use中的对应节点;最后注意physics不做修改,NULL即意味着墙处于静止状态。
其他三面墙有两种做法,一种是创建三个刚体节点,并在shape和boundingobject中添加use中的对应节点,另一种是使用ctrl+c/v复制粘贴,然后将副本移到对应位置,实际上,这两种方法的原理是相同的。
这篇关于[搬运]Webots 入门教程 2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!