Simulation der Bewegung von Computerspielfiguren. Informatikunterricht „Bewegungsmodellierung“ Verlet-Integrationsmethode

Dieses Tutorial enthält eine 3D-Szene.

Kurze Einleitung

Tatsächlich wurden in früheren Lektionen bereits bestimmte Aspekte der Physik in Cinema 4D erwähnt: Beispielsweise ließen wir in der allerersten Lektion auf dieser Website einen Ball auf eine ebene Fläche fallen, später wurde das physikalische Modell von Cinema 4D berücksichtigt Eine der Möglichkeiten, einen unendlichen Bewegungsgenerator zu simulieren. Bisher handelte es sich dabei jedoch nur um Teilaspekte, äußerst oberflächliche und primitivste Aspekte der Physik.

In dieser Lektion kommen wir zum Interessantesten: einer eingehenden Untersuchung der Physik in Cinema 4D anhand eines konkreten Beispiels – wir werden versuchen, eine voll funktionsfähige Version zu erstellen und zu konfigurieren (zumindest in der primitivsten Version). physikalisches Modell der Autobewegungüber unwegsames Gelände, wobei im Allgemeinen die gleichen Prinzipien simuliert werden, nach denen sich ein Auto in der realen Welt bewegt.

Die Notwendigkeit, ein physikalisches Modell der Fahrzeugbewegung zu verwenden, liegt in den Worten „über unwegsamem Gelände“. In den meisten Fällen ist es bei der Modellierung des Autoverkehrs nicht erforderlich, ein physisches Modell zu verwenden: Autos bewegen sich gleichmäßig entlang einer Flugbahn (das ist genau die Art von Verkehrsfluss, die wir anhand eines Automodells zu erzeugen gelernt haben, erinnern Sie sich?) und interagieren visuell praktisch in keiner Weise mit der Umwelt, und dies ist mit einfachen Mitteln leicht und einfach darzustellen, ohne auf die Physik zurückzugreifen. Sobald wir jedoch über das komplexe Gelände sprechen, über das das Auto fährt, oder über das außergewöhnliche Verhalten des Autos selbst (Abdriften, Schleudern oder Kollisionen), kommt die Physik an die Reihe, es sei denn, Sie und ich wollen das Platzieren Sie manuell eine große Anzahl von Schlüsseln und bearbeiten Sie die Verhaltenskurven eines dreidimensionalen Modells für jede Sekunde seines Verhaltens (und dies ohne die visuelle Plausibilität des endgültigen Renderings zu gewährleisten).

Ziele und Ziele

Definieren wir zunächst unsere Ziele und Vorgaben. Unser Ziel in dieser Lektion ist es, mehr oder weniger plausibles Verhalten eines Autos beim Fahren auf unebenem Untergrund darzustellen. Konkret: Das Auto soll bei Unebenheiten federn und rollen, aber auch über Schlaglöchern die Räder hängen lassen. Und natürlich sollte er beim Überwinden der Nervosität langsamer fahren und auf ebenen Strecken schneller fahren.

Wenn das Auto nicht je nach Gelände beschleunigt und abgebremst würde, würden wir unsere Aufgabe vielleicht vereinfachen, indem wir das Auto an einem unsichtbaren „Anführer“ „aufhängen“, der sich entlang einer bestimmten Flugbahn bewegt – in diesem Fall wäre es das Auto wie ein Kinderschlitten, dessen Geschwindigkeit nicht von der Höhe der Schneeverwehungen unter den Kufen abhängt, sondern von der Schrittgeschwindigkeit des Vaters, der seinen Sohn auf dem Schlitten zieht. In unserem Fall passt diese Lösung des Problems nicht zu Ihnen und mir, das heißt, Sie müssen das Automodell mit dem am besten funktionierenden Motor ausstatten. Für maximale Wirkung machen wir aus unserem Auto einen SUV mit Hinterradantrieb.

Lass uns anfangen?

Beginnen wir mit der Modellierung des Erscheinungsbilds des Autos (nämlich das Erscheinungsbild und nicht das physische Modell – das ist nicht dasselbe!). Unser Auto wird nur aus fünf dreidimensionalen Elementen bestehen: einer Karosserie und vier Rädern. Ich hoffe, Sie verstehen, dass jedes Rad ein separates Element des Modells sein sollte. Darüber hinaus ist es wünschenswert, jedes der Räder einteilig (monolithisch) zu machen, also aus einem einzigen Element und nicht aus einem Satz von Elementen zu bestehen, sonst werden Sie später auf viele Schwierigkeiten stoßen – Sie müssen sie befestigen Alle Elemente jedes Rads zusammen mit physikalischen Modifikatoren, was meiner Meinung nach eine völlig unnötige Zeitverschwendung wäre. Das Grundprinzip, nach dem wir die Elemente des Modells unterteilt haben, ist die Möglichkeit einer nachträglichen visuellen Verschiebung der Elemente relativ zueinander während der Bewegung des SUV.

Bitte beachten Sie, dass an der Unterseite der SUV-Karosserie Aussparungen für Räder vorhanden sind. Ich mache gleich einen Vorbehalt, dass deren Fehlen die Arbeit unseres zukünftigen physischen Modells nicht beeinträchtigen würde (später werden Sie es selbst sehen), aber solange Wenn Sie sich die Animation ansehen, sehen Sie, wie die Räder durch den Boden fahren, was natürlich ein grober visueller Fehler wäre.

Kommen wir nun zum Wichtigsten: der Erstellung des tatsächlichen physischen Modells des SUV. Man könnte sofort davon ausgehen, dass es an der Zeit ist, die Räder an der Karosserie zu befestigen. Auf keinen Fall! Nicht jetzt, nicht später. Und deshalb. Fakt ist, dass man, wenn man die Räder direkt an der Karosserie befestigen würde, wieder auf große Schwierigkeiten stoßen würde: Das physische Modell von Cinema 4D würde die Räder als solche wahrnehmen Im Körper(d. h. als ob sie darin stecken blieben) und würde um jeden Preis versuchen, sie zu befreien, wodurch man anstelle eines mehr oder weniger plausiblen Verhaltens der Räder hauptsächlich ihre kleinen, ununterbrochenen Vibrationen und a sehen würde minimale Reaktion auf physische Interaktion mit anderen Objekten rund um den SUV. Natürlich kann dieses Problem vollständig durch Feinabstimmung und zeitaufwändige Anpassung der Werte der Dynamik der Szene und der Modelle gelöst werden, beispielsweise der Intervalle, bei deren Erreichen die Interaktion dreidimensionaler Elemente beginnt, aber wir wird einen einfacheren Weg einschlagen.

Wir gehen einen einfacheren Weg – und erstellen dieses Mal kein visuelles, sondern ein physisches Modell der Karosserie. Nach dem Entwurf des Autors ist dies der gewöhnlichste polygonale Würfel. Bei Ihnen könnte es sich um jedes andere polygonale Objekt handeln – Hauptsache, es ist nicht unter der Karosserie des SUV sichtbar und es handelt sich um ein polygonales Modell, dessen Kanten weit genug von den Rädern entfernt sind. Wir werden dieses Element herkömmlicherweise als Gewichtszentrum bezeichnen.

Warum ist das so, fragen Sie? Warum kann es kein NULL-Objekt oder Spline sein?

Denn das von uns geschaffene Gewichtszentrum soll per Definition und aufgrund seines Namens aktiv am physischen Modell des SUV teilnehmen. Weder Splines noch NULL-Objekte nutzen letztere, da sie über physikalische Eigenschaften verfügen, da sie keine physikalische Oberfläche haben.

Damit ist der Gewichtsschwerpunkt des SUV geschaffen. Kommen wir nun zum Anbringen der Räder. In Ermangelung eines physischen Modells würden wir sie im Objektmanager einfach einem Würfel (oder sogar einem Körper) unterordnen, und das würde völlig ausreichen. In unserem Fall sollten die Räder nicht starr befestigt werden, sondern unter Berücksichtigung einer gewissen physikalischen Freiheit, also der Fähigkeit, sich bei körperlicher Interaktion mit anderen Objekten in der Szene (z. B. bei Unebenheiten) leicht relativ zum Gewichtsschwerpunkt zu verschieben Straßenoberflächen).

Für diese Art der Befestigung stellt Cinema 4D Objekte vom Typ „Connector“ (von englisch „connect“ – „verbinden“) zur Verfügung. Gehen Sie zum oberen Menü, suchen Sie nach dem Punkt „Simulation“, wählen Sie im Dropdown-Menü den Unterpunkt „Dynamik“ aus und klicken Sie im Dropdown-Untermenü auf „Anschluss“.

Wir sehen, dass im Arbeitsfenster ein neues Objekt aufgetaucht ist und sein Name im Objektmanager aufgetaucht ist. Beginnen wir mit dem rechten Vorderrad. Wir platzieren den Verbinder an der Stelle, an der sich der geometrische Mittelpunkt des Rads befindet, das mit dem Verbinder an der Karosserie befestigt wird – während sich der geometrische Mittelpunkt des Rads selbst an der Stelle befinden sollte, an der sich der Mittelpunkt der Radnabe befindet am Steuer gelegen.

Jetzt müssen Sie den Connector konfigurieren. Wir wählen seinen Namen im Objektmanager aus und sehen das Eigenschaftenfenster, das sich unten öffnet.

Der erste Parameter, dessen Wert wir ändern sollten, ist die Art der Verbindung (Parameter „Typ“). Er hängt davon ab, in welchen Mustern sich das Rad relativ zum Körper bewegt. Offensichtlich wäre in unserem Fall die „Radaufhängung“ die am besten geeignete Verbindungsart. In das Feld gegenüber den Worten „Objekt A“ ziehen wir den Namen des Gewichtszentrums aus dem Objektmanager, im Bild unten wird es als „Basis“ bezeichnet – das ist Gegenstand, zu dem Wir befestigen das Rad. Ziehen Sie in das Feld gegenüber den Worten „Objekt B“ den Namen des Rades (im Bild als „Wheel_FR“ angegeben, abgeleitet von der Abkürzung „Wheel Front Right“) – das ist widerspreche dem wir legen es Ihnen bei. Auf die Parameter „Anhang A“ und „Anhang B“ gehen wir nicht näher ein – sie geben an, wo sich die Schwerpunkte der Objekte befinden, und die Standardwerte passen in diesem Fall ganz gut zu uns.

Fahren wir mit der Feinabstimmung des Connectors fort.

Die Einstellung „Kollisionen ignorieren“ ist für den Fall gedacht, dass Sie eine physische Interaktion zwischen dem Rad und dem Gewichtsschwerpunkt vermeiden möchten – zum Beispiel, wenn die Anschlusseinstellungen eine Abweichung des Rads von bis zu 45 Grad zulassen, das Rad aber immer noch auf dem Objekt ruht, um das es sich handelt Berühren. angebracht ist und nicht bis zum maximal zulässigen Winkel abweichen kann, kann diese Einstellung Abhilfe schaffen. Der Parameter „Lenkwinkel“ ist der maximal zulässige Abweichungswinkel des Rades von seiner ursprünglichen Position. Der Parameter „Suspension Rest Position“ bestimmt die vertikale Verschiebung des Rades im Ruhezustand (d. h. in den Momenten, in denen das Rad mit nichts interagiert). In unserem Fall beträgt der Wert -15 cm. - Wenn Sie ihn auf -25 ändern, wird die Karosserie des SUV im Verhältnis zu den Rädern noch höher angehoben als derzeit und die Bodenfreiheit erhöht sich, jedoch um Gleichzeitig nimmt die Stabilität des SUV ab, da der Gewichtsschwerpunkt höher liegt – ähnelt das nicht schon der Stabilitätsbilanz von Autos in der realen Welt? Die Weichheit der Federung hängt vom Wert des Parameters „Suspension Stiffness“ ab. Je niedriger der Wert, desto weicher ist die Federung. Der Parameter „Suspension Dumping“ bestimmt den „Sprung“ der Federung. Und schließlich können Sie auf Wunsch die Parameter „Untergrenze Y“ und „Obergrenze Y“ aktivieren und für diese die Abstandswerte festlegen, über die das Rad nicht abweichen kann.

Nachdem wir den Stecker fertig eingerichtet haben, wiederholen wir den gleichen Vorgang – beginnend mit der Erstellung eines neuen Steckers – für das zweite Vorderrad, diesmal das linke. Anstatt durch das obere Menü zu navigieren, wie Sie wahrscheinlich bereits herausgefunden haben, können Sie einfach den Stecker des rechten Vorderrads finden, den wir zuvor erstellt haben, und die „Strg“-Taste auf der Tastatur mit aller Kraft gedrückt halten, um ihn zu ziehen Namen des Connectors an eine leere Stelle im Objektmanager einfügen – Nach Abschluss dieses Vorgangs erhalten Sie und ich eine neue Kopie des Connectors, die auch alle Einstellungen vom Original übernimmt. Denken Sie vor allem daran, im Feld „Objekt B“ der Eigenschaften des neuen Anschlusses den Namen des rechten Rads in den Namen des linken Rads zu ändern.

Die Vorderräder sind fertig. Gehen wir weiter nach hinten.

Und schon stehen wir vor einer auf den ersten Blick eher unverständlichen Frage: Wie viele Motoren soll unser SUV haben? Was für eine seltsame Frage, sagen Sie – natürlich eine.

Lassen Sie mich erklären, womit diese Frage zusammenhängt. In einem echten Automechanismus wird das Drehmoment über ein ziemlich komplexes System mechanischer Antriebe gleichzeitig auf beide Antriebsräder übertragen. Es macht für Sie und mich keinen Sinn, dieses Antriebssystem zu modellieren, da wir nicht die Aufgabe haben, die innere Struktur eines SUV zu visualisieren, was bedeutet, dass wir uns anstelle der vollständigen Funktionsweise des Motors eine vereinfachte physische Nachahmung leisten können solange die Antriebsräder durchdrehen und das Auto vorwärts schieben.

Daher haben Sie und ich zwei alternative Lösungen: wenn wir dringend eine Darstellung benötigen getrennte Traktion von zwei Antriebsrädern können wir dem virtuellen Design zwei separate Motoren hinzufügen, von denen jeder sein eigenes Rad dreht. Wenn wir keine separate Traktion modellieren müssen, besteht die effektivste und einfachste Möglichkeit, das Auto in Bewegung zu setzen, darin, ein sogenanntes „Radpaar“ zu erstellen – zwei fest miteinander verbundene Räder, die von einem Motor angetrieben werden.

In dieser Lektion wählen wir die zweite, einfachere Methode – das Erstellen eines Radsatzes und das Drehen mit einem Motor. Mit der Einschränkung, dass Sie diese Methode grundsätzlich auf Wunsch erschweren können – drehen Sie beispielsweise nicht den Radsatz, sondern die Achse mit den daran mittels Verbindungsstücken befestigten Antriebsrädern, sodass diese frei hin und her wackeln, wie z Für die Vorderräder haben wir bereits Räder konfiguriert In dieser Lektion werden wir unsere Aufgabe jedoch nicht unnötig verkomplizieren; wenn Sie Lust haben, experimentieren Sie selbst anhand der dieser Lektion beigefügten Szene; einen Link dazu finden Sie am Anfang der Lektion.

Also ist es entschieden - wir erstellen einen Radsatz: Wählen Sie die beiden Hinterräder aus - Sie können im Arbeitsfenster zum Objektmanager gehen, wo es für Sie bequemer ist - dann klicken wir im Objektmanager mit der rechten Maustaste auf eines von ihnen und im Dropdown-Kontextmenü suchen wir nach dem Punkt „Verbinden“ +Löschen“ („Verbinden und löschen“). In einer Zeile darüber im selben Kontextmenü gibt es einen Punkt „Verbinden“ – beim Kombinieren von Elementen wird ein neues Objekt erstellt, wobei die Originale der zusammengeführten Modelle unberührt bleiben; wir werden die Originale der einzelnen Hinterräder nicht benötigen.

Wir sehen, dass die Hinterräder des SUV zu einem dreidimensionalen Element geworden sind – genau das, was wir brauchten.

Wir erstellen einen weiteren Anschluss – dieses Mal für den Hinterradsatz, und aufgrund seiner monolithischen Beschaffenheit gibt es nur einen, und dann konfigurieren wir ihn. Wir platzieren es natürlich in der Mitte des Radsatzes.

Jetzt erstellen wir einen Motor: Obermenü, wieder Punkt „Simulation“, Dropdown-Menü, Unterpunkt „Dynamik“, Unterpunkt „Motor“ im Dropdown-Menü.

Wir platzieren den erstellten Motor an derselben Stelle wie den Anschluss für den Radsatz – in der Mitte zwischen den Hinterrädern (oder, wissenschaftlich gesehen, in der geometrischen Mitte des Hinterradsatzes), wählen dann seinen Namen im Objektmanager aus und verschieben ihn sanft Wir werfen unseren Blick auf das Fenster mit den Motoreigenschaften, das sich unten öffnet, und begeben uns auf eine Baustelle.

Ziehen Sie in das Feld neben den Worten „Objekt A“ den Namen des Hinterradsatzes aus dem Objektmanager (im Bild wird er als „Hinterräder“ angezeigt). Wir ziehen nichts in das Feld neben den Worten „Objekt B“. Wählen Sie für den Parameter „Typ“ den Wert „Angular“ – alles ist richtig, denn damit sich das SUV bewegen kann, muss der von uns erstellte Motor den Antriebsradsatz kontinuierlich um einen bestimmten Winkel drehen. Stellen Sie den Parameter „Modus“ auf „Geschwindigkeit regulieren“. Und schließlich geben wir die Zahlenwerte für die Parameter „Angular Target Speed“ und „Torque“ an.

Sie sind wahrscheinlich bereit, die Animation auszuführen und die Ergebnisse zu überprüfen. Wenn ja, dann ist es noch etwas früh: Schließlich haben wir erst einen Teil der Arbeit abgeschlossen – wir haben einen physischen Einfluss auf Objekte aufgebaut, während wir die physischen Objekte selbst noch nicht haben. Und die Räder, sagen Sie, und die Karosserie und der Gewichtswürfel? Es wurden zwar polygonale Modelle erstellt, aber physikalisch existieren für die Einflusskräfte noch weder die Räder, noch der Körper, noch der Gewichtswürfel – bis den Rädern, dem Körper und dem Gewichtswürfel das Tag „Dynamik“ zugewiesen wird. Denn es ist das Dynamik-Tag, das einem polygonalen Element einer dreidimensionalen Szene zugewiesen wird, was bedeutet, dass dieses Element in Interaktion mit anderen Elementen steht, die dynamische Eigenschaften aufweisen.

Beginnen wir mit der Einrichtung der physikalischen Eigenschaften des SUV. Und gleichzeitig bauen wir eine hierarchische Struktur der Elemente auf, aus denen sie besteht. Zunächst erstellen wir eine Gruppe, in der alle Elemente des Autos gesammelt werden (sofern dies noch nicht geschehen ist) – dies kann durch Zusammenfassen der ersten paar Elemente, die uns zur Verfügung stehen, mit der Tastenkombination Alt + G erfolgen ( Ich erinnere Sie daran, dass diese Kombination im Gegensatz zur allgemein akzeptierten Methode in Cinema 4D durch aufeinanderfolgende separate Tastenanschläge gleichzeitig gedrückt wird!) oder durch die Erstellung eines NULL-Objekts.

Als nächstes nennen wir die erstellte Gruppe ein einzigartiges, unnachahmliches und unvergessliches Wort (der Autor nannte sie beispielsweise „CAR“) und stopfen alle mit dem SUV verbundenen Elemente hinein: Karosserie, Räder, Anschlüsse, Gewichtswürfel und Motor.

Jetzt kennzeichnen wir die Elemente der Gruppe als Teilnehmer an der physischen Interaktion mit dem umgebenden physischen Modell: Wählen Sie den Namen der Gruppe aus, klicken Sie mit der rechten Maustaste darauf und bewegen Sie den Mauszeiger im Dropdown-Menü über den Eintrag „Dynamik-Tags“. Wählen Sie im Dropdown-Menü des letzten Untermenüs den einzigen Eintrag aus: „Dynamics Body“.

Wenn Sie diese Lektion bisher sorgfältig gelesen haben, fragen Sie sich vielleicht: Wie kann die „CAR“-Gruppe als NULL-Objekt in einem physischen Modell physisch interagieren? Das ist richtig, das NULL-Objekt selbst funktioniert nicht. Die Eigenschaften der Dynamik können jedoch von allen ihm untergeordneten Elementen geerbt werden, und es ist nicht erforderlich, jedem Element einzeln ein Dynamik-Tag zuzuweisen. Die Hauptsache ist, das Gruppendynamik-Tag richtig einzurichten. Konfigurieren: Wählen Sie das Tag aus und wählen Sie im Eigenschaftenfenster, das sich unten öffnet, die Registerkarte „Dynamik“, in der wir den Parameter „Aktiviert“ aktivieren (und damit die Interaktionsphysik einbeziehen) und den Wert „Ein“ für den Parameter „Dynamik“ auswählen ( Dies weist auf die Teilnahme der Gruppe an allen für die Szene üblichen physikalischen Regeln wie der Schwerkraft usw. hin)...

Gehen Sie dann im selben Eigenschaftenfenster auf die Registerkarte „Kollision“ und geben Sie die Werte an, die die Gruppenelemente zwingen, die Dynamikregeln zu erben: „Tag auf Kinder anwenden“ für den Parameter „Tag erben“ („Vererbung“), „Alle“ für „Einzelne Elemente“, ein Häkchen für „Selbstkollisionen“ und „Automatisch (MoDynamics)“ für „Form“ („Schaltung“). Die restlichen Parameter konfigurieren wir nach Ihrem Geschmack.

Hier wäre es angebracht, sich endlich an die Karosserie eines SUV zu erinnern. Nach unserer Idee sollte es auch mit dem umgebenden physischen Modell der dreidimensionalen Szene interagieren – zum Beispiel mit der Nase eine Wand aus Pappkartons werfen –, gleichzeitig aber nicht mit anderen Elementen seiner eigenen Gruppe interagieren - mit Gewichtswürfel und Rädern. Um dieses Ergebnis zu erzielen, werden wir es dem Gewichtswürfel unterordnen und der Karosserie ein individuelles Dynamik-Tag zuweisen – genau wie einer Gruppe von Autoelementen –, aber im Karosserie-Dynamik-Tag werden wir den Parameter „Dynamik“ deaktivieren (den Wert festlegen). „Aus“ dafür) im Reiter „Dynamik“ (beachten Sie, dass der Parameter „Aktiviert“ aktiviert bleibt, sonst nimmt die Karosserie nicht mehr am physischen Modell der Szene teil und jedes Hindernis, das dem SUV im Weg steht, wird dies tun ungehindert durch den Körper dringen!). Im Reiter „Kollision“ des dem Körper zugeordneten Dynamik-Tags können Sie für die Parameter „Tag erben“ und „Einzelne Elemente“ jeweils „Keine“ und „Aus“ festlegen – der Körper hat keine untergeordneten Elemente, denen der Körper zugeordnet ist dynamische Eigenschaften des Körpers sollen übertragen werden.

Es bleibt nur noch, der dreidimensionalen Szene das oben wiederholt erwähnte umgebende physische Modell hinzuzufügen – ein ungleichmäßiges Relief, das in der endgültigen Animation eine physikalisch plausible Reaktion des Autos auf die Interaktion mit Schlaglöchern offenbaren würde. In der der Lektion beigefügten Szene handelt es sich um eine grobe Ähnlichkeit einer Art Arena mit einem mit Hügeln übersäten Kern.

Abschließend

In dieser Lektion haben wir die Erstellung des einfachsten physikalischen Modells der Autobewegung untersucht – ohne zusätzliche Plugins und Module, mit Standard-Cinema 4D-Tools. Wie Sie bemerkt haben, wird in der Lektion die Modellierung von Kurven nicht besprochen; das von uns erstellte Modell kann sich natürlich nur in einer geraden Linie bewegen – es sei denn, das unebene Gelände unter den Rädern verändert die Bewegungsbahn (was passiert). im Video unten). Übrigens hat der Autor die Parameter des physikalischen Modells der dreidimensionalen Szene bewusst so angepasst, dass die Bewegung des SUV sozusagen übertrieben war, um das Zusammenspiel der Räder und der Karosserie mit deutlich zu demonstrieren Unregelmäßigkeiten. Darüber hinaus enthält die der Lektion beigefügte Szene weitere Elemente, die nicht in der Lektion erwähnt werden und für die Aufnahme und Beleuchtung gedacht sind. Anschließend werden möglicherweise komplexere physikalische Modelle auf der Website berücksichtigt.

Das Endergebnis liegt in Form einer Animation vor.


Kurzübersetzung-Nacherzählung des Artikels: .

Einführung

Der Artikel beschreibt die Grundlagen eines Ansatzes zur Modellierung der Bewegung von Objekten, der sich bequem in Computerspielen anwenden lässt. Dieser Ansatz ist einfach, die Programme, die ihn implementieren, funktionieren schnell und sind recht stabil. Darüber hinaus sind keine besonderen mathematischen Kenntnisse erforderlich, um die Grundlagen zu verstehen (obwohl der Ansatz selbst über solide mathematische Grundlagen verfügt). Mit seiner Hilfe können Sie die Bewegung von Geweben, weichen und harten Körpern sowie Körpern unter Berücksichtigung von Zusammenhängen simulieren.

Die physikalische Modellierung, d. h. die Modellierung der Bewegung von Charakteren auf der Grundlage der Gesetze der Physik (oder vielmehr der Mechanik), wird schon seit geraumer Zeit untersucht. In der Literatur werden verschiedene Ansätze vorgeschlagen (siehe usw.), und es wurde viel Aufwand in die Erstellung genauer und zuverlässiger Algorithmen investiert. Präzise Methoden zur Bewegungsmodellierung sind in der Physik seit langem bekannt. Bei Spielen und Virtual-Reality-Systemen ist die Genauigkeit jedoch nicht der wichtigste Vorteil (obwohl sie gut ist, wenn sie es ist). Viel wichtiger ist die Plausibilität (der Programmierer kann das Modell der Realität so weit verzerren, wie er möchte, solange es ihm gelingt, den Spieler zu fesseln) und die Geschwindigkeit der Ausführung (nur ein Teil der Zeit, die ein Animationsframe dauert, wird für die Ausführung reserviert). Berechnungen zur Modellierung von Bewegungen). Bei der physikalischen Modellierung impliziert der Begriff „Plausibilität“ auch Stabilität: Eine Modellierungsmethode, bei der Körper Hindernisse durchdringen oder abprallen, obwohl sie ruhig liegen sollten, kann nicht als erfolgreich angesehen werden. Die in dieser Arbeit beschriebenen Methoden wurden in erster Linie entwickelt, um Plausibilität und Geschwindigkeit der Berechnung zu erreichen. Sie sind leistungsstark und recht einfach zu implementieren (zumindest im Vergleich zu anderen Methoden, die die gleichen Probleme lösen).

Das betrachtete Verfahren ist iterativ, sodass es ab einem bestimmten Schritt jederzeit gestoppt werden kann. Dies ermöglicht einen Kompromiss zwischen Berechnungsgenauigkeit und Zeitaufwand: Wenn eine bestimmte Fehlermenge als akzeptabel erachtet wird, kann der Code schneller ausgeführt werden; Darüber hinaus kann die Größe des Fehlers während der Ausführung adaptiv gewählt werden. Die Methode verarbeitet auch Kollisionen und Ruhekontakte und bewältigt die Modellierung eines Stapels übereinander gestapelter Körper, was für viele Physik-Engines ein Problem darstellt.

Der Erfolg der Methode hängt von der richtigen Kombination und Nutzung der Vorteile mehrerer Techniken ab:

  • Numerische Integrationsmethode von Verlet;
  • Umgang mit Kollisionen und Körperdurchdringung mittels Projektion;
  • ein einfacher Constraint-Löser mit Entspannung;
  • Quadratwurzelnäherung, die die Berechnungsgeschwindigkeit erhöht;
  • Modellierung von Festkörpern als durch Bindungen verbundene Teilchen.

Für jede dieser Techniken geben wir eine kurze Erklärung. Beim Verfassen dieses Dokuments hat der Autor versucht, es einem möglichst breiten Publikum zugänglich zu machen, ohne dabei wesentliche Informationen zu verlieren, die für die Umsetzung notwendig sind. Das bedeutet, dass mathematische Erklärungen und Begründungen auf ein Minimum beschränkt werden, es sei denn, sie sind für das Verständnis des Themas von entscheidender Bedeutung. Ziel der Arbeit ist es, die Möglichkeit zu demonstrieren, eine ziemlich fortgeschrittene und robuste Methode der physikalischen Modellierung zu implementieren, ohne sich in mathematischen Feinheiten zu verlieren.

Der Inhalt ist wie folgt gegliedert. Abschnitt 2 beschreibt die Darstellung eines Partikelsystems ohne Verwendung der Geschwindigkeit. Diese Darstellung hat eine Reihe von Vorteilen, von denen die Stabilität und einfache Implementierung von Verbindungen und anderen Einschränkungen die bedeutendsten sind. Abschnitt 3 beschreibt, wie die Kollisionsbehandlung erfolgt. Anschließend wird in Abschnitt 4 das Partikelsystem um Verbindungen erweitert, die die Simulation von Stoffbewegungen ermöglichen. Abschnitt 5 erklärt, wie man ein System miteinander verbundener Partikel aufbaut, um einen starren Körper zu modellieren. Als nächstes zeigen wir in Abschnitt 6, wie man Verbindungen zwischen Körpern (insbesondere Scharniere) implementiert. Abschnitt 7 enthält verschiedene kurze Anmerkungen und einige Erfahrungen zur Umsetzung von Reibungsverlusten.

Im Folgenden werden Vektoren durch Buchstaben mit Pfeilen und ihre Komponenten durch Indizes bezeichnet: \(\vec(x)=(x_1,x_2,x_3)\) .

Verlet-Integrationsmethode

Das Herzstück einer Simulation (also der Simulation eines physikalischen Prozesses mit einem Computersystem) ist ein Partikelsystem. Typischerweise wird bei der Implementierung eines solchen Systems davon ausgegangen, dass jedes Teilchen zwei Hauptmerkmale aufweist: Koordinate (Position) \(\vec(x)\) und Geschwindigkeit \(\vec(v)\) . Anschließend werden die neuen Werte der Koordinaten \(\vec(x)^\prime\) und der Geschwindigkeit \(\vec(v)^\prime\) mithilfe der Formeln berechnet

$$ \begin(aligned) \vec(x)^\prime &= \vec(x) + \vec(v) \Delta t, \\ \vec(v)^\prime &= \vec(v) + \vec(a) \Delta t, \end(aligned) $$

wobei \(\Delta t\) der Zeitschritt ist, \(\vec(a)\) die gemäß Newtons 2. Gesetz berechnete Beschleunigung \(\vec(f)=m \vec(a)\) (wobei \(\vec(f)\) ist die auf das Teilchen wirkende Gesamtkraft). Die angegebenen Formeln implementieren die einfachste Methode der numerischen Integration – die Euler-Methode.

Wir betrachten eine andere Beschreibung eines Teilchens, bei dem die Geschwindigkeit nicht verwendet wird: Anstatt die Position und Geschwindigkeit jedes Teilchens zu speichern, werden wir die aktuelle Position des Teilchens \(\vec(x)\) und seine Position am vorherigen speichern Integrationsschritt \(\vec(x)^ (*)\) . Unter der Annahme, dass der Integrationsschritt konstant ist, erhalten wir die folgenden Formeln zur Berechnung neuer Werte:

$$ \begin(aligned) \vec(x)^\prime &= 2\vec(x) - \vec(x)^(*) + \vec(a) \Delta t^2, \\ \vec( x)^(*) &= \vec(x). \end(ausgerichtet) $$

Diese Methode der numerischen Integration wird als Verlet-Methode bezeichnet (siehe) und wird aktiv in der Molekulardynamik eingesetzt.

Die Verlet-Methode basiert auf einer Näherungsformel zur Berechnung der zweiten Ableitung

$$ \frac(\Delta^2 \vec(x))(\Delta t^2) = \frac( \frac(\vec(x)^\prime - \vec(x))(\Delta t) - \frac(\vec(x) - \vec(x)^(*))(\Delta t) )(\Delta t) = \frac(\vec(x)^\prime - 2\vec(x) + \vec(x)^(*))(\Delta t^2) = \vec(a) $$

Diese Näherung ist nicht die genaueste (es gibt fortgeschrittenere Methoden der numerischen Integration), aber sie ist stabil und funktioniert schnell. Indem wir den Faktor 2 auf beispielsweise 1,99 reduzieren, führen wir eine Widerstandskraft ein, die die Energie des Systems dissipiert. Beachten Sie auch, dass \(\vec(x)-\vec(x)^(*)\) die während des letzten Integrationsschritts zurückgelegte Strecke ist (\(\vec(v)\Delta t\) ).

Am Ende des Integrationsschritts wird die aktuelle Position jedes Partikels \(\vec(x)\) in der entsprechenden Variablen \(\vec(x)^(*)\) zur Verwendung im nächsten Schritt gespeichert. Wenn das System viele Partikel enthält, ist es praktisch, die Zeigerumleitung zu verwenden, anstatt ihre Koordinaten zu kopieren.

Der Code, der die oben beschriebenen Ideen umsetzt, könnte so aussehen (die Vector3-Klasse enthält alle notwendigen Operationen für Vektoren)

Klasse ParticleSystem ( Vector3 m_x [ NUM_PARTICLES ]; // Aktuelle Position Vector3 m_oldx [ NUM_PARTICLES ]; // Vorherige Position Vector3 m_a [ NUM_PARTICLES ]; // Gesamtkraft (Beschleunigung) Vector3 m_vGravity ; // Schwerkraft-Float m_fTimeStep ; öffentlich: void TimeStep(); privat: void Verlet(); void SatisfyConstraints(); void AccumulateForces(); // (Wir werden Konstruktoren, Feldinitialisierung usw. weglassen.) }; // Integrationsschritt nach der Verlet-Methode void ParticleSystem::Verlet() ( for (int i = 0 ; i< NUM_PARTICLES ; i ++ ) { Vector3 & x = m_x [ i ]; Vector3 temp = x ; Vector3 & oldx = m_oldx [ i ]; Vector3 & a = m_a [ i ]; x += x - oldx + a * fTimeStep * fTimeStep ; oldx = temp ; } } // Summe der Kräfte, die auf jedes Teilchen wirken void ParticleSystem::AccumulateForces() ( // Alle Teilchen stehen unter dem Einfluss der Schwerkraft für (int i = 0 ; i< NUM_PARTICLES ; i ++ ) m_a [ i ] = m_vGravity ; } // Überprüfung der Einhaltung überlagerter Verbindungen void ParticleSystem::SatisfyConstraints()( // Jetzt ist es uns egal, wie es implementiert wird.) // Berechnungsschritt void ParticleSystem :: TimeStep () ( AccumulateForces (); Verlet (); SatisfyConstraints (); )

Bisher sieht alles, was oben beschrieben wurde, nicht sehr beeindruckend aus. Die Vorteile dieses Ansatzes werden deutlich, wenn wir uns der Verwendung von Einschränkungen und der Beschreibung starrer Körper zuwenden.

Versuchen Sie, \(\vec(a)=(0,0,1)\) und die Anfangsbedingungen \(\vec(x)=(1,0,0)\) , \(\vec(x)^*=) festzulegen (0,0,0)\) . Berechnen Sie ein paar Schritte von Hand und sehen Sie, was passiert.

Kollisionen und Kontaktbehandlung mittels Projektion

Methoden zur Verarbeitung von Kontakten zwischen Körpern, die auf der Verwendung von Straffunktionen (strafenbasierte Schemata) basieren, legen nahe, dass an der Kontaktstelle, an der ein Eindringen von Körpern ineinander möglich ist, eine Feder eingesetzt werden muss, um diesen Kontakt zu simulieren. Dieser Ansatz ist einfach umzusetzen, führt jedoch zu einer Reihe schwerwiegender Probleme. Insbesondere ist es sehr schwierig, die Federsteifigkeit so zu wählen, dass einerseits die Gegenstände nicht zu tief ineinander eindringen und andererseits das System durch die Federsteifigkeit nicht an Stabilität verliert zu hoch sein. Ein anderer Ansatz zur Kollisionsverarbeitung besteht darin, dass bei Erkennung einer Kollision die Zeit bis zum genauen Zeitpunkt des Kontakts der Körper „zurückgespult“ wird (z. B. mithilfe einer binären Suche) und dann die Positionen und Geschwindigkeiten der Körper angepasst werden (unter Verwendung der aus dem Physikstudium bekannten Formeln für Kollisionen), wonach die Berechnung ab diesem Zeitpunkt erneut beginnt. Und so – bei jeder Kollision. Kein sehr wirtschaftlicher Ansatz, wenn Sie die Bewegung vieler Körper in Echtzeit simulieren möchten.

Hier betrachten wir einen anderen Ansatz. Wir werden Partikel, die in das Hindernis eingedrungen sind, außerhalb des Hindernisses projizieren. Unter Projektion verstehen wir die Bewegung eines Teilchens, das klein genug ist, um es gerade noch vom Hindernis zu lösen. Typischerweise geht es dabei darum, das Teilchen in Richtung senkrecht zur Kontaktfläche (Hindernis) zu bewegen – daher der Ursprung des Begriffs „Projektion“.

Betrachten Sie das folgende Beispiel. Unsere „Welt“ sei das Innere eines Würfels der Größe (0,0,0)--(1000,1000,1000) und außerdem sei der Restitutionskoeffizient von Partikeln Null (d. h. Partikel, die mit der Oberfläche kollidieren). der Würfel wird davon nicht reflektiert). Um sicherzustellen, dass die Koordinaten der Partikel innerhalb des Würfels bleiben, schreiben wir den folgenden Code, der die Projektion implementiert:

// Zwingt die Partikel dazu, im Würfel zu bleiben void ParticleSystem :: SatisfyConstraints () ( for (int i = 0 ; i< NUM_PARTICLES ; i ++ ) { // Für alle Teilchen Vektor3 & x = m_x [ i ]; x = vmin(vmax(x, Vector3(0, 0, 0)), Vector3(1000, 1000, 1000)); ) )

(vmax ist die komponentenweise Berechnung des Maximums und vmin ist die äquivalente Berechnung des Minimums). Dieser Code verarbeitet sowohl Kollisionen als auch ruhende Kontakte (d. h. Fälle, in denen ein Punkt auf der Oberfläche eines Würfels ruht) und speichert die Position aller Partikel innerhalb des Würfels. Das Schöne an der Verlet-Methode ist, dass entsprechende Änderungen der Geschwindigkeitswerte automatisch vorgenommen werden. Bei nachfolgenden Aufrufen von TimeStep() wird die Geschwindigkeit so angepasst, dass sie keine Komponente senkrecht zur Oberfläche des Würfels enthält (was einem Erholungsfaktor von Null entspricht). Siehe Abb.1.

Versuchen Sie, diese Berechnungen selbst durchzuführen – und Sie werden sehen, dass es nicht nötig ist, die Geschwindigkeit in der Richtung senkrecht zur Würfelwand auf Null zu setzen – dies geschieht „von selbst“. Dies mag trivial erscheinen, wenn wir uns auf die Modellierung von Partikeln beschränken, aber die Hauptvorteile der Verlet-Methode werden deutlich, sobald wir uns mit der Betrachtung von Bindungen und verbundenen starren Körpern befassen. Das heißt, genau jetzt.

Verarbeitung mehrerer gleichzeitig auferlegter Verbindungen im Entspannungsverfahren

Ein Stoffmodell ist normalerweise ein System aus Partikeln, die durch Federn verbunden sind. Es ist nicht schwierig, Differentialgleichungen für ein solches System aufzustellen. Aber es ist eine Sache, etwas aufzubauen, und eine ganz andere, es zu lösen. Gleichzeitig treten alle Probleme auf, die wir bei der Verwendung von Straffunktionen hatten: Zu steife Federn führen dazu, dass das Gleichungssystem selbst zum „steifen System“ wird, und dies führt zu Instabilität, wenn die einfachsten Methoden der numerischen Integration verwendet werden oder werden langsame Arbeit, wenn fortgeschrittenere Methoden verwendet werden, sind in beiden Fällen Kopfschmerzen garantiert. Umgekehrt führen zu weiche Federn dazu, dass der Stoff unrealistisch federnd wirkt.

Das Interessanteste passiert jedoch, wenn die Federsteifigkeit gegen Unendlich gerichtet wird: Das System wird plötzlich auch für eine sehr einfache (und schnelle) Integrationsmethode lösbar, bleibt aber stabil. Aber bevor wir weiter über Stoff sprechen, kehren wir zum vorherigen Beispiel zurück. Man kann sich den Würfel, mit dem wir es zu tun hatten, als eine Sammlung einseitiger Einschränkungen (d. h. Einschränkungen in Form von Ungleichungen) vorstellen – eine für jede Seite des Würfels – die während der gesamten Simulation ausgeführt werden müssen.

\begin(Gleichung) x_i \geq 0 \ \text(and)\ x_i \leq 1000 \quad (i=1,2,3). \label(eq:C1) \end(gleichung)

Um im betrachteten Beispiel die durch die Bindungen auferlegten Beschränkungen einzuhalten (damit die Partikel im Würfel bleiben), reicht es aus, einfach die Koordinaten der „herausgekletterten“ Partikel auf die Oberfläche des Würfels zu projizieren. Diese Idee wird im folgenden Pseudocode beschrieben:

// Pseudocode zur Durchsetzung von Einschränkungen (1) für i = 1 , 2 , 3 setze xi = min ( max ( xi , 0 ), 1000 )

Dies kann man sich so vorstellen, als ob das Teilchen und die Oberfläche des Hindernisses durch eine unendlich steife Feder verbunden wären, die, wenn sie gedehnt wird, sofort auf ihre normale Länge von Null zurückkehrt.

Erweitern wir unser Modell, indem wir einen Stab der Länge 100 hinzufügen. Dazu müssen wir zwei Teilchen (\(\vec(x)_1\) und \(\vec(x)_2\) ) definieren und diese benötigen Der Abstand zwischen ihnen beträgt immer 100. Die mathematische Notation für diese bilaterale Beziehung lautet:

\begin(gleichung) |\vec(x)_2-\vec(x)_1| = 100. \label(eq:C2) \end(gleichung)

Selbst wenn im ersten Moment die Positionen der Teilchen die Bedingungen \eqref(eq:C2) erfüllen, werden diese Bedingungen im nächsten Moment höchstwahrscheinlich nicht erfüllt sein. Um den richtigen Abstandswert zu erhalten, bewegen wir die Partikel und projizieren sie auf die durch \eqref(eq:C2) beschriebene Lösungsmenge. Dazu entfernen sich die Teilchen voneinander oder sie werden näher zusammengezogen, je nachdem, ob der durch numerische Integration erhaltene Abstand klein oder groß ist. Siehe Abb.2.

Verschieben von Partikeln, um einen Abstand zu korrigieren, der die Einschränkung \eqref(eq:C2) nicht erfüllt.

Pseudocode, der die Bedingungen \eqref(eq:C2) implementiert:

Delta = x2 - x1 ; deltalength = sqrt(delta * delta); diff = (Deltalänge - Restlänge) / Deltalänge; x1 -= delta * 0,5 * diff ; x2 += delta * 0,5 * diff ;

Beachten Sie, dass Delta ein Vektor und Delta*Delta ein Skalarprodukt ist. Dieser Pseudocode bewegt die Partikel auseinander oder bewegt sie, um den erforderlichen Abstand zwischen ihnen zu erreichen. Wir können uns dies wiederum als eine unendlich steife Feder vorstellen, die sofort auf ihre normale Länge von 100 zurückkehrt.

Nehmen wir nun an, dass zusätzlich zur Bedingung \eqref(eq:C2) auch die Bedingung \eqref(eq:C1) erfüllt sein muss (die Partikel müssen sich innerhalb des Würfels befinden). Es kann sich herausstellen, dass beim Versuch, die Bedingung \eqref(eq:C2) zu erfüllen, einige der Partikel des Stabes die Anforderungen \eqref(eq:C1) verletzen (der Stab ragt aus dem Würfel heraus). Sie können das störende Teilchen natürlich erneut auf die Oberfläche des Würfels projizieren, indem Sie \eqref(eq:C1) ausführen, aber dann wird \eqref(eq:C2) unterbrochen.

Um gleichzeitig die Anforderungen \eqref(eq:C1) und \eqref(eq:C2) zu erfüllen, müssen wir ein Gleichungssystem lösen. Wir werden dies tun, aber nicht direkt: Wir werden einfach zwei Fragmente des Pseudocodes nacheinander eine bestimmte Anzahl von Malen wiederholen, in der Hoffnung, dass das Ergebnis nützlich ist. Dieser Ansatz wird im folgenden Code implementiert:

//Implementierung der Modellierung eines Stabes innerhalb eines Würfels void ParticleSystem :: SatisfyConstraints () ( for (int j = 0 ; j< NUM_ITERATIONS ; j ++ ) { // Zuerst erfüllen wir die Bedingungen (1) für (int i = 0 ; i< NUM_PARTICLES ; i ++ ) { // Für alle Teilchen Vektor3 & x = m_x [ i ]; x = vmin(vmax(x, Vector3(0, 0, 0)), Vector3(1000, 1000, 1000)); ) // Jetzt erfüllen wir (2) Vektor3 & x1 = m_x [ 0 ]; Vektor3 & x2 = m_x [ 1 ]; Vektor3 Delta = x2 - x1 ; float deltalength = sqrt(delta * delta); float diff = (Deltalänge - Restlänge) / Deltalänge; x1 -= delta * 0,5 * diff ; x2 += delta * 0,5 * diff ; ) )

(Die Partikelinitialisierung wird hier weggelassen). Obwohl diese Methode der „dummen“ Wiederholung etwas naiv erscheinen mag, führt sie dennoch zu der Lösung, nach der wir suchen! In der Mathematik heißt es Entspannungsmethode(oder Jacobi oder Gauss-Seidel – je nachdem, wie genau Sie es machen, sehen Sie). Es erfüllt einzelne Einschränkungen nacheinander und konvergiert zu einer globalen Konfiguration, die alle Einschränkungen gleichzeitig erfüllt. Diese Methode ist in Situationen sehr nützlich, in denen mehrere unabhängige Einschränkungen gleichzeitig erfüllt werden müssen.

Die Anzahl der erforderlichen Iterationen hängt vom modellierten System und der Art der Bewegung ab. Sie können die Wahl dieser Zahl anpassen, indem Sie die Änderung messen, die im Vergleich zur vorherigen Iteration aufgetreten ist. Wenn wir die Iterationen zu früh stoppen, wird das Ergebnis nicht genau genug sein, aber dank der Verlet-Methode wird es im nächsten Frame wahrscheinlich etwas besser sein, im nächsten Frame sogar noch besser usw. Das bedeutet, dass auch die Entspannung gestoppt wird Frühzeitig wird die Animation nicht vollständig zerstört, aber das Bild wird ruckeliger.

Stoffmodellierung

Die Tatsache, dass eine Stabbindung als eine sehr steife Feder betrachtet werden kann, ermöglicht den Einsatz dieser Bindungsart zur Gewebemodellierung. Nehmen wir zum Beispiel an, dass der Stoff durch ein sechseckiges Netz aus Dreiecken dargestellt wird. Jeder Netzknoten stellt ein Partikel dar, und jede Fläche ist eine stabartige Verbindung, die die Partikel verbindet (die normale Länge eines Stabs entspricht dem Abstand zwischen den Knoten, die er verbindet).

Die Funktion HandleConstraints(), die für die Verarbeitung von Einschränkungen verantwortlich ist, verwendet die Entspannung über alle Einschränkungen. Der Entspannungszyklus kann mehrmals wiederholt werden. In den meisten Fällen reicht jedoch nur eine Iteration aus, um eine gut aussehende Animation zu erhalten. Das bedeutet, dass der Zeitaufwand einer Stoffsimulation hauptsächlich davon abhängt, wie lange es dauert, \(N\) Quadratwurzel- und \(N\) Divisionsoperationen durchzuführen (wobei \(N\) die Anzahl der Kanten im zu simulierenden Netz ist). der Stoff). Im Folgenden zeigen wir Ihnen einen Trick, um die Quadratwurzelberechnung loszuwerden. Aber schauen wir uns zunächst an, wie die Einschränkungsverarbeitung aussieht.

// Implementierung der Stoffmodellierung struct Constraint ( int PartikelA , PartikelB ; Float Restlänge ; ); // Angenommen, dass das m_constraints-Array bereits vorhanden ist void ParticleSystem :: SatisfyConstraints () ( for (int j = 0 ; j< NUM_ITERATIONS ; j ++ ) { for (int i = 0 ; i < NUM_CONSTRAINTS ; i ++ ) { Constraint & c = m_constraints [ i ]; Vector3 & x1 = m_x [ c . particleA ]; Vector3 & x2 = m_x [ c . particleB ]; Vector3 delta = x2 - x1 ; float deltalength = sqrt (delta * delta ); float diff = (deltalength - c . restlength ) / deltalength ; x1 -= delta * 0.5 * diff ; x2 += delta * 0.5 * diff ; } // Befestigen Sie eines der Partikel, aus denen der Stoff besteht, am Ursprung m_x [ 0 ] = Vector3 ( 0 , 0 , 0 ); ) )

Lassen Sie uns nun besprechen, wie Sie die Quadratwurzelberechnung loswerden können. Wenn alle Einschränkungen erfüllt sind (gut oder fast erfüllt), dann tendiert das Ergebnis der Berechnung der Quadratwurzel, wie wir bereits wissen, zu \(r\) – der normalen Länge der Verbindung (Stab). Wir nutzen diese Tatsache, um einen Näherungsausdruck für die Quadratwurzelfunktion zu erhalten. Ersetzen wir die Funktion \(\sqrt(x)\) durch einen Term 1. Ordnung aus ihrer Taylor-Reihenentwicklung in der Nähe der Länge \(r\) (dies entspricht einer Iteration der Newton-Raphson-Methode mit anfängliche Näherung \(r\)). Nach einigen Transformationen erhalten wir den folgenden Pseudocode:

// Pseudocode zur Durchsetzung von Einschränkungen (2) mithilfe der sqrt-Näherung Delta = x2 - x1 ; Delta *= Restlänge * Restlänge / (Delta * Delta + Restlänge * Restlänge) - 0,5; x1 -= Delta ; x2 += Delta ;

Beachten Sie, dass, wenn der Abstand bereits die Einschränkungen erfüllt (dh wenn |delta|=restlength), wir Delta gleich (0,0,0) erhalten und keine Änderung erfolgt.

Jetzt verwenden wir bei der Verarbeitung jeder Beziehung keine Quadratwurzeln mehr. Zusätzlich kann das Quadrat aus Restlänge * Restlänge im Voraus berechnet werden. Zeitaufwändige Vorgänge reduzieren sich auf die Durchführung von \(N\) Divisionen pro Frame (und den Zugriff auf den entsprechenden Speicher) – es ist schwer, sich etwas vorzustellen, das wesentlich schneller läuft.

Die Einschränkungen werden nicht unbedingt in einer Iteration erfüllt, aber dank der Verlet-Methode konvergiert das System schnell in den richtigen Zustand (wenn alle Einschränkungen erfüllt sind) – buchstäblich in wenigen Frames. Tatsächlich beseitigt die Verwendung nur einer Iteration und Quadratwurzelnäherung das Problem der Starrheit des Gleichungssystems, das in einem System mit absolut starren Stäben zwangsläufig auftreten würde.

Durch das Platzieren von Stiftverbindungen zwischen Paaren benachbarter Scheitelpunkte kann der Gewebemodellierungsalgorithmus auf die Pflanzenmodellierung erweitert werden.

Der in diesem Abschnitt besprochene Code und die Gleichungen gehen davon aus, dass alle Teilchen die gleiche Masse haben. Teilchen mit unterschiedlichen Massen können auf die gleiche Weise modelliert werden, die resultierenden Gleichungen werden jedoch etwas komplizierter sein.

Somit wird die Einhaltung der Nebenbedingung \eqref(eq:C2) für Partikel mit unterschiedlichen Massen durch den folgenden Pseudocode implementiert:

// Pseudocode zur Durchsetzung von Einschränkungen (2) Delta = x2 - x1 ; deltalength = sqrt(delta * delta); diff = (deltalength - restlength ) / (deltalength * (invmass1 + invmass2 )); x1 -= invmass1 * delta * diff ; x2 += invmass2 * delta * diff ;

Hier speichern invmass1 und invmass2 die inversen Massen der Teilchen \(\vec(x)_1\) und \(\vec(x)_2\) . Wenn wir möchten, dass das Teilchen stationär bleibt, müssen wir es auf invmass = 0 setzen, was einer unendlichen Masse entspricht. Wie oben können näherungsweise Quadratwurzelberechnungen verwendet werden, um die Berechnungen zu beschleunigen.

Feststoffe

Die Bewegungsgleichungen starrer Körper wurden lange vor der Erfindung moderner Computer vorgeschlagen. Um brauchbare Ergebnisse zu erhalten, mussten Mathematiker damals Formeltransformationen durchführen. Dies hat zu nützlichen Konzepten und Werkzeugen wie dem Trägheitstensor, dem Impulsmoment, dem Kraftmoment, Quaternionen zur Darstellung der Orientierung usw. geführt. Mittlerweile ermöglicht die Fähigkeit, große Datenmengen in digitaler Form zu verarbeiten, einfachere Berechnungen Elemente und machen solche Berechnungen in manchen Fällen sogar profitabler. Im Fall von starren 3D-Körpern bedeutet dies, dass es praktisch sein kann, einen starren Körper mit vier Partikeln und sechs Bindungen zu modellieren (unter Angabe der richtigen Anzahl an Freiheitsgraden: \(4 \cdot 3 - 6 = 6\)). Das vereinfacht viele Dinge, und das werden wir als nächstes tun.

Stellen Sie sich ein Tetraeder vor, an dessen vier Ecken je ein Teilchen platziert ist. Darüber hinaus stellt jede der sechs Kanten des Tetraeders eine stabartige Einschränkung dar, die im vorherigen Abschnitt besprochen wurde. Dies reicht völlig aus, um einen Festkörper zu simulieren. Das Tetraeder kann innerhalb des oben besprochenen Würfels platziert werden, und der Verlet-Integrator sorgt für seine korrekte Bewegung. Die Funktion SatisfyConstraints() muss sich um zwei Dinge kümmern: 1) dass die Partikel im Würfel bleiben und 2) dass die sechs Stabbeschränkungen erfüllt werden. Dies kann wie bisher durch Entspannung erfolgen: Normalerweise reichen 3-4 Iterationen aus. Vergessen Sie auch nicht die effiziente Quadratwurzelberechnung.

Es ist jedoch klar, dass sich starre Körper bei Kollisionen anders verhalten als „skelettartige“ Tetraeder. Es gibt noch ein weiteres Problem: Bisher haben wir die Tatsache einer Kollision zwischen einem starren Körper und der umgebenden „Welt“ nur anhand der Informationen über die Eckpunkte erkannt: Wenn ein Eckpunkt außerhalb des Würfels lag, wurde er wieder nach innen projiziert. Das funktioniert hervorragend, solange das Innere der „Welt“ konvex ist. Ist dies nicht der Fall, kann das Tetraeder die Grenze der „Welt“ auch dann durchdringen, wenn keiner seiner Eckpunkte diese Grenze überschreitet (siehe Abb. 3, wo das Dreieck ein flaches Analogon des Tetraeders ist). Schauen wir uns an, wie dieses Problem gelöst wird.

Schauen wir uns zunächst eine einfachere Version des Problems an. Nehmen wir einen Stab, platzieren ihn in einer kubischen „Welt“ und gehen davon aus, dass der Würfel einen kleinen Vorsprung hat, der nach innen zeigt. Jetzt kann der Stab die Grenzen der „Welt“ überschreiten, obwohl beide Teilchen an seinen Enden innerhalb des Würfels bleiben (Abb. 4). Wir werden nicht auf die Feinheiten der Entwicklung eines Kollisionserkennungsmechanismus eingehen, da dies eine ganz eigene Wissenschaft ist. Nehmen wir stattdessen an, dass bereits ein Kollisionserkennungs-Subsystem vorhanden ist und seine Aufgabe erfüllt: die Eindringtiefe und die Koordinaten der Eindringpunkte für jedes der beiden kollidierenden Objekte zu bestimmen. Eine Definition von Eindringpunkten und Eindringtiefe lautet: Die Eindringtiefe \(d_p\) ist der kürzeste Abstand, den zwei Objekte in einer geeigneten Richtung voneinander trennen müssen, um eine Kollision zu vermeiden. Penetrationspunkte sind die Punkte an jedem der Objekte, an denen sich die Objekte berühren, nachdem die oben erwähnte Übertragung stattgefunden hat.

Schauen Sie sich Abbildung 4 noch einmal an. Hier durchdrang der Stab nach der Stufe der numerischen Integration die Grenze. Der Kollisionsdetektor hat zwei Eindringpunkte erkannt: \(\vec(p)\) und \(\vec(q)\) . In Abb. 4a fällt der Punkt \(\vec(p)\) tatsächlich mit einem der Endteilchen zusammen: \(\vec(p)=\vec(x)_1\) . In Abb. 4b liegt \(\vec(p)\) zwischen \(\vec(x)_1\) und \(\vec(x)_2\) im Abstand von 1/4 der Stablänge von \ (\vec( x)_1\) . In beiden Fällen liegt der Punkt \(\vec(p)\) auf dem Stab und daher können seine Koordinaten als lineare Kombination der Koordinaten der Punkte \(\vec(x)_1\) und \ ausgedrückt werden (\vec(x) _2\) : \(\vec(p) = c_1\vec(x)_1 + c_2\vec(x)_2\) so dass \(c_1 + c_2 = 1\) . Im ersten Fall gilt \(c_1 = 1\) , \(c_2 = 0\) , und im zweiten Fall - \(c_1 = 0.75\) und \(c_2 = 0.25\) . Diese Werte sagen uns, wie weit die entsprechenden Teilchen bewegt werden müssen.

Um die Position des Stabes zu korrigieren, verschieben Sie ihn so, dass der Punkt \(\vec(p)\) mit \(\vec(q)\) zusammenfällt. Dazu bewegen wir die Teilchen \(\vec(x)_1\) und \(\vec(x)_2\) in die Richtung, die durch den Vektor angegeben wird, der \(\vec(p)\) und \(\ vec(q)\ ) : .

Im ersten Fall (Abb. 4a) projizieren wir einfach \(\vec(x)_1\) außerhalb des Bereichs, in dem es „verboten“ ist, zu sein, genau wie wir es zuvor getan haben (in die Richtung \(\vec(q). )\) ). Dies reicht aus und die Koordinaten \(\vec(x)_2\) müssen überhaupt nicht geändert werden. Im zweiten Fall (Abb. 4b) muss der Punkt \(\vec(x)_1\) ebenfalls um eine größere Entfernung als \(\vec(x)_2\) verschoben werden, da der Punkt \(\vec (p)\) liegt näher an \(\vec(x)_1\) (in der Tat, da \(\vec(p) = 0,75\vec(x)_1 + 0,25\vec(x)_2\), dann verschieben wir jedes Mal, wenn wir \(\vec(x)_1\) um einen Betrag von 0,75 verschieben, \(\vec(x)_2\) nur um 0,25). Mit anderen Worten, die neuen Positionen der Teilchen \(\vec(x)_1^\prime\) und \(\vec(x)_2^\prime\) sind durch die Beziehungen gegeben

\begin(equation) \begin(aligned) \vec(x)_1^\prime &= \vec(x)_1 + 0.75\lambda\cdot\vec(\Delta), \\ \vec(x)_2^\ Primzahl &= \vec(x)_2 + 0,25\lambda\cdot\vec(\Delta), \end(aligned) \label(eq:x_new) \end(gleichung)

wobei \(\lambda\) eine unbekannte Größe ist. Die neue Position des Teilchens \(\vec(p)\) - \(\vec(p)^\prime\) - wird mit der Formel berechnet

$$ \vec(p)^\prime = c_1\vec(x)_1^\prime + c_2\vec(x)_2^\prime . $$

Denken wir daran, dass wir \(\vec(p)^\prime = \vec(q)\) erreichen wollen, das heißt, wir müssen \(\lambda\) genau so wählen, dass \(\vec(p ) ^\prime\) fiel daher mit \(\vec(q)\) zusammen. Da wir Teilchen nur in die Richtung \(\vec(\Delta)\) bewegen, bewegt sich \(\vec(p)\) auch in die Richtung \(\vec(\Delta)\) und daher die Lösung für Gleichung \ (\vec(p)^\prime = \vec(q)\) kann durch Ausdrücken von \(\lambda\) gefunden werden

\begin(equation) \vec(p)^\prime\cdot\vec(\Delta) = \vec(q)\cdot\vec(\Delta) . \label(eq:pq) \end(Gleichung)

Wenn wir den Ausdruck auf der linken Seite der Gleichheit aufschreiben, erhalten wir

$$ \begin(aligned) \vec(p)^\prime\cdot\vec(\Delta) &= (0.75\vec(x)_1^\prime + 0.25\vec(x)_2^\prime) \cdot \vec(\Delta) \\ &= (0,75 (\vec(x)_1 + 0,75\lambda\cdot\vec(\Delta)) + 0,25 (\vec(x)_2 + 0,25\lambda\cdot\vec( \Delta))) \cdot\vec(\Delta) \\ &= ((0,75\vec(x)_1 + 0,25\vec(x)_2)\cdot\vec(\Delta) + \lambda(0,75^2 + 0,25^2)\cdot\Delta^2 \\ &= \vec(p) \cdot\vec(\Delta) + \lambda(0,75^2 + 0,25^2)\cdot\Delta^2 , \end( ausgerichtet) $$

was unter Berücksichtigung der rechten Seite \eqref(eq:pq) ergibt

$$ \lambda = \frac((\vec(p)-\vec(q)) \cdot\vec(\Delta))((0.75^2 + 0.25^2)\cdot\Delta^2) . $$

Wenn wir das gefundene \(\lambda\) in \eqref(eq:x_new) einsetzen, erhalten wir die korrigierten Positionen der Teilchen \(\vec(x)_1\) und \(\vec(x)_2\), an denen \( \vec( p)^\prime\) wird mit \(\vec(q)\) übereinstimmen.

Abbildung 5 zeigt die Position, die sich nach der Bewegung der Partikel ergibt. Es kommt nicht mehr zu einer gegenseitigen Durchdringung von Gegenständen, jedoch wird gegen die Forderung nach einer gleichbleibenden Länge des Stabes verstoßen. Um dies zu beheben, führen wir eine weitere Iteration des Entspannungszyklus (oder sogar mehrere) durch und schließen anschließend den Zyklus der Korrektur der Positionen der Partikel ab.

Im Fall eines Tetraeders funktioniert die oben beschriebene Strategie ähnlich. Zuerst werden die Durchdringungspunkte \(\vec(p)\) und \(\vec(q)\) gefunden (sie können auch innerhalb des Dreiecks liegen) und \(\vec(p)\) wird dargestellt als eine lineare Kombination von vier Teilchen \(\vec(p)=c_1\vec(x)_1+c_2\vec(x)_2+c_3\vec(x)_3+c_4\vec(x)_4\) so dass \(c_1+c_2+c_3+c_4=1\) (dies erfordert die Lösung eines kleinen linearen Gleichungssystems). Einmal gefunden \(\vec(\Delta) = \vec(q)-\vec(p)\), wird es möglich sein, den Wert \(\lambda\) mithilfe der Formel zu finden

$$ \lambda = \frac((\vec(p)-\vec(q)) \cdot\vec(\Delta))((c_1^2 + c_2^2 + c_3^2 + c_4^2)\cdot \Delta^2) , $$

und die korrigierten Partikelpositionen sind definiert als

$$ \begin(align*) \vec(x)_1^\prime &= \vec(x)_1 + c_1\lambda\cdot\vec(\Delta), \\ \vec(x)_2^\prime & = \vec(x)_2 + c_2\lambda\cdot\vec(\Delta), \\ \vec(x)_3^\prime &= \vec(x)_3 + c_3\lambda\cdot\vec(\Delta ), \\ \vec(x)_4^\prime &= \vec(x)_4 + c_4\lambda\cdot\vec(\Delta). \end(align*) $$

Wir haben also die Kollision eines starren Körpers mit einer bewegungslosen „Welt“ betrachtet. Die oben beschriebene Methode kann leicht verallgemeinert werden, um Kollisionen mehrerer starrer Körper zu bewältigen. In diesem Fall werden Kollisionen jeweils für ein Körperpaar verarbeitet und statt nur \(\vec(p)\) zu verschieben, müssen Sie \(\vec(p)\) und \(\vec (q)\ ) aufeinander zu.

Und auch hier muss nach der Anpassung der Positionen der Partikel, um ein gegenseitiges Eindringen von Körpern zu vermeiden, auf die Einhaltung sechs weiterer Einschränkungen geachtet werden – die Unveränderlichkeit der Abstände zwischen den Partikeln, aus denen der Festkörper besteht. Mit dieser Methode kann das Tetraeder sogar in einem anderen Objekt verschachtelt werden, was bei der Handhabung von Kollisionen praktischer ist als das Tetraeder selbst. Abbildung 6 zeigt einen in einem Würfel platzierten Tetraeder.

Zunächst muss der Würfel auf irgendeine Weise mit dem Tetraeder verbunden werden. Ein Ansatz besteht darin, den Massenschwerpunkt des Tetraeders als Mittelpunkt des Würfels zu wählen \(0,25\cdot (\vec(x)_1 + \vec(x)_2 + \vec(x)_3 + \vec(x)_4)\), und berechnen Sie dann anhand der aktuellen Koordinaten des Tetraeders die Koordinaten der Eckpunkte des Würfels. Wenn eine Kollision erkannt wird, wird der Kontaktpunkt \(\vec(p)\) (der sich jetzt auf dem Würfel befindet) auf die gleiche Weise wie oben verarbeitet. Die aktualisierten Partikelkoordinaten werden auf die gleiche Weise berechnet. Um die Berechnungen zu beschleunigen, können Sie die Koeffizienten \(c_1\) -\(c_4\) für alle Eckpunkte des Würfels vorab berechnen. Wenn \(\vec(p)\) zufällig ein Scheitelpunkt ist, können die Werte \(c_1\) -\(c_4\) gefunden und direkt verwendet werden. Andernfalls liegt \(\vec(p)\) innerhalb des Dreiecks oder auf einer seiner Seiten, und die Werte von \(c_1\)-\(c_4\) können aus den vorberechneten Werten von erhalten werden Eckpunkte eines Dreiecks mithilfe der Interpolation.

In der Regel reichen 3-4 Iterationen aus, um Kollisionen zu bewältigen. Wenn die Entspannung zu früh gestoppt wird, verhalten sich die Körper nicht ganz so stabil. Aber das ist sogar gut so, denn absolut feste Körper gibt es in der Natur nicht. Darüber hinaus wird das System dadurch stabiler.

Bei der Neuordnung der Positionen der Teilchen, aus denen das Tetraeder besteht, müssen sich die physikalischen Eigenschaften des Körpers entsprechend ändern (mathematisch bedeutet dies, dass sich der Trägheitstensor des Körpers ändert, abhängig von den Positionen und Massen der Teilchen).

Mit dem gleichen Prinzip wie beim Tetraeder können Sie eine weitere ähnliche Konfiguration von Partikeln und Bindungen festlegen, indem Sie die Partikel an Punkten mit den Koordinaten \((0,0,0)\), \((1,0,0)\) platzieren. \( (0,1,0)\) und \((0,0,1)\) . Seien \(\vec(a)\) , \(\vec(b)\) und \(\vec(c)\) Vektoren, die jeweils von Teilchen 1 zu den Teilchen 2, 3 und 4 gerichtet sind. Wir beschränken die Positionen der Teilchen durch die Anforderung, dass die Vektoren \(\vec(a)\) , \(\vec(b)\) und \(\vec(c)\) eine Einheitslänge und einen Winkel haben zwischen jedem der drei Vektorpaare war gleich \(90^\circ\) (die entsprechenden Skalarprodukte müssen gleich Null sein). Beachten Sie, dass dies wiederum, wie beim Tetraeder, 4 Teilchen und 6 Bindungen ergibt.

Gelenkkörper

Jetzt können wir mehrere starre Körper mithilfe von Scharnieren (zylindrisch, kugelförmig usw.) verbinden. Unter der Annahme, dass zwei Körper ein gemeinsames Teilchen haben, erhalten wir ein Kugelgelenk (Stiftgelenk), und wenn zwei Teilchen gemeinsam sind, erhalten wir ein Zylindergelenk (Scharnier) (Abb. 7). Auf die gleiche Weise können Sie zwei Körper mithilfe einer Stange oder einer anderen Verbindungsart verbinden – Sie müssen nur daran denken, Code hinzuzufügen, um die neue Verbindungsart in der Entspannungsschleife zu handhaben.

Dieser Ansatz ermöglicht es uns, ein vollständiges Modell des beweglichen menschlichen Körpers zu erstellen. Der Realismus erhöht sich, wenn man zusätzlich Beschränkungen der Winkelbewegungen in den Scharnieren vornimmt. Es gibt verschiedene Möglichkeiten, solche Einschränkungen umzusetzen. Die einfachste Methode besteht darin, eine Stabtypbeschränkung zu verwenden, die nur dann ausgelöst wird, wenn der Abstand zwischen zwei Partikeln einen bestimmten Schwellenwert unterschreitet (in diesem Fall handelt es sich um eine Einwegkopplung der Form). \(|\vec(x)_2 - \vec(x)_1| > 100\)). Dies hat zur Folge, dass beide Teilchen einander nie zu nahe kommen können (Abb. 8).

Eine andere Methode zum Erstellen von Beschränkungen für Winkelbewegungen erfordert die Erfüllung der folgenden Bedingung für das Skalarprodukt:

$$ (\vec(x)_2 - \vec(x)_0)\cdot (\vec(x)_1 - \vec(x)_0)< \alpha . $$

Sie können die Bewegung des Partikels auch auf eine bestimmte Ebene beschränken. Auch hier müssen Partikelpositionen, die die vorgegebenen Randbedingungen nicht erfüllen, korrigiert werden. Dies erfolgt ähnlich wie bei einer Rute, allerdings sind die entsprechenden Formeln etwas komplizierter.

| Modellierung in Tabellenkalkulationen

Lektionen 17 - 18
Modellierung in Tabellenkalkulationen

Simulation der Körperbewegung unter dem Einfluss der Schwerkraft

Beispiele für Bewegungen unter dem Einfluss der Schwerkraft sind allgemein bekannt. Dies ist der Fall eines Körpers aus einer bestimmten Höhe und die Bewegung eines Körpers, der mit einer bestimmten Geschwindigkeit nach oben geworfen wird, und die Bewegung eines Körpers, der in einem Winkel zum Horizont geworfen wird. Wenn bei solchen Problemen die Luftwiderstandskraft nicht berücksichtigt wird, werden alle aufgeführten Bewegungsarten durch bekannte Formeln beschrieben. Aber nicht weniger interessant sind Probleme, bei denen der Luftwiderstand berücksichtigt wird.

PROBLEM 3.24. Das Ziel treffen

Stufe I. Formulierung des Problems

BESCHREIBUNG DER AUFGABE

Jungen spielen Badminton. Ein Windstoß hob den Federball auf und trug ihn zu den Ästen eines Baumes. Die schwierige Aufgabe, die vor uns liegt, besteht darin, den Federball zu bekommen. Das Problem kann auf verschiedene Arten gelöst werden. Jede Methode hat ihre Vor- und Nachteile.

Sie können zum Beispiel auf einen Baum klettern. Dies ist jedoch eine sehr gefährliche Tätigkeit: Je höher die Äste der Bäume, desto dünner sind sie. Es besteht eine hohe Sturzwahrscheinlichkeit. Sie können einen Baum fällen. Aber offenbar hat noch niemand versucht, das Problem auf diese Weise zu lösen. Wenn jeder diese Methode zur Lösung des Problems wählen würde, wäre längst kein einziger Baum übrig geblieben. Sie können warten, bis der Federball von selbst fällt und vom nächsten Windstoß erfasst wird. Am häufigsten versuchen sie, den Federball mit einem Stein niederzuschlagen. Auch wir werden dieses Verhaltensmodell wählen. Darüber hinaus kennen wir die Gesetze der Körperbewegung.

ZWECK DER SIMULATION

Untersuchen Sie die Bewegung eines schräg zur Horizontalen geworfenen Körpers. Wählen Sie die Anfangswerte der Wurfgeschwindigkeit und des Wurfwinkels so, dass der geworfene Körper das Ziel trifft.

FORMALISIERUNG DES PROBLEMS

Notiz. Zum Einstellen der Treffergenauigkeit , müssen Sie die Körpergröße berücksichtigen.

Treffergenauigkeit sollte nicht mehr als die Hälfte der kleinsten geometrischen Größe des Körpers betragen.

Wenn das Ziel beispielsweise ein Federball mit einem Durchmesser von etwa 7 cm ist, dann = 3,5 cm. Wenn das Tor ein Basketballkorb mit einem Durchmesser von 40 cm ist, dann = 20 cm. Wenn das Ziel ein 5 m hoher Ballon ist, dann = 2,5 m.

II. Stufe. Modellentwicklung

INFORMATIONSMODELL

Wir stellen die Eigenschaften von Objekten und des Prozesses in tabellarischer Form dar.

Die Parameter der Körperbewegung sind in Abbildung 3.4 dargestellt. Die Bewegung eines schräg zur Horizontalen geworfenen Körpers wird durch die Formeln beschrieben


COMPUTERMODELL

Für die Modellierung wählen wir eine Tabellenprozessorumgebung. In dieser Umgebung werden tabellarische Informationen und mathematische Modelle zu einer Tabelle zusammengefasst, die drei Bereiche enthält:

♦ Ausgangsdaten;
♦ Zwischenberechnungen;
♦ Ergebnisse.

1. Füllen Sie den Quelldatenbereich entsprechend dem Beispiel aus.

Säulen A, B, C, D, E, F Füllen Sie von oben nach unten ähnliche Formeln aus.

2. Füllen Sie den Bereich Zwischenberechnungen und Ergebnisse aus.


EXPERIMENTELLER PLAN

TESTEN

EXPERIMENT 1

Entdecken Sie die Körperbewegung.

EXPERIMENT 2

Untersuchen Sie die Änderung der Bewegung eines Körpers, wenn sich die Anfangsgeschwindigkeit ändert.

EXPERIMENT 3

Untersuchen Sie die Veränderung der Körperbewegung, wenn sich der Wurfwinkel ändert.

EXPERIMENT 4

Untersuchen Sie durch Ändern der Anfangsgeschwindigkeit und des Wurfwinkels die Art der Körperbewegung und ihre Position im Verhältnis zum Ziel.

EXPERIMENT 5

Wählen Sie durch Ändern der anfänglichen Anfangsgeschwindigkeit und des anfänglichen Winkels die Werte aus, damit der geworfene Körper das Ziel mit der angegebenen Genauigkeit trifft.

NACHFORSCHUNGEN ANSTELLEN

TESTEN

1. Füllen Sie so viele Zeilen der Berechnungstabelle wie die Koordinate aus bei wird nicht kleiner als Null werden.

2. Vergleichen Sie die Ergebnisse der Testrechnung mit den im Berechnungsbeispiel angegebenen Ergebnissen. Die folgende Tabelle zeigt mehrere Zeilen mit den Ergebnissen der Berechnungen basierend auf den angegebenen Ausgangsdaten.

3. Erstellen Sie mithilfe der Spalten B und C ein Bewegungsdiagramm. Ein Beispiel ist in Abbildung 3.6 dargestellt. Um ein Diagramm zu erstellen, nehmen Sie so viele berechnete Werte, dass die Kurve die horizontale Achse schneidet X .

4. Wie kann ermittelt werden, wie viele Berechnungspunkte zum Erstellen eines Diagramms benötigt werden?

Abschluss. Um ein Diagramm zu erstellen, müssen Sie berechnete Werte verwenden, deren Koordinaten j größer als 0 und ein negativer Wert.

EXPERIMENT 1. Untersuchung der Körperbewegung

1. Beschreiben Sie anhand des Testfalldiagramms, wie sich der Körper bewegt.

2. Erklären Sie, wie Sie anhand des Diagramms den Punkt der höchsten Körpererhebung bestimmen können.

3. Erklären Sie, was der Schnittpunkt der Kurve mit der horizontalen x-Achse im Diagramm darstellt. Wie kann dieser Punkt anhand der Berechnungstabelle ermittelt werden?

4. Bestimmen Sie anhand des Diagramms, in welcher Entfernung der Körper vom Wurfpunkt zu Boden fallen wird.

5. Ermitteln Sie aus der Berechnungstabelle:

Maximale Hubhöhe;
Reisezeit zum höchsten Punkt;
die Entfernung vom Wurfpunkt bis zum Auftreffpunkt auf dem Boden;
Zeit zu fallen.

Notieren Sie im freien Bereich der Tabelle die Ergebnisse der Untersuchung der Körperbewegung gemäß dem vorgeschlagenen Modell.

6. Geben Sie eine andere Version der Ausgangsdaten ein und füllen Sie die Tabelle mit den experimentellen Ergebnissen dafür aus.

EXPERIMENT 2

1. Durch Ändern der Anfangsgeschwindigkeit von 5 auf 20 m/s beobachten Sie, wie sich die maximale Hubhöhe ändert (y-Koordinate)

2. Beobachten Sie, wie sich die Flugreichweite ändert (x-Koordinate) mit zunehmender Anfangsgeschwindigkeit.

3. Führen Sie Berechnungen für einen bestimmten Winkel durch und fassen Sie die Forschungsergebnisse in einer Tabelle (Tabelle 2) zusammen, die im freien Feld der Tabellenkalkulation zusammengestellt wird.

4. Notieren Sie in der Tabelle die Schlussfolgerungen aus den Ergebnissen des Experiments: Wie ändern sich Höhe und Flugreichweite bei einer Änderung der Anfangsgeschwindigkeit (bei konstantem Wurfwinkel)?


EXPERIMENT 3

1. Führen Sie Berechnungen am Modell durch, indem Sie den Wurfwinkel von 5° auf 85° erhöhen und die Anfangsgeschwindigkeit unverändert lassen (z. B. 15 m/s).

2. Beobachten Sie die Änderung der Hubhöhe (y-Koordinate) Mit zunehmendem Wurfwinkel bleibt die Anfangsgeschwindigkeit unverändert.

3. Beobachten Sie die Änderung der Flugreichweite (x-Koordinate) wenn der Wurfwinkel zunimmt.

4. Tragen Sie die Ergebnisse der Berechnungen in das freie Feld der Tabelle ein (Tabelle 3).

5. Tragen Sie die Schlussfolgerungen aus den Ergebnissen des Experiments in die Tabelle ein: Wie ändern sich Höhe und Reichweite des Fluges, wenn sich der Wurfwinkel ändert (bei konstanter Anfangsgeschwindigkeit)?

EXPERIMENT 4. Untersuchung der Art der Körperbewegung und ihrer Position im Verhältnis zum Ziel

Abbildung 3.7 zeigt Optionen für die Lage der Körperbewegungskurve im Verhältnis zum Ziel. Sie lassen sich wie folgt charakterisieren:

1. Bei der Bewegung erreicht der Körper nicht die Höhe, auf der sich das Ziel befindet, und fällt ohne Erreichen zu Boden X ts .

2. Bei der Bewegung erreicht der Körper nicht die Höhe, auf der sich das Ziel befindet, sondern fällt weiter auf den Boden X c.

3. Der Körper hebt sich bei Bewegung höher Y c, fällt aber zu Boden, ohne es zu erreichen X c.

4. Der Körper hebt sich bei Bewegung höher Y c und fällt weiter zu Boden X c.

In Spalten D, E und F Werte werden berechnet S x , S y , S, die die Position des Körpers im Verhältnis zum Ziel anzeigen.

1. Recherchieren Sie, was das Zeichen bedeutet S x und S y zu verschiedenen Zeitpunkten.

Abschluss.

2. Entdecken Sie, wie es sich verändert S wenn sich der Körper bewegt.

Abschluss. Die Gesamtentfernung zum Ziel nimmt zunächst ab und dann zu.

3. Wählen Sie im freien Feld der Tabelle (Tabelle 4) die Ausgangsdaten (Anfangsgeschwindigkeit und Wurfwinkel) aus, die den in Abbildung 3.7 dargestellten Optionen für die Körperbewegung entsprechen.


EXPERIMENT 5. Auswahl der Anfangswerte zum Treffen des Ziels

Zunächst stellen wir fest, dass es unendlich viele Möglichkeiten gibt, die Ausgangsdaten ans Ziel zu bringen. Unsere Aufgabe ist es, eine Option auszuwählen.

1. Nach Spalte F Bestimmen Sie den kleinsten Wert S. In diesem Moment fliegt der Körper dem Ziel am nächsten.

2. Zeichnen Sie die Spalte G Trefferanalyse. Wir gehen davon aus, dass der Körper das Ziel getroffen hat, wenn die Entfernung zum Ziel kleiner wird als die angegebene Genauigkeit (Zelle $D$10). Dazu in der Zelle G16 Geben Sie die Formel ein =WENN(F16<$D$10; «попал»; «мимо») .

3. Ändern Sie die Eingabedaten, um die beste Annäherung an das Ziel zu erhalten.

4. Notieren Sie die Forschungsergebnisse im freien Feld der Tabelle (Tabelle 5).

5. Wählen Sie einen anderen Anfangsdatensatz aus, bei dem der Körper den Ziel-„Überhang“ erreicht, d. h. nachdem er den höchsten Punkt des Anstiegs passiert hat.

6. Ändern Sie die Zielkoordinaten und wählen Sie die Werte der Anfangsgeschwindigkeit und des Wurfwinkels für die neue Zielposition aus.

Präsentieren Sie die Ergebnisse und Schlussfolgerungen der Experimente in Form eines Berichts in einem Textdokument. Geben Sie in Ihrem Bericht Antworten auf die folgenden Fragen:

1. Wie bewegt sich ein schräg zur Horizontalen geworfener Körper?
2. Wie ermittelt man den höchsten Aufstiegspunkt?
3. Wie bestimmt man die Flugreichweite?
4. Wie verändert sich die maximale Hubhöhe bei steigender Anfangsgeschwindigkeit und konstantem Wurfwinkel?
5. Wie verändert sich die Flugreichweite bei steigender Anfangsgeschwindigkeit und konstantem Wurfwinkel?
6. Wie verändert sich die maximale Hubhöhe mit zunehmendem Wurfwinkel und konstanter Anfangsgeschwindigkeit?
7. Wie verändert sich die Flugreichweite mit zunehmendem Wurfwinkel und konstanter Anfangsgeschwindigkeit?
8. Wie können wir die Position des Körpers im Verhältnis zum Ziel zu jedem Zeitpunkt berechnen? Wie lässt sich das aus der Berechnungstabelle ermitteln?
9. Wie verändert sich der Abstand vom Körper zum Ziel während der Bewegung und wie lässt sich dieser anhand der Berechnungstabelle ermitteln?

PROBLEM 3.25*. Fallschirmspringerbewegung

*Fortgeschrittene Herausforderung

Stufe I. Formulierung des Problems

BESCHREIBUNG DER AUFGABE

Wenn ein Fallschirmspringer zu Boden fällt, erfährt er die Schwerkraft und den Luftwiderstand. Es wurde experimentell festgestellt, dass die Widerstandskraft von der Bewegungsgeschwindigkeit abhängt: Je größer die Geschwindigkeit, desto größer die Kraft. Bei der Bewegung in der Luft ist diese Kraft bei einem bestimmten Luftwiderstandsbeiwert proportional zum Quadrat der Geschwindigkeit k, was von der Bauart des Fallschirms und dem Gewicht der Person abhängt R Widerstand = kV 2 .Welchen Wert sollte dieser Koeffizient haben, damit der Fallschirmspringer mit einer bestimmten Geschwindigkeit auf dem Boden landet? nicht mehr als 8 m/s das stellt keine Gesundheitsgefährdung dar?

Bestimmen Sie die Ziele der Modellierung und formalisieren Sie das Problem.

II. Stufe. Modellentwicklung

INFORMATIONSMODELL

Erstellen Sie selbst ein Informationsmodell.

MATHEMATISCHES MODELL

Abbildung 3.8 zeigt die auf den Fallschirmspringer wirkenden Kräfte. Nach dem zweiten Newtonschen Gesetz kann Bewegung unter dem Einfluss von Kräften als Gleichheit geschrieben werden. Wir projizieren diese Gleichheit auf die Bewegungsachse und ersetzen den Ausdruck durch die Luftwiderstandskraft ma = mg - kV 2 .

Lassen Sie uns die Formel zur Berechnung der Beschleunigung erhalten

Wir berechnen in regelmäßigen Abständen die Geschwindigkeit und Distanz, die der Fallschirmspringer zurückgelegt hat △t. Die Formel zur Berechnung von Zeitpunkten lautet: T i+1 +t ich + △t. 

Wo V ich- Geschwindigkeit zu Beginn des Intervalls ( V Ö- Startgeschwindigkeit). Die Geschwindigkeit am Ende des Intervalls (und dementsprechend am Anfang des nächsten) wird nach der Formel für gleichmäßig beschleunigte Bewegung berechnet

Die Distanz, die der Fallschirmspringer geflogen ist, ist gleich der Summe der zurückgelegten Distanz bis zum Beginn der nächsten Zeitspanne ( S ich) und die in diesem Intervall zurückgelegte Strecke:


COMPUTERMODELL

Für die Modellierung wählen wir eine Tabellenkalkulationsumgebung. In dieser Umgebung werden Informationen und mathematische Modelle in einer Tabelle zusammengefasst, die drei Bereiche enthält:

♦ Ausgangsdaten;
♦ Zwischenberechnungen;
♦ Ergebnisse.

1. Füllen Sie den Quelldatenbereich aus.

2. Füllen Sie die berechneten Spalten aus A B C D, bei dem die Bewegungsparameter des Fallschirmspringers berechnet werden:

Zeit;
Geschwindigkeit;
Distanz;
Beschleunigung.

3. Geben Sie Formeln in die Berechnungszellen ein. Beispiel für das Ausfüllen einer Berechnungstabelle:


Stufe III. Computerexperiment


EXPERIMENTELLER PLAN

TESTEN

Führen Sie eine Testrechnung des Computermodells mit den in der Tabelle angegebenen Daten durch.

EXPERIMENT 1

Untersuchen Sie die Bewegung eines Körpers unter dem Einfluss von Schwerkraft und Luftwiderstand.

EXPERIMENT 2

Wählen Sie den Wert des Widerstandskoeffizienten k für die sichere Landung des Fallschirmspringers.

EXPERIMENT 3

Untersuchen Sie die Abhängigkeit von Geschwindigkeit und Beschleunigung von der Anfangsgeschwindigkeit der Bewegung.

EXPERIMENT 4

Untersuchen Sie, wie sich die Flugdistanz ändert, bis sich die Fallgeschwindigkeit stabilisiert.

NACHFORSCHUNGEN ANSTELLEN

TESTEN

1. Vergleichen Sie die Ergebnisse der Testrechnung mit den im Berechnungsbeispiel angegebenen Ergebnissen. Beispiel für eine Testrechnung:

2. Erstellen Sie ein Diagramm der Geschwindigkeits-, Beschleunigungs- und Distanzänderungen in Abhängigkeit von der Zeit.

EXPERIMENT 1. Untersuchung der Körperbewegung unter Berücksichtigung des Luftwiderstands

1. Bestimmen Sie anhand des Diagramms und der Tabelle, wie sich die Geschwindigkeit des Fallschirmspringers im Laufe der Zeit ändert. Wie viele Sekunden dauert es, bis sich die Geschwindigkeit des Rückgangs stabilisiert?

2. Bestimmen Sie anhand des Diagramms und der Tabelle, wie sich die Beschleunigung des Fallschirmspringers im Laufe der Zeit ändert.

3. Bestimmen Sie anhand des Diagramms und der Tabelle, wie weit der Fallschirmspringer fliegen wird, bevor sich die Geschwindigkeit stabilisiert. Platzieren Sie Ihre Ergebnisse an einer leeren Stelle in Ihrer Tabelle.

4. Ändern Sie den Zeitschritt (0,1 s) und bestimmen Sie die Geschwindigkeit der Bewegungsstabilisierung und die Flugentfernung bis zur Stabilisierung. Die Ergebnisse der Studie sind in der Tabelle dargestellt.

EXPERIMENT 2. Auswahl des Widerstandskoeffizienten

Durch Ändern des Koeffizientenwerts k (Zellen-SZ) Wählen Sie eine Bewegungsstabilisierungsgeschwindigkeit, die für eine geübte Person eine sichere Landung ermöglicht (8 m/s).

EXPERIMENT 3. Untersuchung der Stabilisierung von Geschwindigkeit und Distanz in Abhängigkeit von der Anfangsgeschwindigkeit

Ein Fallschirmspringer fliegt nach einem Sprung aus einem Flugzeug einige Zeit im freien Fall, erreicht eine ausreichend hohe Geschwindigkeit und öffnet erst dann den Fallschirm.

1. Ändern Sie den anfänglichen Geschwindigkeitswert (10 m/s).

2. Bestimmen Sie anhand der Berechnungstabelle, wie sich Folgendes ändert:

Anfangsbeschleunigung;
Stabilisierungsgeschwindigkeit;
Flugdistanz, bis sich die Geschwindigkeit stabilisiert.

3. Notieren Sie die Ergebnisse des Experiments im freien Feld der Tabelle. Schlussfolgerungen ziehen.

Ergebnisse von Experiment 3:

Notiz. Beachten Sie, wie sich die anfängliche Beschleunigung ändert. Bitte beachten Sie, dass es nicht groß sein kann, da die Beschleunigung größer ist 3g (30 m/s2) verursacht sehr große Überlastungen.

Stufe IV. Analyse der Simulationsergebnisse

Beantworten Sie basierend auf den Ergebnissen des Computerexperiments die folgenden Fragen:

1. Wie verändert sich die Geschwindigkeit des Fallschirmspringers im Laufe der Zeit?
2. Wie ändert sich die Geschwindigkeit des Fallschirmspringers, wenn sich der Luftwiderstandsbeiwert ändert?
3. Wie hoch muss der Luftwiderstandsbeiwert sein, damit der Fallschirmspringer mit einer Geschwindigkeit von 8 m/s zu Boden sinkt?
4. Wie ändert sich die Bewegungsgeschwindigkeit und wie hängt die stationäre Geschwindigkeit der gleichförmigen Bewegung eines Fallschirmspringers von der Anfangsgeschwindigkeit ab?
5. Wie viele Sekunden nach Beginn der Bewegung kann die Geschwindigkeit des Fallschirmspringers als konstant angesehen werden?
6. In welcher Höhe über dem Boden sollte ein Fallschirmspringer seinen Fallschirm öffnen, um mit einer bestimmten Geschwindigkeit zu landen?

AUFGABEN FÜR SELBSTÄNDIGES ARBEITEN

3.26. Basketball-Spieler.

Berechnen Sie anhand des konstruierten Modells der Bewegung eines schräg geworfenen Körpers, mit welcher Anfangsgeschwindigkeit und in welchem ​​Winkel Sie einen Basketball werfen müssen, um in den Korb zu gelangen.

Berücksichtigen Sie bei der Berechnung folgende Bedingungen:

Die Anfangsgeschwindigkeit des Balls beim Werfen kann bis zu 15 m/s betragen;
Ringkoordinaten bei = 3m, X = 0,5 ÷ 7 m;
Die Treffergenauigkeit hängt vom Durchmesser des Rings ab und ist gleich = 20 cm;
Der Ball muss die „Baldachin“ des Rings treffen, d. h. nachdem er den höchsten Punkt der Anhöhe passiert hat.

Modifizieren Sie die mathematischen und Computermodelle der Bewegung eines in einem Winkel geworfenen Körpers, sodass sie zur Berechnung der Bewegung eines aus einer bestimmten Anfangshöhe geworfenen Körpers verwendet werden können j 0

3.27. Rettung eines Ertrinkenden.

Mit welcher Geschwindigkeit und in welchem ​​Winkel sollte ein Kreis von einem Rettungsschiff auf eine ertrinkende Person geworfen werden? Berücksichtigen Sie bei der Berechnung folgende Bedingungen:


die Entfernung der ertrinkenden Person vom Schiff;
die Genauigkeit des Treffers ist = 0,5 m;
der Wurfwinkel kann negativ sein;
die Höhe der Schiffsseite über dem Meeresspiegel.

3.28. Akrobaten.

Viele haben eine solche akrobatische Nummer im Zirkus gesehen. Ein Akrobat steht auf der einen Seite auf dem Sprungbrett, der zweite springt auf der anderen Seite. Mit welcher Anfangsgeschwindigkeit und in welchem ​​Winkel sollte der erste Akrobat hochfliegen, um genau auf den Schultern des dritten Aktteilnehmers zu landen? Berücksichtigen Sie bei der Berechnung folgende Bedingungen:

Die Anfangsgeschwindigkeit kann bis zu 10 m/s betragen;
Höhe und Entfernung des dritten Akrobaten;
die Genauigkeit des Treffers ist = 0,1 m.

Wir setzen die Artikelserie zur Automatisierung der Durchführung von Kunstflugmanövern auf kleinen Drohnen fort. Dieser Artikel hat in erster Linie einen pädagogischen Zweck: Hier zeigen wir am Beispiel der Aufgabe, ein „Fass“-Kunstflugmanöver bei der Steuerung eines Flugzeugs nur mit Querrudern durchzuführen, wie Sie ein einfaches automatisches Steuerungssystem (ACS) erstellen können. Der Artikel ist der zweite in der Publikationsreihe „Aerobatic UAV“, in der es um den Prozess des Aufbaus der Hardware- und Softwareteile der selbstfahrenden Geschütze in Trainingsform geht.

Einführung

Deshalb haben wir uns entschieden, das „Fass“ im Automatikmodus zu implementieren. Um eine Figur automatisch auszuführen, ist es natürlich notwendig, das entsprechende Kontrollgesetz zu formulieren. Der Erfindungsprozess wird viel schmerzloser und schneller sein, wenn Sie ein mathematisches Modell der Flugzeugbewegung verwenden. Die Überprüfung des Kontrollgesetzes in einem Flugexperiment ist zwar möglich, erfordert aber deutlich mehr Zeit und kann bei Verlust oder Beschädigung des Gerätes auch deutlich teurer werden.

Da bei kleinen Anstell- und Gleitwinkeln des Flugzeugs seine Rollbewegung praktisch nichts mit der Bewegung in den beiden anderen Kanälen zu tun hat: Spur und Längsrichtung, reicht es für die Ausführung eines einfachen „Fasses“ aus, nur ein Bewegungsmodell zu erstellen eine Achse - die Achse OH zugehöriger SC. Aus dem gleichen Grund wird sich das Querrudersteuergesetz nicht wesentlich ändern, wenn es darum geht, ein vollständiges Steuersystem zu erstellen.

Bewegungsmodell

Gleichung der Flugzeugbewegung um die Längsachse OH Der zugehörige SC ist äußerst einfach:

Wo ist das Trägheitsmoment um die Achse? OH, und der Moment besteht aus mehreren Komponenten, von denen es für eine realistische Beschreibung der Bewegung unseres Flugzeugs ausreicht, nur zwei zu berücksichtigen:

Wo ist das Moment, das durch die Drehung des Flugzeugs um seine Achse verursacht wird? OH(Dämpfungsmoment), - das durch die Auslenkung der Querruder verursachte Moment (Steuermoment). Der letzte Ausdruck ist in linearisierter Form geschrieben: Das Rollmoment hängt linear von der Winkelgeschwindigkeit und dem Querruderausschlagwinkel mit konstanten Proportionalitätskoeffizienten bzw. ab.

Bekanntlich (zum Beispiel aus Wiki) ist die lineare Differentialgleichung

Entspricht der aperiodischen Verbindung erster Ordnung

Wo ist die Übertragungsfunktion, ist der Differenzierungsoperator, ist die Zeitkonstante und ist der Gewinn?

Wie kommt man von einer Differentialgleichung zu einer Übertragungsfunktion?

In unserem Fall können wir wie folgt von den Gleichungsparametern zu den Übertragungsfunktionsparametern übergehen (in dem Wissen, dass die Ableitung negativ ist):




Bei einer aperiodischen Verbindung ist die Zeitkonstante gleich der Zeit, während der der Ausgangswert bei einer einzelnen schrittweisen Aktion des Eingangswerts einen Wert annimmt, der sich um ~5 % vom stationären Wert unterscheidet, und dem Verstärkungsfaktor ist numerisch gleich dem stationären Wert des Ausgangswerts bei einer einzelnen schrittweisen Aktion:


Im konstruierten Bewegungsmodell gibt es zwei unbekannte Parameter: Verstärkung und Zeitkonstante. Diese Parameter werden durch die Eigenschaften des physikalischen Systems ausgedrückt: Trägheitsmoment sowie Ableitungen des Rollmoments und:

Wenn also das Trägheitsmoment bekannt ist, ist es nach der Bestimmung der Modellparameter möglich, daraus die Systemparameter wiederherzustellen.

Modellparameter. Trägheitsmoment

Unser Flugzeug besteht aus folgenden Teilen: Flügel, Rumpf mit Heck, Motor, Batterie (Batterie) und Avionik:

Die Avionik umfasst: eine Autopilotplatine, eine SNS-Empfängerplatine, eine Funkmodemplatine, eine Signalempfängerplatine von Steuergeräten, zwei Spannungsregler, einen Motordrehzahlregler und Verbindungskabel.

Aufgrund des geringen Gewichts der Avionik kann ihr Beitrag zum Gesamtträgheitsmoment vernachlässigt werden.

Wie wurde die Größe des Trägheitsmoments beurteilt?

Das Trägheitsmoment kann wie folgt abgeschätzt werden. Betrachten wir die Ebene entlang ihrer Achse OH:

Und dann stellen wir es in Form des folgenden vereinfachten Modells dar:


Schema zur Berechnung des Trägheitsmoments. Oben links ist die Batterie, unten rechts ist der Motor. Der Motor und die Batterie befinden sich auf der Rumpfachse

Es ist ersichtlich, dass bei der Erstellung des Modells Folgendes weggelassen wurde: Kiel, Höhenleitwerk, Propeller und Avionik. Gleichzeitig blieben übrig: Rumpf, Tragfläche, Batterie, Motor. Durch Messung der Massen und charakteristischen Abmessungen jedes Teils ist es möglich, die Trägheitsmomente jedes Teils relativ zur Längsachse des Rumpfes zu berechnen:


Der Gesamtwert des Trägheitsmoments des Flugzeugs relativ zur Achse OH wir erhalten durch Addition der Trägheitsmomente der Teile:

Nach der Bewertung des Beitrags jedes Teils des Flugzeugs zum Gesamtträgheitsmoment wurde Folgendes ermittelt:

  • Flügel - 96,3 %,
  • Rumpf - 1,6 %,
  • Motor und Batterie - 2%,
Man erkennt, dass der Hauptbeitrag zum Gesamtträgheitsmoment vom Flügel stammt. Dies liegt daran, dass der Flügel eine ziemlich große Quergröße hat (Flügelspannweite - 1 m):

Daher weist der Flügel trotz seines geringen Gewichts (etwa 20 % der gesamten Startmasse des Flugzeugs) ein erhebliches Trägheitsmoment auf.

Modellparameter. Ableitungen des Rollmoments und

Die Berechnung der Ableitungen des Rollmoments ist eine ziemlich schwierige Aufgabe im Zusammenhang mit der Berechnung der aerodynamischen Eigenschaften eines Flugzeugs mithilfe numerischer Methoden oder mithilfe technischer Techniken. Die Verwendung der ersten und zweiten Methode erfordert erhebliche Zeit-, Denk- und Rechenkosten, die bei der Entwicklung von Steuerungssystemen für große Flugzeuge gerechtfertigt sind, wo die Kosten eines Fehlers immer noch die Kosten für den Bau eines guten Modells übersteigen. Für die Aufgabe, ein UAV zu steuern, dessen Masse 2 kg nicht überschreitet, ist dieser Ansatz kaum gerechtfertigt. Eine andere Möglichkeit, diese Ableitungen zu berechnen, ist ein Flugexperiment. Angesichts der geringen Kosten unseres Flugzeugs sowie der Nähe eines geeigneten Feldes für ein solches Experiment lag die Wahl für uns auf der Hand.

Nachdem wir die Firmware für die manuelle Steuerung und Registrierung von Parametern im Autopiloten geschrieben hatten, bauten wir das Flugzeug zusammen und bereiteten es für den Test vor:

In einem Flugexperiment konnten Daten über den Querruderausschlagwinkel und die Rotationswinkelgeschwindigkeit des Flugzeugs gewonnen werden. Der Pilot steuerte das Flugzeug im manuellen Modus, indem er im Kreis, in Kurven und in „Fässern“ flog, und die Bordausrüstung zeichnete die erforderlichen Informationen auf und sendete sie an die Bodenstation. Als Ergebnis wurden die notwendigen Abhängigkeiten erhalten: (deg/s) und (b/r). Der Wert ist der normalisierte Querruder-Ausschlagwinkel: Der Wert 1 entspricht dem maximalen Ausschlag und der Wert −1 entspricht dem minimalen:

Wie können wir nun aus den gewonnenen Daten ermitteln? Die Antwort besteht darin, die Parameter des Übergangsprozesses mithilfe der Diagramme und zu messen.

Wie wurden die Koeffizienten k und T bestimmt?

Der Verstärkungsfaktor wurde ermittelt, indem der Wert des stationären Werts der Winkelgeschwindigkeit auf den Wert des Querruderausschlags bezogen wurde:


Im Flugexperiment ermittelte Abhängigkeiten des Ausschlagwinkels der Querruder und der Rollgeschwindigkeit von der Zeit

In der vorherigen Abbildung entsprechen die Abschnitte des stationären Werts der Winkelgeschwindigkeit beispielsweise in etwa den Abschnitten in der Nähe der Zeitpunkte 422, 425 und 438 s (in der Abbildung dunkelrot markiert).
Die Zeitkonstante wurde aus den gleichen Diagrammen bestimmt. Dazu wurden Bereiche mit starken Änderungen des Querruderausschlagwinkels gefunden und anschließend die Zeit gemessen, in der die Winkelgeschwindigkeit einen Wert annahm, der um 5 % vom stationären Wert abweicht.


Das Ergebnis der Bestimmung der Werte der Zeitkonstante und der Verstärkung ist wie folgt: , . Diese Werte der Koeffizienten entsprechen bei bekanntem Wert des Trägheitsmoments den folgenden Werten der Ableitungen des Rollmoments:

Modellverifizierung

Ich habe also ein Modell basierend auf der aperiodischen Verbindung erstellt

Dies kann überprüft werden, indem ein aus dem Flugexperiment gewonnenes Signal an den Eingang angelegt und das Ausgangssignal des Modells mit dem ebenfalls im Experiment erhaltenen Wert verglichen wird.

Wie wurde die Simulation durchgeführt?

Wir haben das Tool zur Durchführung der Simulation zunächst aufgrund der Möglichkeit ausgewählt, die Ergebnisse für einen breiten Leserkreis zu wiederholen: Dies bedeutet zunächst einmal, dass das Programm gemeinfrei sein sollte. Im Prinzip kann das Problem der Modellierung des Verhaltens einer aperiodischen Verbindung erster Ordnung gelöst werden, indem man ein eigenes Tool von Grund auf erstellt. Da das Modell jedoch in Zukunft komplexer werden wird, kann die Erstellung eines eigenen Werkzeugs von der Hauptaufgabe ablenken – der Entwicklung selbstfahrender Steuerungssysteme für Kunstflugdrohnen. Unter Berücksichtigung des Grundsatzes der Offenheit des Tools haben wir uns entschieden JSBsim.

Im vorherigen Abschnitt haben wir die Werte der Koeffizienten und erhalten. Mit ihnen simulieren wir die Bewegung eines Flugzeugs. Aus dem vorherigen Artikel erinnern wir uns an die Konfiguration des Flugzeugmodells in JSBsim wird mit angegeben XML Datei. Lassen Sie uns unser eigenes Modell erstellen:
0.2 1.0 0.2 0.03 0.5 0.03 0.5 -0.025 0 0.05 0.018 0.018 0.018 1.2 0 0 0 fcs/aileron-cmd-norm -1 1 Roll_moment_due_to_roll_rate Geschwindigkeiten/p-aero-rad_sec -0.24 Roll_moment_due_to_aileron fcs/aileron-cmd-norm 2.4 Geschwindigkeiten/vc-kts Aero/alphadot-deg_sec Aero/betadot-deg_sec Fcs/throttle-cmd-norm AUS AUS AUS AN AN AN AUS AUS AN AUS AUS AN AUS
Da wir ein Modell der Fahrzeugbewegung nur in Rollen erstellen, lassen wir viele Abschnitte der Datei leer. Die folgenden Merkmale werden nacheinander in der Modelldatei angegeben.

Geometrische Abmessungen Flugzeuge sind im Abschnitt angegeben Metriken: Flügelfläche, Spannweite, mittlere aerodynamische Sehnenlänge, horizontale Heckfläche, horizontaler Leitwerksarm, vertikale Leitwerksfläche, vertikaler Leitwerksarm, aerodynamische Schwerpunktposition.

Masseneigenschaften Flugzeuge sind im Abschnitt angegeben Massenbilanz: Trägheitstensor des Flugzeugs, Gewicht des leeren Flugzeugs, Lage des Massenschwerpunkts.

Es ist erwähnenswert, dass die absoluten Positionen des aerodynamischen Schwerpunkts und des Massenschwerpunkts des Flugzeugs bei der Berechnung der Dynamik des Fahrzeugs keine Rolle spielen; ihre relative Position ist wichtig.
Darauf folgen Abschnitte, in denen die Eigenschaften des Fahrwerks und des Triebwerks des Flugzeugs beschrieben werden.

Im nächsten Abschnitt verantwortlich für Kontrollsystem, füllen wir den für die Rollkontrolle verantwortlichen Kanal: Geben Sie den einzigen Eingang an fcs/aileron-cmd-norm, dessen Wert von -1 auf 1 normalisiert wird.

Aerodynamische Eigenschaften sind im Abschnitt angegeben Aerodynamik: Kräfte sind im Gangegeben, Momente - im gebundenen. Uns interessiert der Rollmoment. Im Abschnitt Achsenname="ROLL" Es werden Funktionen angegeben, die das Kraftmoment aus verschiedenen Komponenten der Projektion des Moments der aerodynamischen Kräfte auf die Achse bestimmen OCHSE zugehörigen Koordinatensystem. In unserem Modell gibt es zwei solcher Komponenten. Die erste Komponente ist das Dämpfungsmoment, das gleich dem Produkt der Winkelgeschwindigkeit mit dem zuvor ermittelten Koeffizienten ist. Die zweite Komponente ist das Moment der Querruder bei einer festen Fluggeschwindigkeit: Es ist gleich dem Produkt aus einem zuvor bestimmten Koeffizienten und dem Betrag der Querruderauslenkung.

Es ist zu beachten, dass bei der Bestimmung des Koeffizienten der Dimensionswert verwendet wurde. In unseren Flugdaten wurde der Wert der Winkelgeschwindigkeit in Grad pro Sekunde gemessen, während in JSBSim Es werden Radianten pro Sekunde verwendet, daher muss der Koeffizient auf die von uns benötigte Dimension reduziert werden, d. h. durch 180 Grad geteilt und mit einem Bogenmaß multipliziert werden. Wir schreiben diese Komponenten des Moments der aerodynamischen Kräfte innerhalb der Funktionen des Produkts auf Produkt. Bei der Modellierung wird das Ergebnis der Ausführung aller Funktionen zusammengefasst und der Wert der Projektion des aerodynamischen Moments auf die entsprechende Achse ermittelt.

Sie können das erstellte Modell anhand der experimentellen Daten überprüfen, die bei Flugtests gewonnen wurden. Erstellen Sie dazu ein Skript mit folgendem Inhalt:
sim-time-sec ge 0.0 Geben Sie einen Zeitverlaufseingang für das Querruder an sim-time-sec ge 0

Sim-Zeit-Sek 0 0.00075 0.1 0.00374 0.2 -0.00075 0.3 -0.00075 0.4 -0.00075 0.5 -0.00075 0.6 0.00075 0.7 0.00075 ... 48.8 -0.00075 48.9 0.00000 49 -0.00075

wobei Punkte fehlende Daten darstellen. In der Skriptdatei, die uns aus dem vorherigen Artikel bekannt ist, ist ein neuer Ereignistyp aufgetaucht ( „Zeitliche Mitteilung“), wodurch Sie eine kontinuierliche Änderung des Parameters über die Zeit einstellen können. Die Abhängigkeit des Parameters von der Zeit wird durch eine Tabellenfunktion angegeben. JSBSim interpoliert linear den Wert einer Funktion zwischen Tabellendaten. Das Verfahren zur Überprüfung des Rollbewegungsmodells besteht darin, dieses Skript auf dem erstellten Modell auszuführen und die Ergebnisse mit den experimentellen Ergebnissen zu vergleichen.


Das Verifizierungsergebnis ist in der Abbildung dargestellt:


Wie aus der Abbildung hervorgeht, ist die Übereinstimmung zwischen Modell und Realität etwas unvollständig.

Steuerungssynthese zur Durchführung eines „Fass“

Nach Erhalt des Modells lässt sich leicht feststellen, um welchen Betrag und wie lange die Querruder ausgelenkt werden müssen, um einen „Fass“ auszuführen. Eine Möglichkeit ist der folgende Ablehnungsalgorithmus:



Das Vorhandensein von Segmenten mit einer Dauer von 0,1 s am Anfang und am Ende des Querruderauslenkungsalgorithmus simuliert die Trägheit des Servos, das Flächen nicht sofort auslenken kann. Das Modell zeigt, dass das Flugzeug bei diesem Querruderausschlaggesetz eine vollständige Umdrehung um die Achse ausführen muss OH, sollen wir das überprüfen?

Flugexperiment

Das resultierende Querruder-Steuergesetz wurde in den im Flugzeug installierten Autopiloten programmiert. Die Idee des Experiments ist einfach: Bringen Sie das Flugzeug in den Horizontalflug und nutzen Sie dann das resultierende Kontrollgesetz. Wenn die tatsächliche Rollbewegung des Flugzeugs mit dem erstellten Modell übereinstimmt, muss das Flugzeug ein „Fass“ ausführen – eine volle Drehung um 360 Grad.

Unser besonderer Dank gilt unserem treuen Piloten für seine Arbeit, seine Professionalität und den praktischen Kofferraum seines Priore-Kombis!

Während des Experiments wurde deutlich, dass das Rollbewegungsmodell erfolgreich konstruiert wurde – das Flugzeug führte einen „Fass“ nach dem anderen aus, sobald der Pilot das programmierte Steuergesetz aktivierte. Die folgende Abbildung zeigt die während des Experiments aufgezeichnete und aus den Simulationsergebnissen gewonnene Winkelgeschwindigkeit sowie die Roll- und Nickwinkel aus dem Flugexperiment:


Und die folgende Abbildung zeigt die im Flugversuch aufgezeichneten Signale für Querruder, Höhenruder (ER) und Seitenruder (RU):


Vertikale Linien zeigen den Beginn und das Ende der „Fass“-Ausführung an. Aus den Abbildungen geht hervor, dass der Pilot während des „Fassrollens“ nicht in die Steuerung des Höhen- und Seitenruders eingreift; es ist auch klar, dass der Nickwinkel während des „Fassrollens“ – das Flugzeug wird gezogen – ausnahmslos dazu neigt, sich zu verringern in einen Sturzflug, wie anhand der Simulationsergebnisse in einem Flugsimulator vorhergesagt wurde (siehe Artikel „Kunstflug-UAV. Wie man ein Fass richtig zum Rollen bringt“). Wenn Sie die vorherigen Diagramme sorgfältig untersuchen, werden Sie feststellen, dass der dritte „Fass“ noch nicht einmal fertiggestellt wurde, weil der Pilot in die Steuerung eingegriffen hat, um das Flugzeug aus dem Sturzflug zu bringen: Der Steigungswinkel ändert sich so stark, wenn ein „Fass“ ausgeführt wird. nur mit Querrudern.

Anmerkungen

Schlussfolgerungen

Als Ergebnis der durchgeführten Arbeiten haben wir eine Möglichkeit aufgezeigt, ein Modell der UAV-Bewegung basierend auf der Winkelgeschwindigkeit zu erstellen. Im Flugexperiment wurde nachgewiesen, dass das erstellte Bewegungsmodell vollständig dem simulierten Objekt entspricht. Basierend auf dem entwickelten Modell wurde ein Programmsteuerungsgesetz erhalten, das die Ausführung des „Fass“ im automatischen Modus ermöglicht. Wir haben auch dafür gesorgt, dass eine korrekte „Rolle“ allein mit Querrudern nicht möglich ist und haben dies auch deutlich demonstriert.

Der nächste Schritt besteht darin, das Steuerungsgesetz durch das Hinzufügen von Rückmeldungen zu verfeinern und das Höhenruder in die Steuerung einzubeziehen. Letzteres erfordert die Erstellung eines Modells der Längsbewegung unseres Flugzeugs. Basierend auf den Ergebnissen der Arbeit wird die nächste Veröffentlichung veröffentlicht.

Nehmen wir an, Sie fahren Fahrrad und plötzlich stößt Sie jemand von der Seite an. Um schnell wieder das Gleichgewicht zu finden und Stürze zu vermeiden, dreht man den Fahrradlenker in Schubrichtung. Radfahrer tun dies reflexartig, aber es ist erstaunlich, dass ein Fahrrad diese Aktion selbstständig ausführen kann. Moderne Fahrräder können selbstständig das Gleichgewicht halten, selbst wenn sie sich unkontrolliert bewegen. Sehen wir uns an, wie dieser Effekt in COMSOL Multiphysics modelliert werden kann.

Was wissen wir über selbstbalancierende Fahrräder?

Ein modernes Fahrrad unterscheidet sich nicht sehr davon sicheres Fahrrad- eines der ersten Designs, das in den 80er Jahren des 19. Jahrhunderts erschien. Mehr als hundert Jahre später versuchen Wissenschaftler immer noch herauszufinden, welche Auswirkungen die Selbstbalancierung eines Fahrrads hat. Mit anderen Worten: Wie bleibt ein außer Kontrolle geratenes Fahrrad im aufrechten Zustand im Gleichgewicht? Viele veröffentlichte Arbeiten widmen sich der Beschreibung der Bewegung eines Fahrrads mithilfe analytischer Gleichungen. Eine der ersten wichtigen Veröffentlichungen zu diesem Thema war ein Artikel von Francis Whipple, in dem er allgemeine nichtlineare Gleichungen für die Dynamik eines Fahrrads herstellte, das von einem Radfahrer gesteuert wurde, ohne seine Hände zu benutzen.

Es ist allgemein anerkannt, dass die Stabilität eines Fahrrads durch zwei Faktoren gewährleistet wird – die Kreiselpräzession des Vorderrads und die stabilisierende Wirkung Längsneigung der Drehachse Räder. Kürzlich veröffentlichte ein Forscherteam aus Delft und Cornell (siehe) eine umfassende Übersicht über die linearisierten Bewegungsgleichungen für das Whipple-Fahrradmodell. Mithilfe ihrer Ergebnisse demonstrierten sie ein selbstbalancierendes Fahrrad. Ihre Forschung zeigt, dass es für dieses Phänomen keine einfache Erklärung gibt. Eine Kombination von Faktoren, darunter gyroskopische und stabilisierende Effekte, Fahrradgeometrie, Geschwindigkeit und Massenverteilung, ermöglichen es einem nicht gelenkten Fahrrad, aufrecht zu bleiben.

Inspiriert durch diese Arbeit haben wir ein dynamisches Modell eines Mehrkörpersystems erstellt, um die selbstausgleichende Bewegung eines Fahrrads zu demonstrieren, das von einem freihändigen Radfahrer gesteuert wird.

Fahrradposition zu unterschiedlichen Zeiten.

Mehrkörper-Fahrradmodell

Um ein sauberes Abrollen der Räder zu gewährleisten und den Radschlupf in drei Richtungen zu begrenzen, benötigen wir drei Randbedingungen.


Modell eines Rades, das die Richtungen zeigt, in denen die Bewegung begrenzt ist.

Es gelten folgende Einschränkungen: Kein Vorwärtsrutsch:

(\frac(d\bold(u))(dt).\bold(e)_(2)=r\frac(d\bold(\theta)_s)(dt))

Kein seitliches Verrutschen:

\frac(d\bold(u))(dt).\bold(e)_(3)=r\frac(d\bold(\theta)_(l))(dt)

Kein Schlupf senkrecht zur Bodenkontaktfläche:

\frac(d\bold(u))(dt).\bold(e)_(4)=0

Dabei sind \bold(e)_(2) , \bold(e)_(3) und \bold(e)_(4) die momentane Richtung (schiefe Achse), die Querrichtung (Rotationsachse) und die Normale zur Kontaktfläche (\bold(e)_(4)=\bold(e)_(2) \times\bold(e)_(3)), jeweils;

\frac(d\bold(u))(dt) – Translationsgeschwindigkeit; r ist der Radius des Rades; \frac(d\bold(\theta)_(s))(dt) – Winkelgeschwindigkeit der Rotation; \frac(d\bold(\theta)_(l))(dt) ist die Winkelschräggeschwindigkeit.

Da es nicht möglich ist, diese Randbedingungen auf die Geschwindigkeit anzuwenden, werden sie zeitlich diskretisiert und wie folgt vorgegeben:

(\bold(u)-\bold(u)_(p)).\bold(e)_(2)=r(\bold(\theta)_(s)-\bold(\theta)_(sp ))

(\bold(u)-\bold(u)_(p)).\bold(e)_(3)=r(\bold(\theta)_(l)-\bold(\theta)_(lp ))

(\bold(u)-\bold(u)_(p)).\bold(e)_(4)=0

wobei \bold(u)_(p), \bold(\theta)_(sp) und \bold(\theta)_(lp) jeweils der Verschiebungsvektor, die Drehung und der Neigungswinkel zum vorherigen Zeitpunkt sind.

Bei diskreten Randbedingungen, die die Schlupffreiheit sicherstellen, wird das Ergebnis der Berechnung der Radposition im vorherigen Zeitschritt verwendet. Die Position des starren Körpers, die Rotation und die momentanen Achsenpositionen im vorherigen Zeitschritt werden mithilfe globaler Gleichungen und eines Knotens gespeichert Vorherige Lösung in einem instationären Löser.

Simulation der Bewegung eines selbstbalancierenden Fahrrads

Für die Analyse haben wir ein Fahrrad mit einem Lenkwinkel von 18° ausgewählt. Die Anfangsgeschwindigkeit des Fahrrades beträgt 4,6 m/s. 1 Sekunde nach Beginn der Bewegung wird für einen sehr kurzen Zeitraum eine Kraft von 500 N auf das Fahrrad ausgeübt. Unter dem Einfluss der Kraft weicht das Fahrrad von einer geraden Flugbahn in eine vorgegebene Richtung ab.

Während der ersten Sekunde bewegt sich das Fahrrad mit konstanter Geschwindigkeit entlang der zunächst vorgegebenen Richtung vorwärts. Die Querkraft bewirkt dann eine Ablenkung. Beachten Sie, dass der Radfahrer seine Hände nicht am Lenker behält und das Gleichgewicht des Fahrrads nicht kontrollieren kann. Was passiert als nächstes? Wir können feststellen, dass sich der Lenker in Sturzrichtung dreht, sobald sich das Fahrrad zu neigen beginnt. Durch die Korrektur der Lenkerposition im Falle eines Sturzes wird das Gleichgewicht des Fahrrads wiederhergestellt.

Das Fahrrad bewegt sich weiter vorwärts und beginnt sich dabei in die entgegengesetzte Richtung zu neigen. Diese Neigung ist kleiner und die Lenkbewegung folgt der Neigung mit einer leichten Verzögerung genau. Diese Links-Rechts-Oszillation hält an und lässt schließlich nach. Das Fahrrad bewegt sich in einer streng vertikalen Position vorwärts und erhöht leicht die Geschwindigkeit. Lenkradvibrationen, Lenkwinkel und Winkelgeschwindigkeit nehmen allmählich ab und klingen ab.

Die Bewegung eines Fahrrads auf einer ebenen Fläche bei Abweichung von einer geraden Linie. Der Pfeil zeigt die Neigung des Fahrrades an.

Die Ergebnisse der Berechnung der Neigungs- und Drehwinkel des Lenkrads (links) und der relativen Winkelgeschwindigkeit (rechts) des Fahrrads.

Durchführung einer Stabilitätsanalyse

So haben wir gelernt, dass ein Fahrrad sich selbst ausbalancieren kann. Die Studie zeigte, dass es unmöglich ist, einen einzigen Parameter herauszuarbeiten, der die Stabilität eines Fahrrads bestimmt. Fahrraddesign, Gewichtsverteilung und Fahrgeschwindigkeit sind Faktoren, die die Stabilität beeinflussen. Um dieses Phänomen besser zu verstehen, haben wir zusätzliche Analysen durchgeführt, um den Einfluss von zwei Parametern zu untersuchen – der Anfangsgeschwindigkeit und der Neigung der Lenkachse. Als Ausgangskonfiguration verwendeten wir das oben beschriebene Fahrradmodell mit einem Lenkerwinkel von 18° und einer Anfangsgeschwindigkeit von 4,6 m/s und führten eine parametrische Analyse des Einflusses dieser beiden Faktoren durch.

Verschiedene Anfangsgeschwindigkeiten

Das Fahrrad kann im Stillstand nicht in einer streng aufrechten Position bleiben. Wir variierten die Bewegungsgeschwindigkeit von 2,6 m/s bis 6,6 m/s in Schritten von 1 m/s, um die Wirkung dieses Parameters zu bewerten. Im Bereich von 2,6–3,6 m/s neigt sich das Fahrrad zu stark und ist instabil. Bei einer Geschwindigkeit von 5,6 m/s tendiert die Neigungsgeschwindigkeit gegen Null, aber der Neigungswinkel selbst nimmt einen Wert ungleich Null an. Obwohl diese Konfiguration stabil ist, bewegt sich das Fahrrad mit einer leichten Neigung im Kreis. Bei 6,6 m/s nehmen Neigung und Lenkwinkel mit der Zeit zu, wodurch die Bewegung instabil wird.

instabil nachhaltig instabil
2,6 m/s 3,6 m/s 4,6 m/s 5,6 m/s 6,6 m/s

Der stabile Fall entspricht einer Geschwindigkeit von 5,6 m/s (links), der instabile Fall entspricht einer Geschwindigkeit von 6,6 m/s (rechts).

Lenkwinkel

Die Lenkung ist für das Selbstbalancieren des Fahrrads sehr wichtig. Wenn das Fahrrad nicht kontrolliert werden kann (z. B. wenn der Lenker festsitzt), kann das Fahrrad die Neigung nicht ausgleichen und stürzt schließlich ab. In diesem Zusammenhang beeinflusst die Drehung der Lenkachse, die den Federweg der Gabel steuert, auch die Selbstbalance des Fahrrads.

Um die Auswirkung der Drehung der Lenkachse auf die Stabilität des Fahrrads zu analysieren, variierten wir die Lenkwinkel von 15° bis 21° in Schritten von 1°. Bei einem Winkel von 15° nehmen Neigung und Lenkwinkel mit der Zeit zu, wodurch diese Konfiguration instabil wird. Das Fahrrad ist von 16° bis 19° stabil und bei größeren Winkeln instabil. Bei Rotationswerten größer als 19° schwanken Nick- und Rotationswinkel und diese Schwingungen nehmen mit der Zeit zu, was zu einem Stabilitätsverlust führt.

In diesem Beitrag haben wir gezeigt, wie man die Bewegung eines unsteuerbaren, selbstbalancierenden Fahrrads mit dem Multibody Dynamics-Modul in COMSOL Multiphysics simuliert. Wir haben gezeigt, wie man Schlupfbeschränkungen für ein starres Rad durch Gleichungen implementiert und diese Beschränkungen dann mit einem Mehrkörper-Fahrradmodell kombiniert. Anschließend analysierten wir die Auswirkungen der Anfangsgeschwindigkeit und der Achsdrehung auf die Stabilität des Fahrrads. Nach der Auswertung dieser Parameter haben wir festgestellt, dass ein Fahrrad in einer Konfiguration stabil bleiben und in einer anderen verlieren kann.

Das Selbstbalancieren eines Fahrrads ist eine Folge mehrerer Faktoren. Durch unsere Analyse und im Einklang mit früheren Untersuchungen haben wir gezeigt, dass die Stabilität eines Fahrrads mit seiner Fähigkeit zusammenhängt, in Richtung Schräglage zu „lenken“.