问题,uuv模拟器中是否有模拟水面的东西,比如波浪? (如果没有,如何在风电场视频中获得漂亮的表面动画?)
您好,目前没有水面或波浪的物理模拟。 这将是一个很好的添加功能,但我们目前没有能力进行这项工作。 如果有人愿意花时间在上面,请告诉我们。
您可能在视频或屏幕截图中看到的波浪是纯视觉效果,并在材质属性中使用这些着色器实现。
啊,谢谢回复。 我正在将https://www.gamasutra.com/view/news/237528/Water_interaction_model_for_boats_in_video_games.php作为世界插件(gazebo)实施。 我将要面对的一个问题(我还没有那么远……)是如何表示移动的波浪。 现在我正在使用高度图,它给了我不动的波浪。 对于很多模拟来说这很好(即使它很奇怪),但不是所有的。 鉴于服务器/客户端分离,我试图找出该怎么做。 似乎我需要运行相同的算法来在两侧产生波浪。 一次用于物理,一次用于渲染。
是的,这是可以做到的。 一种方法是使用一个实现 JONSWAP 或 Pierson-Moskowitz 模型并为可视化生成波浪的着色器和一个为模型做类似事情的 Gazebo 插件。
我看到的问题是这两个模块在 Gazebo 中是分开的(如果您使用着色器运行模拟@sebastianscherer说并暂停,波浪仍将运行)。 除了着色器,我不知道其他任何方式来显示环境中的波浪等东西。
关于与模型的交互,我发现一种非常简单的方法是在 Kelpie 模拟器中实现:
看起来很容易实现,但我不知道它有多好。 我从来没有尝试过。
我看到的最大问题是同步视觉和物理插件。
如果您对如何实现这一点有任何想法,请告诉我们。 我会对类似的东西很感兴趣。
顺便说一句,要使用波浪开始一个空的场景,您必须运行
roslaunch uuv_descriptions ocean_waves.launch
感谢您的评论。 我已经实现了我最初的帖子中描述的物理,但尚未调整。 到目前为止,对于第一次剪辑来说,它看起来非常有说服力。 我想我需要在平坦的水面上取得更多进展,然后才能看到海浪。
我拥有的是一个参考水面模型和船模型的世界插件。 例如:
<plugin name="floating" filename="libfloating.so">
<water_model>ocean</water_model>
<boat_models>
<boat>box</boat>
</boat_models>
</plugin>
它假设水模型是一个 HeightMap(我想更改为网格),并且船模型是三角形网格,其中一个链接(目前)代表船体。 然后计算网格的所有淹没三角形上的浮力、粘性摩擦、压力阻力和撞击力,并将它们应用于每个三角形。
尝试将此插件集成到 uuv-simulator 中是否有意义? 在这个阶段,我试图避免使用 ros,看来 uuv-simulator 可以在没有 ros 的情况下运行,但我还没有找到太多相关信息。 (我没有 ros 经验,很少有凉亭)。 我也一直在使用gazebo默认分支(即v9),uuv-simulator是否可以用v8编译? 我知道物理学中有很多方法已经在 v8 和 v9 之间更改了名称,并朝着点火方向发展。
uuv_simulator/uuv_world_plugins/uuv_world_plugins/ 和 uuv_simulator/uuv_gazebo_plugins/uuv_gazebo_plugins/ 有什么区别?
我上传了一个 2 分钟的模拟,将一个盒子扔进波浪状的水面: https :
那个视频看起来已经很酷了!
我们尝试将所有插件分开,因此有一个非 ROS 部分和一个源自纯 Gazebo 插件的 ROS 插件。 到目前为止,我们还没有单独使用 Gazebo 插件,并且在没有 roslaunch 等的情况下让它们运行可能需要一些工作。
我认为将它集成到 uuv_simulator 是有意义的,当您有一个工作原型时,我愿意协助集成。
我们仍在使用 Gazebo 版本 7。我不确定我们什么时候会切换到 Gazebo 8 或 9,因为它必须符合SWARMs项目的时间表。
还有一件事。 如果你想改变你所发射的世界的波浪
roslaunch uuv_descriptions ocean_waves.launch
您可以在此材料文件中设置不同的参数here
例如,幅度设置得非常低,但您可以设置其他幅度和频率以查看其工作情况。
感谢您的反馈,现在我正在尝试制作一个简单的 3D 船模型。 没有这方面的经验,这需要一些时间......
如果你愿意,你可以使用这个
它是静态的(仅用作一种标记),但您可以将其修改为机器人模型。 还有 Kingfisher 的模型,你可以在这里获取https://github.com/kf/kingfisher。 最后一个使用来自此存储库https://github.com/bsb808/usv_gazebo_plugins的 usv_gazebo_plugins
嗨,我对 Gazebo 中水面船只的浮力建模也有类似的兴趣,这似乎是讨论它的地方。 我已经使用上面提到的方法取得了一些进展,如果有任何兴趣,我很乐意分享。
我有一个工作示例,它支持使用由一个或多个链接组成的 Gazebo 基元或网格定义的对象。 波场是使用平面网格建模的,并且有单独的视觉和物理插件,它们使用世界模拟时间保持同步。 当我使用其表面网格包时,对 CGAL 库有依赖性。
第一个示例显示了一系列由仅具有浮力(无阻尼或阻力)的万向节连接的盒子。
第二个例子显示了受浮力和一些阻力影响的波浪中的许多物体。 这些船是来自在线 3D 仓库的库存,我使用 Blender 抽取用于碰撞的网格,以减少浮力计算中使用的顶点数。
你好,
我正在寻找与 ROS 兼容的模拟器来模拟波浪状的海洋。
我研究了 Kelpie 的论文,但在 GitHub 中找不到他们的包。 你知道我在哪里可以找到吗?
@srmainwaring你的模型看起来很棒! 我目前也在努力构建一个在海面上摇摆的船模型。 我是 Gazebo 的新手,编写插件的经验有限。 你愿意分享你用来模拟摇摆物体的代码/插件吗? 任何帮助将不胜感激!
@samchamberlin你可以在这里找到这个项目: https :
@srmainwaring Hey Rhys,我是 ROS 和 Gazebo 的新手,我正在指导自己如何模拟一艘船将某物降低到海洋深处。 幸运的是,您似乎制作了一个非常有用的软件包供我使用。 非常感谢! 我不太确定 Gazebo 包是如何工作的,但是您认为有可能以某种方式将包的波浪功能与 UUV 包的水下建模结合起来吗?
@JuliusHendrix是的,我认为这是可能的,但是如果您希望潜水器在水面时对波浪做出响应,这将涉及更改 UUV 计算浮力的方式,因为这两个包中用于计算浮力的方法不同. 如果您对 wave 模拟包有任何疑问,我很乐意在其存储库的问题部分回答这些问题。 对于有关 UUV 包的问题,您最好将这些问题直接发送给作者。
OSRF VRX 团队 (https://bitbucket.org/osrf/vrx/src/default/) 也利用了 UUV 模拟器的波浪视觉效果,并结合了我的建议,将模拟中的视觉效果与物理同步。 他们使用像 UUV 模拟器一样的体积基础浮力计算,而不是我使用的基于表面力的方法。 首先,尝试将 VRX 和 UUV 中的方法结合起来可能会更容易,如果需要,稍后再转向更复杂的浮力模型?
@srmainwaring谢谢,我会调查的!
最有用的评论
嗨,我对 Gazebo 中水面船只的浮力建模也有类似的兴趣,这似乎是讨论它的地方。 我已经使用上面提到的方法取得了一些进展,如果有任何兴趣,我很乐意分享。
我有一个工作示例,它支持使用由一个或多个链接组成的 Gazebo 基元或网格定义的对象。 波场是使用平面网格建模的,并且有单独的视觉和物理插件,它们使用世界模拟时间保持同步。 当我使用其表面网格包时,对 CGAL 库有依赖性。
第一个示例显示了一系列由仅具有浮力(无阻尼或阻力)的万向节连接的盒子。
第二个例子显示了受浮力和一些阻力影响的波浪中的许多物体。 这些船是来自在线 3D 仓库的库存,我使用 Blender 抽取用于碰撞的网格,以减少浮力计算中使用的顶点数。