Echtzeit-Simulation von Antriebsstrang (Motor, Kupplung, Getriebe, Differenziale, Räder)



  • Hallo,
    ich bastel momentan an einer kleinen Test-Simulation (wird evtl. mal ein Spiel draus). Ich simuliere also mittels Physik-Engine ein Fahrzeug, was auch kein Problem darstellt. Nun geht es mir momentan um die realistische Simulation der Antriebskomponenten. Bisher habe ich eine BasisKlasse "Antriebskomponente", von welcher die konkreten Typen wie "Motor", "Kupplung", "Getriebe" abgeleitet sind.
    Jede Antriebskomponente besitzt mindestens einen "Eingangswert" für Drehzahl und Kraft sowie "Ausgangswerte" für Drehzahl und Kraft. Im Prinzip ist das ganze (Vereinfacht) wie folgt verschalten:

    "Ausgangswerte": Motor => Kupplung => Getriebe => Angetriebene Räder
    "Eingangswerte": Angetriebene Räder => Getriebe => Kupplung => Motor

    Mal kurz in Worte gefasst:

    Der Motor bekommt eine Drehzahl von der Kupplung vorgegeben. Ist diese geschlossen (Also 100% Kraftschluss), entspricht die Drehzahl der Drehzahl am Getriebe. Bei einer 1:1 Übersetzung des Getriebes wiederum entspricht diese der Drehzahl der Räder.

    Die Kraft, die von den Rädern Richtung Motor übertragen wird, ignoriere ich jetzt mal.

    Der Motor erzeugt nun eine gewisse Kraft, gibt diese über Kupplung und Getriebe an die Räder weiter. Des Weiteren wird die Drehzahl, welche der Motor gerade im "freien Lauf" erreichen würde, mitgegeben. (Ist jetzt die Kupplung geöffnet, wird von der Kupplung die Drehzahl, welche der Motor vorgibt, wieder 1:1 in Richtung Motor zurückgegeben).

    Ich hoffe, das ganze ist soweit klar . Die entsprechenden Berechnungen werden jeden Frame durchgeführt.

    Nun habe ich die Einschränkung, dass ich der Physik-Engine lediglich die Kraft vorgeben kann, welche an den Rädern anliegen soll. Abrufen kann ich wiederum die Drehzahl.

    Meine Simulation hat nun z.B. den Haken, dass der Motor soviel Kraft erzeugen kann (zumindest in niedrigen Gängen), dass sich das Auto entsprechend schnell beschleunigt und sich die Raddrehzahl und somit auch die Motordrehzahl schneller erhöht als das der Motor bei getretener Kupplung (Also "freier" Lauf) schaffen würde.

    Als Beispiel:

    Zum Zeitpunkt 1 hat der Motor die Drehzahl 2000 upm. Bei getretener Kupplung und Vollgas würde die Drehzahl zu Zeitpunkt 2 3000 upm betragen.
    Ist die Kupplung dagegen geschlossen, geht die Erzeugte Kraft an die Räder. Die Physik-Engine beschleunigt das Auto von 10 KMH zu Zeitpunkt 1 auf 20 KMH zu Zeitpunkt 2. Jetzt hat sich innerhalb der Zeit von ZP1 zu ZP2 auch die Drehzahl des Motors verdoppelt (2000 -> 4000 upm).

    Das ganze wirkt dementsprechend unglaubwürdig.
    Ich kann zwar die Drehzahl, welche der Motor gerade bei getretener Kupplung erreichen würde, als Ausgangswert von Motor bis zu den Rädern mitgeben, mir fehlen aber die Möglichkeiten, das ganze sinnvoll für die Physik-Engine zu beschränken.

    Jetzt bin ich etwas am zweifeln, ob ich mit meinem Ansatz so überhaupt richtig liege? Oder sollte ich das ganze irgendwie anders anpacken?

    Gruß



  • Naja, wenn die Übertragung des Getriebes 1 ist, dann stimmt das Ergebnis so (dann hast du nämlich eigentlich gar kein Getriebe, sondern der Motor treibt die Räder direkt an). Aber wenn Du ein "echtes" Getriebe einbaust, erhöht sich die Motordrehzahl natürlich nicht so stark.

    Das, was Du Ausgangswerte und Eingangswerte nennst, sieht übrigens eher nach was anderem aus. (Keine Ahnung, vielleicht sollte man das "Wirkungsketten" nennen?) Aber ein Eingangswert des Motors ist z.B. die Gaspedalstellung. Einer der Kupplung die Motordrehzahl und so weiter.



  • Das mit der Übersetzung von 1:1 war ja nur ein Beispiel...
    Klar könnte man das anders formulieren, im Code heißts auch anders, ich dachte nur, dass es dann evtl. etwas leichter zu verstehen ist 🙂



  • Klingt nach nem Vorzeichenvehler. Entweder bei der Masse des Autos oder bei einer deiner Kaftkopplungen. Oder du multiplizierst vielleicht im Getriebe die Motorleistung unzulässigerweise mit der Anzahl der Räder.


Anmelden zum Antworten