如何在没有自定义物理的情况下为 Webots 机器人添加浮力?

问题描述

例如,我可以模拟水下航行器或氦气飞艇吗?

我知道 SecondViewController 中的示例飞艇世界,但这使用了一个自定义物理插件,该插件似乎完全支持 one 飞艇(硬编码以查找 override func viewDidLoad() { super.viewDidLoad() navigationItem.backBarButtonItem = UIBarButtonItem(title: "Hello",style: .plain,target: self,action: #selector(backButtonTapped)) } 机器人),而我想要很多飞艇。

对于我的用例来说,projects/robots/epfl/lis/worlds/blimp.wbt 似乎也过于复杂,如果我可以将我的机器人身体的 blimp_lis 之一设置为正浮力或负质量来完成工作。

>

我看到菜单项 View -> Optional Rendering -> Show Center of Buoyancy 这让我相信这是可能的。

解决方法

确实可以在没有物理插件的情况下在 Webots 中添加浮力。 WEBOTS_HOME/projects/samples/geometries/worlds/floating_geometries.wbt 中提供了一个简单的示例。 WEBOTS_HOME/projects/robots/epfl/biorob/worlds/salamander.wbt 中提供了一个更复杂的水浮力示例,其中蝾螈机器人在水池中游泳。最后,WEBOTS_HOME/projects/robots/dji/mavic/worlds/mavic_2_pro.wbt 中提供了一个空气浮力示例。与您提到的飞艇不同,这些示例都没有使用物理插件。

,

所以我从示例世界中弄清楚了,这是如何做到的:

  1. 添加顶级 Fluid 节点
  2. 将其 boundingObject 字段设置为覆盖整个空间的内容,例如大 Box
  3. 为流体命名。例如。我命名我的空气

然后对于每个你想让它浮起来的物体:

  1. 给它一个 immersionProperties 字段,将 fluidName 设置为 air
  2. 请务必设置其 boundingObject 字段,否则 Webots 无法计算它是如何浸入流体中的。
  3. 添加 Physics 节点并调整密度或质量以获得所需的浮力。