Tutorial 2:Modification of the Environment

本教程介绍了如何在Webots环境中创建和配置刚体对象,包括Solid节点的使用,设置物理参数,以及利用DEF-USE机制减少场景树的冗余。通过实践部分展示了如何添加形状、调整位置和朝向、添加物理属性以及处理碰撞检测,确保物体在仿真中正确交互。
摘要由CSDN通过智能技术生成

1.理论部分

在本教程中,我们将教您如何在环境中创建简单的对象。第一步是创建一个与环境互动的球。我们将解决与节点相关的几个概念:它们的含义是什么,如何创建它们,它们必须如何关联等等。此外,我们将了解如何设置物理参数。它们的详细定义可以在参考手册中找到。将节点图表放在您面前,也将有助于理解节点继承关系。

本小节介绍 Webots 中最重要的基本节点:Solid 节点,许多其他节点都源自该节点。

Solid 节点表示刚体,即可以忽略变形的刚体。无论施加在其上的外力如何,刚体任意两个给定点之间的距离在时间上保持不变。例如一张桌子、一个机器人指节或一个轮子都是刚体。柔体和铰接物体不是刚体。例如,绳索、轮胎、海绵或关节机器人手臂都不是刚体。然而,一个关节实体可以分解成几个刚体。

Webots 的物理引擎专为模拟刚体而设计。在设计模拟时,一个重要的步骤是将各种实体分解为单独的刚体。要定义刚体,您必须创建一个实体节点。在此节点内,您将根据刚体的特性设置不同的子节点。下图描绘了刚体及其子节点。 Solid 节点的图形表示由填充其子列表的 Shape 节点定义。碰撞边界在其 boundingObject 字段中定义。图形表示和碰撞形状通常但不一定相同。最后,physics field定义对象是属于动态环境还是静态环境。所有这些子节点都是可选的,但physics field 需要定义 boundingObject。
image.png
DEF-USE机制允许在一个地方定义一个节点并在场景树的其他地方重复使用该定义。这对于避免世界文件中相同节点的重复是非常有用的。此外,它还允许用户在同一时间修改几个对象。以下是它的工作原理:首先,一个节点被贴上一个DEF字符串。然后这个节点的副本可以通过USE关键字在其他地方重复使用。只有 DEF 节点的字段可以被编辑,USE 的字段继承自 DEF 节点,不能被改变。这种机制取决于世界文件中节点的顺序。一个 DEF 节点应该定义在任何相应的 USE 节点之前。
image.png
总体而言内容主要是下面几点,对于添加的Solid节点我们可以

  • 在其children下添加shape修改形状
  • 通过修改Solid的translation可以修改物体位置,通过修改rotation可以改变物体朝向
  • 通过设置physic可以添加物理参数重力,质量,密度
  • 通过设置boundingObject我们可以使物体与地面产生碰撞效果
  • 在shape中的geometry的DEF设置为BALLL之后可以在boundingObject中使用这个设置达到同样效果,与此同时体现了我们对减少场景树节点冗余的 DEF-USE 机制的应用。

2.实践部分

  1. 首先新建一个世界

image.png
image.png
image.png
image.png
image.png

  1. 接下来新增一个地面,鼠标右键Add New

image.png
image.png

  1. 新加入一个球,之后命名为1号

image.png
修改一下地面的大小,这样可以看到球了
image.png
修改坐标将它设置到天上
image.png
将球的名字修改为1
image.png

  1. 接下来新增一个Solid节点,修改名字为2

image.png
对Solid的children节点右键Add New,然后如图操作添加shape
image.png
修改几何形状
image.png
将solid这个球设置到天上
image.png
开始仿真发现小球1号自由落体而2号球没有动
image.png

对2号大球添加物理参数
image.png
再次仿真发现打球也会自由下落,而且会穿过地面
image.png

image.png
为什么白球不会停留在地面上?

  1. 类似2号球的创建我们再新建一个3号球

image.png
image.png
更名为3
image.png
添加形状
image.png
修改几何形状
image.png
修改名字为3
image.png
添加重力物理参数
image.png
修改质量
image.png
更改boundingObject
image.png
image.png
再次仿真可以看到3号球可以停在地面上了,而2号球由于没有改变boundingObject而直接穿过了地面。
image.png
image.png
另外我们也可以修改形状
image.png
image.png
image.pngimage.png
可以看到球的粗糙度之类的有改变
image.png
我们可以在shape中的geometry Sphere中的DEF添加BALLL
image.png
删除之前设置的boundingObject
image.png
再次让3号球自由下落
image.png
可以发现3号球会穿过地面。接下来修改boundingObject如下图,从而使用我们刚刚定义的BALLL
image.png
再次仿真之后可以看到球可以落到地面上不穿过去,如此达到了和最开始boundingObject设置有一样的效果。
image.png
通过仿真我们可以看到物体不会穿过地面,达到了和之前一样的效果。
另外我们可以再次创建一个4号球,定义其shape中的geometry时可以直接使用之前的BALLL。
image.png
image.png
在这两个地方都可以使用我之前预定义的DEF BALLL,我的理解是一个是几何外观,一个是几何碰撞接触,就像下图所描述的。
image.png
在本教程结束时,您将能够创建基于刚体的简单环境。您可以从场景树视图中添加节点并修改它们的字段。您已经熟悉了 Solid、Physics、Shape、Sphere 和 Box 节点。您还看到了允许减少场景树节点冗余的 DEF-USE 机制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值