Uuv_simulator: F: Wasseroberflächenmodellierung?

Erstellt am 15. Sept. 2017  ·  17Kommentare  ·  Quelle: uuvsimulator/uuv_simulator

Frage, gibt es im Uuv-Simulator etwas, das die Wasseroberfläche modelliert, wie z. B. Wellen? (Und wenn nicht, wie bekommt man die schöne Oberflächenanimation im Windpark-Video?)

question

Hilfreichster Kommentar

Hallo, ich habe ein ähnliches Interesse an der Modellierung des Auftriebs für Überwasserschiffe in Gazebo und dies scheint der Ort zu sein, an dem darüber diskutiert wird. Ich habe mit dem oben genannten Ansatz einige Fortschritte gemacht und würde mich freuen, wenn ich Interesse daran habe.

Ich habe ein funktionierendes Beispiel, das Objekte unterstützt, die mithilfe von Pavillon-Primitiven oder Netzen definiert wurden, die aus einem oder mehreren Links bestehen können. Das Wellenfeld wird mit einem planaren Netz modelliert und es gibt separate Plugins für die Visuals und die Physik, die mit der Weltsimulationszeit synchronisiert werden. Es besteht eine Abhängigkeit von der CGAL-Bibliothek, da ich ihr Surface-Mesh-Paket verwende.

Das erste Beispiel zeigt eine Reihe von Boxen, die durch Kardangelenke nur mit Auftrieb verbunden sind (keine Dämpfungs- oder Widerstandskräfte).

buoyancy example 1

Das zweite Beispiel zeigt eine Reihe von Objekten in Wellen, die dem Auftrieb und einigen Widerstandskräften unterliegen. Die Boote stammen aus einem Online-3D-Lager und ich habe Blender verwendet, um das für Kollisionen verwendete Netz zu dezimieren, um die in der Auftriebsberechnung verwendete Scheitelpunktzahl zu reduzieren.

buoyancy example

Alle 17 Kommentare

Hallo, es gibt derzeit keine physikalische Simulation der Wasseroberfläche oder der Wellen. Dies wäre eine großartige Funktion, die hinzugefügt werden könnte, aber wir haben derzeit nicht die Kapazität, daran zu arbeiten. Wenn jemand bereit ist, sich dafür Zeit zu nehmen, lassen Sie es uns bitte wissen.

Die Wellen, die Sie vielleicht auf Videos oder Screenshots gesehen haben, sind reine visuelle Effekte und werden mit diesen Shadern in den Materialeigenschaften implementiert.

Aha, danke für die Antwort. Ich arbeite daran, https://www.gamasutra.com/view/news/237528/Water_interaction_model_for_boats_in_video_games.php als Welt-Plugin (gazebo) zu implementieren. Ein Problem, dem ich mich stellen werde (ich bin noch nicht ganz so weit...) ist die Darstellung der sich bewegenden Wellen. Im Moment verwende ich eine Höhenkarte, die mir nicht bewegte Wellen gibt. Das ist gut für viele Simulationen (auch wenn es seltsam ist), aber nicht alles. Angesichts der Server/Client-Trennung versuche ich herauszufinden, was zu tun ist. Es scheint, als müsste ich im Wesentlichen den gleichen Algorithmus ausführen, der die Wellen auf beiden Seiten erzeugt. Einmal für die Physik und einmal für das Rendering.

Ja, das ist machbar. Eine Möglichkeit wäre, einen Shader zu haben, der ein JONSWAP- oder Pierson-Moskowitz-Modell implementiert und die Wellen für die Visualisierung generiert, und ein Gazebo-Plugin, das ähnliches für die Modelle macht.
Das Problem, das ich sehe, ist, dass diese beiden Module in Gazebo getrennt sind (wenn Sie die Simulation mit dem Shader @sebastianscherer ausführen und pausieren, werden die Wellen immer noch ausgeführt). Abgesehen von Shadern kenne ich keine anderen Möglichkeiten, etwas wie Wellen in der Umgebung anzuzeigen.
In Bezug auf die Interaktion mit den Modellen fand ich eine sehr einfache Methode, die im Kelpie-Simulator implementiert wurde:

https://www.researchgate.net/publication/259741742_Kelpie_A_ROS-Based_Multi-Robot_Simulator_for_Water_Surface_and_Aerial_Vehicles

Es scheint sehr einfach zu implementieren, aber ich weiß nicht, wie gut es ist. Ich habe es nie ausprobiert.
Das größte Problem, das ich sehe, ist die Synchronisierung des visuellen und physischen Plugins.
Wenn Sie Ideen zur Umsetzung haben, lassen Sie es uns wissen. Mich würde so etwas sehr interessieren.

Um ein leeres Szenario mit den Wellen zu starten, musst du übrigens laufen

roslaunch uuv_descriptions ocean_waves.launch

Danke für die Kommentare. Ich habe die in meinem ersten Post beschriebene Physik implementiert, aber noch nicht abgestimmt. Bisher sieht es für einen allerersten Schnitt ziemlich überzeugend aus. Ich denke, ich muss auf flachem Wasser noch etwas vorankommen, bevor es zu viel Sinn macht, sich Wellen anzusehen.

Was ich habe, ist ein Welt-Plugin, das auf das Wasseroberflächenmodell und Bootsmodelle verweist. Z.B:

    <plugin name="floating" filename="libfloating.so">
      <water_model>ocean</water_model>
      <boat_models>
        <boat>box</boat>
      </boat_models>
    </plugin>

Es wird davon ausgegangen, dass das Wassermodell eine HeightMap ist (ich möchte zu einem Netz wechseln) und dass die Bootsmodelle Dreiecksnetze mit einem einzigen Link (vorerst) sind, der den Rumpf darstellt. Es berechnet dann den Auftrieb, die viskose Reibung, den Druckwiderstand und die Schlagkräfte auf alle untergetauchten Dreiecke des Netzes und wendet sie auf jedes Dreieck an.

Ist es sinnvoll, dieses Plugin in den uuv-simulator zu integrieren? Zu diesem Zeitpunkt versuche ich, ros zu vermeiden, und es scheint, dass der uuv-simulator ohne ros ausgeführt werden kann, aber ich habe nicht viele Informationen dazu gefunden. (Ich habe keine Ros-Erfahrung und sehr wenig mit Pavillon). Ich habe auch den Standardzweig des Pavillons verwendet (dh v9), kompiliert der uuv-simulator mit v8? Ich weiß, dass es eine ganze Reihe von Methoden in der Physik gibt, deren Namen zwischen v8 und v9 geändert wurden, mit der Bewegung in Richtung Zündung.

Was ist der Unterschied zwischen uuv_simulator/uuv_world_plugins/uuv_world_plugins/ und uuv_simulator/uuv_gazebo_plugins/uuv_gazebo_plugins/ ?

Ich habe eine 2-minütige Simulation des Fallenlassens einer Kiste in eine wellige Wasseroberfläche hochgeladen: https://youtu.be/X3bFU9bbL4A Dies ist ein allererster Machbarkeitsnachweis ...

Das Video sieht schon ziemlich cool aus!

Wir haben versucht, alle Plugins zu trennen, sodass es einen Nicht-ROS-Teil und ein ROS-Plugin gibt, das vom reinen Gazebo-Plugin abgeleitet ist. Wir haben die Gazebo-Plugins bisher nicht alleine verwendet und es könnte einige Arbeit erfordern, sie ohne Roslaunch usw. zum Laufen zu bringen.

Ich denke, es wäre sinnvoll, dies in uuv_simulator zu integrieren, und ich wäre bereit, bei der Integration zu helfen, wenn Sie einen funktionierenden Prototypen haben.

Wir verwenden immer noch Gazebo Version 7. Ich bin mir nicht sicher, wann wir auf Gazebo 8 oder 9 umsteigen werden , da es in den Zeitplan des muss .

Nur noch eine Sache. Wenn Sie die Wellen der Welt ändern möchten, mit der Sie starten

roslaunch uuv_descriptions ocean_waves.launch

Sie können hier verschiedene Parameter in dieser Materialdatei einstellen

https://github.com/uuvsimulator/uuv_simulator/blob/master/uuv_descriptions/Media/materials/scripts/waves.material#L16

Die Amplitude ist zum Beispiel sehr niedrig eingestellt, aber Sie können andere Amplituden und Frequenzen einstellen, um zu sehen, wie es funktioniert.

Danke für das Feedback, Im Moment versuche ich ein einfaches 3D-Bootsmodell zusammenzustellen. Da ich keine Erfahrung mit dem Zeug habe, wird es einige Zeit dauern...

Sie können dieses verwenden, wenn Sie möchten

https://github.com/uuvsimulator/uuv_simulator/tree/master/uuv_descriptions/world_models/aurora_static

es ist statisch (wird nur als eine Art Markierung verwendet), aber Sie können es in ein Robotermodell ändern. Und auch das Modell für den Kingfisher gibt es hier https://github.com/kf/kingfisher. Letzteres verwendet die usv_gazebo_plugins aus diesem Repository https://github.com/bsb808/usv_gazebo_plugins.

Hallo, ich habe ein ähnliches Interesse an der Modellierung des Auftriebs für Überwasserschiffe in Gazebo und dies scheint der Ort zu sein, an dem darüber diskutiert wird. Ich habe mit dem oben genannten Ansatz einige Fortschritte gemacht und würde mich freuen, wenn ich Interesse daran habe.

Ich habe ein funktionierendes Beispiel, das Objekte unterstützt, die mithilfe von Pavillon-Primitiven oder Netzen definiert wurden, die aus einem oder mehreren Links bestehen können. Das Wellenfeld wird mit einem planaren Netz modelliert und es gibt separate Plugins für die Visuals und die Physik, die mit der Weltsimulationszeit synchronisiert werden. Es besteht eine Abhängigkeit von der CGAL-Bibliothek, da ich ihr Surface-Mesh-Paket verwende.

Das erste Beispiel zeigt eine Reihe von Boxen, die durch Kardangelenke nur mit Auftrieb verbunden sind (keine Dämpfungs- oder Widerstandskräfte).

buoyancy example 1

Das zweite Beispiel zeigt eine Reihe von Objekten in Wellen, die dem Auftrieb und einigen Widerstandskräften unterliegen. Die Boote stammen aus einem Online-3D-Lager und ich habe Blender verwendet, um das für Kollisionen verwendete Netz zu dezimieren, um die in der Auftriebsberechnung verwendete Scheitelpunktzahl zu reduzieren.

buoyancy example

Hallo, ich habe auch versucht, eine Wasseroberflächensimulation zu erstellen, die Sie im Video sehen können

https://www.youtube.com/watch?v=NHfNfg2vhMc

Und das Repository

https://github.com/PanosMallioris/Autonomous-Marine-Exploration-Water-Simulation-ROS-GAZEBO

Hi,
Ich war auf der Suche nach einem kompatiblen Simulator mit ROS, um einen welligen Ozean zu simulieren.
Ich habe das Papier von Kelpie studiert, aber ich konnte ihr Paket in GitHub nicht finden. Wisst ihr wo ich das finden kann?

@srmainwaring dein Modell sieht

@samchamberlin das Projekt findet ihr hier: https://github.com/srmainwaring/asv_wave_sim.

@srmainwaring Hey Rhys, ich bin neu bei ROS und Gazebo und orientiere mich daran, wie man ein Schiff simuliert, das etwas tief in den Ozean senkt. Zu meinem Glück haben Sie anscheinend ein sehr nützliches Paket für mich erstellt. Vielen Dank im Voraus! Ich bin mir nicht ganz sicher, wie Gazebo-Pakete funktionieren, aber denken Sie, dass es möglich wäre, die Wellenfunktionalität Ihres Pakets irgendwie mit der Unterwassermodellierung des UUV-Pakets zu kombinieren?

@JuliusHendrix ja, ich denke, das wäre möglich, aber es würde

Das OSRF VRX-Team (https://bitbucket.org/osrf/vrx/src/default/) hat sich auch die Wellenvisuals des UUV-Simulators zunutze gemacht und meinen Vorschlag zur Synchronisierung der Visuals in der Simulation mit der Physik integriert. Sie verwenden eine Volumenbasis-Auftriebsberechnung wie der UUV-Simulator anstelle des in der Mine verwendeten oberflächenkraftbasierten Ansatzes. Für den Anfang ist es vielleicht einfacher, die Ansätze in VRX und UUV zu kombinieren und später bei Bedarf zu einem komplexeren Auftriebsmodell überzugehen?

@srmainwaring Danke, ich werde mir das anschauen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

musamarcusso picture musamarcusso  ·  12Kommentare

atomoclast picture atomoclast  ·  23Kommentare

Timple picture Timple  ·  7Kommentare

dbcesar picture dbcesar  ·  5Kommentare

Timple picture Timple  ·  24Kommentare