OmegaSim Wiki

OmegaSim Wiki – die Idee dazu stammt von Gnen54. Hier stehen die offenen Artikel von Nutzer Luuke42 unter der Lizenz CC BY-SA 4.0.

Fahrverhalten

Stand dieses Artikels: OmegaSim 1.2.9 vom 26.10.2026 · Firmware des Autos: nicht bekannt (OmegaSim liest die Firmware-Version nicht aus)
Dieser Text wurde mithilfe von KI erstellt (Claude) und ist nicht in jedem Punkt von Menschen geprüft. Fehler bitte direkt verbessern oder auf der Diskussionsseite melden, siehe Mitmachen. Die öffentliche Fassung auf luuke42.github.io/omegasim kann älter sein als der hier beschriebene Stand.

Die Einstellungsseite Fahrgefühl in OmegaSim

Das Fahrverhalten von OmegaSim ist die Art, wie die App aus den Eingaben am Controller (Gas, Bremse, Lenkung) die zwei Steuerwerte berechnet, die per Bluetooth Low Energy an ein Carrera HYBRID-Auto gehen: einen Gaswert und einen Lenkwert. Dazwischen liegt ein vollständiges Fahrzeugmodell mit Motor, Getriebe, Reibkreis, Gewichtsverlagerung, Reifen- und Bremsentemperatur, einem Einspurmodell und, im Fahrgefühl Pacejka, einer Reifenkennlinie nach der Magic Formula. Das echte Modellauto rutscht, bremst und lenkt dabei mit seiner eigenen Firmware; was das Modell der App berechnet, wirkt am Auto ausschließlich über diese zwei Bytes. Abgestimmt wird das Fahrverhalten über neun fertige Sätze von Reglerwerten, die Fahrgefühle (in der App auch Voreinstellungen oder Presets genannt), und über rund 45 einzelne Regler.

Auf einen Blick

Merkmal Wert
Menüpfad Optionen → Fahrgefühl; Kurzwahl in FAHREN, in der Garage und am Cockpit-Knopf
Fahrgefühle Arcade, Sim+, Pacejka (in FAHREN, Garage, Cockpit); Pro, GT3, F1, Realismus GT3, Omega, RC (nur in den Optionen)
Vorgabe nach Neuinstallation die Werte im Markup entsprechen dem Fahrgefühl Pacejka (Steuerungsmodus Pacejka, sonst Pro-Werte)
Steuerungsmodi Physik, Pacejka, RC („Aus“)
Mechanischer Lenkanschlag 45 Grad, Konstante STEER_MAX_DEG
Sendetakt 45 ms (CONTROL_SEND_INTERVAL_MS), also gut 22 Pakete je Sekunde
Status Physik stabil; Pacejka experimentell; RC in Arbeit (WIP); Fahrgefühl je Spieler seit 1.2.4
Seit Version Physikmodell seit den 0.4-Fassungen, Pacejka seit 0.8, Omega seit 1.0.36, Sim+ seit 0.10.5, RC seit 1.0.22
Quelldateien src/40-physics.js, src/50-drive.js, src/98-presets.js, src/49-spieler.js, src/30-input.js, src/20-protocol.js

Grundlagen

Dieser Abschnitt erklärt die Begriffe, die weiter unten gebraucht werden. Wer sie kennt, kann ihn überspringen; Fachbegriffe stehen auch im Glossar.

Was ein Physikmodell ist

Ein Physikmodell ist ein Programmteil, das ein reales Objekt mit Zahlen nachbildet. OmegaSim führt für jedes gesteuerte Auto eine solche Nachbildung: eine Geschwindigkeit, eine Motordrehzahl, einen eingelegten Gang, vier Reifentemperaturen und so weiter. Diese Zahlen heißen Zustand. Das Modell kennt Regeln, wie sich der Zustand ändert, zum Beispiel „Vollgas im 2. Gang erhöht die Geschwindigkeit um so und so viel je Sekunde“.

Was ein Simulationsschritt ist

Ein Computer kann nicht stetig rechnen, sondern nur in kleinen Zeitstücken. Ein Simulationsschritt (auch Takt) rechnet den Zustand um eine kurze Zeitspanne dt weiter. In OmegaSim läuft der Schritt im Sendetakt von 45 ms. Das einfachste Verfahren dafür ist das Euler-Verfahren:

neuer Wert = alter Wert + Änderungsrate × dt
Beispiel: Tempo 2,0 + Beschleunigung 0,5 je s × 0,045 s = 2,0225

Bei sehr schnellen Vorgängen kann dieses einfache Verfahren „überschießen“ und instabil werden. Das Einspurmodell verwendet deshalb ein halbimplizites Verfahren, bei dem die neuen Werte in der Gleichung schon mitstehen (siehe unten).

Drehmoment und Übersetzung

Das Drehmoment ist die Drehkraft des Motors. Ein Rennmotor hat bei niedriger Drehzahl wenig und bei mittlerer bis hoher Drehzahl am meisten Drehmoment; diese Abhängigkeit heißt Drehmomentkurve. Die Übersetzung eines Gangs sagt, wie oft sich der Motor dreht, während sich das Rad einmal dreht. Ein kurzer Gang (große Übersetzung, z. B. 3,75) bringt viel Kraft ans Rad, aber wenig Endgeschwindigkeit; ein langer Gang (z. B. 0,88) umgekehrt. Daraus folgt die Aufgabe des Schaltens: den Motor in dem Drehzahlbereich halten, in dem er viel Drehmoment hat.

Reibkreis und Schlupf

Ein Reifen kann nur eine begrenzte Gesamtkraft auf die Straße bringen. Diese Kraft lässt sich aufteilen: in Längskraft (Beschleunigen oder Bremsen) und Querkraft (Kurvenfahrt). Zeichnet man beide als Achsen, liegt die Grenze ungefähr auf einem Kreis, dem Reibkreis. Wer in der Kurve schon viel Querkraft braucht, hat für Gas oder Bremse nur noch den Rest:

Längsanteil = √(1 − Queranteil²)
Beispiel: Queranteil 0,6 → Längsanteil √(1 − 0,36) = 0,8

Schlupf ist der Unterschied zwischen der Bewegung des Reifens und der Bewegung, die er ohne Rutschen hätte. Seitlich heißt der Winkel zwischen Fahrtrichtung des Rads und Ausrichtung des Rads Schräglaufwinkel. Ein Reifen baut Kraft über Schlupf auf: erst fast proportional, dann flacher, und hinter einem Scheitel sogar wieder weniger.

Reifenkennlinie und Magic Formula

Die Reifenkennlinie ist die Kurve „Seitenkraft über Schräglaufwinkel“. Die Magic Formula von Hans B. Pacejka (Pacejka und Bakker, 1992) ist eine bekannte Formel, die diese Kurve mit vier Zahlen nachbildet:

y(u) = sin( C · atan( B·u − E·(B·u − atan(B·u)) ) )

Anschaulich: Bis zum Scheitel bringt mehr Einschlag mehr Kraft. Hinter dem Scheitel bringt mehr Einschlag nichts mehr oder sogar weniger, das Auto schiebt geradeaus (Untersteuern an der Vorderachse) oder das Heck bricht aus (Übersteuern an der Hinterachse).

Gewichtsverlagerung

Beim Bremsen verlagert sich Gewicht nach vorn, beim Beschleunigen nach hinten. Eine stärker belastete Achse kann mehr Kraft übertragen, allerdings nicht im selben Verhältnis (der Reifen ist „lastempfindlich“). Daraus entsteht das Trail-Braking: Leichtes Bremsen beim Einlenken belastet die Vorderräder und macht die Lenkung kurz besser, starkes Bremsen braucht den Reibkreis dagegen auf.

Wie aus einer Zahl ein Funkbefehl wird

Das Auto versteht kein „Tempo 2,0“, sondern nur ein Datenpaket aus 20 Bytes. Ein Byte hat 8 Bits und kann 256 Werte darstellen, 0 bis 255, hexadezimal geschrieben 0x00 bis 0xFF (siehe Hexadezimalsystem). Beispiel: 0x51 = 5·16 + 1 = 81 dezimal = 01010001 binär. Für Lenkung und Gas braucht man auch negative Zahlen. Dafür gibt es das Zweierkomplement: −1 wird als 255 (0xFF) geschrieben, −63 als 193 (0xC1), +127 als 127 (0x7F). Am Ende jedes Pakets steht eine Prüfsumme (CRC-8), an der das Auto erkennt, ob das Paket unbeschädigt angekommen ist. Wie die App aus dem Modell genau diese Bytes macht, steht im Abschnitt Vom Modell zum Funkbefehl; das Paket selbst beschreibt die Seite Carrera HYBRID.

Bedienung

Ein Fahrgefühl wählen

  1. FAHREN öffnen und die Kachel Fahrgefühl antippen, oder in der Garage beim gesteuerten Auto die Zeile „Fahrgefühl“ benutzen. Dort stehen Arcade, Sim+ und Pacejka.
  2. Für die übrigen sechs Sätze Optionen → Fahrgefühl → Voreinstellungen öffnen. Die Reihenfolge dort ist Arcade, Sim+, Pacejka, Pro, GT3, F1, Realismus GT3, Omega, RC.
  3. Ein Tipp setzt alle Regler des Satzes auf einmal. Die Statuszeile meldet „Name: n Regler gesetzt“; fehlende Regler werden dort genannt.
  4. Im Cockpit schaltet der Fahrmodus-Knopf zwischen Arcade, Sim+ und Pacejka weiter, und zwar ab dem gerade eingestellten Satz. Während einer Challenge ist der Knopf gesperrt.
  5. Unter den Knöpfen steht die Beschreibung des aktiven Satzes. Weicht ein einziger Regler von allen Sätzen ab, steht dort „Eigene Abstimmung“.

Eine eigene Abstimmung sichern und weitergeben

  1. Regler unter Optionen → Fahrgefühl einstellen.
  2. Unter „Abstimmung ablegen“ einen Namen eintragen und Ablegen tippen (Speicher chc.presets.v1 auf dem Gerät). Dieselbe Ablage gibt es in der Garage.
  3. Zum Weitergeben In Text tippen: das Textfeld enthält dann alle Regler als JSON. Den Text kopieren und auf einem anderen Gerät einfügen, dann Übernehmen. Werte außerhalb eines Reglerbereichs werden abgelehnt, unbekannte Regler werden übergangen und gemeldet.
  4. Standard wiederherstellen in der Garage setzt alle Regler auf die Werte zurück, mit denen sie ausgeliefert werden.

Fahrgefühl je Spieler

  1. In der Garage einem Auto die Rolle Spieler 2 oder Spieler 3 geben.
  2. In dessen Zeile „Fahrgefühl“ zwischen „wie Spieler 1“ (Vorgabe), Arcade, Sim+ und Pacejka wählen.
  3. Spieler 1 stellt weiterhin die Regler unter Optionen ein. Sie gelten für alle Spieler ohne eigenes Fahrgefühl.

Rückwärts fahren

  1. Mit Automatik: Quadrat (Xbox: X) legt unterhalb von 10 km/h den Rückwärtsgang ein, Kreis (B) holt ihn heraus.
  2. Ohne Automatik: unter dem 1. Gang liegt der Leerlauf, darunter im Stand der Rückwärtsgang.
  3. Wahlweise (experimentell): Rückwärtsgang: Gas und Bremse zusammen einschalten; dann im Stand beide Pedale zugleich drücken.

Einstellungen

Alle Regler liegen unter Optionen → Fahrgefühl, wenn nicht anders angegeben. „Standard“ ist der Wert im ausgelieferten Markup (der beim ersten Start gilt). Die Spalte „Wirkung“ beschreibt, was der Code mit dem Wert macht.

Name in der App Bereich Standard Wirkung (aus dem Code) Interne ID → Modellgröße
Voreinstellungen 9 Knöpfe – setzt einen ganzen Satz von Reglern, siehe Tabelle preset-buttons
Steuerungsmodus (ausgeblendet seit 1.0.22) Physik, Pacejka, RC Pacejka wählt den Rechenweg; hängt seitdem am Fahrgefühl phys-mode → physicsEnabled, config.pacejka
Übersteuern (Pacejka), unter Optionen → Allgemein an/aus aus erlaubt dem Pacejka-Modus, von sich aus in die Kurve einzulenken setting-pac-ueber → pacejkaUebersteuern
Haftgrenze (Pacejka, ausgeblendet) 40 bis 120 % 70 % Querausnutzung, bei der der Reifen am Scheitel ist setting-pac-grenze → pacejkaGrenze
Layout 5 Fahrzeuge Neutral Achslast vorn, Radstand, Gierträgheit; von Voreinstellungen nicht berührt setting-layout
Getriebe GT3, F1, 412P GT3 Gangzahl, Übersetzungen, Schaltdrehzahlen, Schaltzeit setting-gearbox
Gasfaktor 20 bis 200 % 180 % Faktor auf das ausgehende Gasbyte (nur vorwärts, nicht unter Autopilot) setting-topspeed → topSpeedScale
Reifengrip 0 bis 1 1,0 Tempoabhängige Lenkbegrenzung: speedSteerReduction = 0,20 + 0,30·(1 − Grip) setting-grip
Bremswirkung 0,3 bis 5,0 1,4 multipliziert die Grundverzögerung 0,72 setting-brakepower → brakeDecelBase
Automatikgetriebe an/aus an automatisches Hoch- und Herunterschalten setting-autoshift → autoShift
Rückwärtsgang: Gas und Bremse zusammen an/aus aus Rückwärtsgang wie am Original-Controller (experimentell) setting-gasbrake-reverse
Rückwärtsgang: Druckschwelle 10 bis 100 % 50 % ab diesem Pedalweg zählen beide als gedrückt setting-gasbrake-reverse-druck
Rückwärtsgang: Haltezeit 0 bis 500 ms 100 ms Zeit zum Einlegen und zum Zurückschalten setting-gasbrake-reverse-ms
Rückwärtsgang: Geschwindigkeitsgrenze 0 bis 40 km/h 10 km/h darüber wird nicht eingelegt setting-gasbrake-reverse-kmh
Rückwärtsgang: Ausrollen 0 bis 3000 ms 600 ms Ausrollzeit, Zeitkonstante = Wert / 3 setting-gasbrake-reverse-aus
Höchstgeschwindigkeit (km/h) 2 bis 8 4,0 Modell-Höchsttempo; neu kalibriert bei jeder Änderung setting-topspeed-kmh → topSpeedKmh
0 → 100 km/h (s) 1,5 bis 8 2,6 Kalibrieranker der Beschleunigung, Anzeige in % von 3,2 s setting-zero-to-top → launchAnchorTimeS
Ausrollen (Faktor) 0,2 bis 2 0,6 Faktor auf Roll-, Motor- und Luftwiderstand beim Ausrollen setting-coast-drag → coastDragPerS
Tankgewicht 0 bis 100 % 100 % voller Tank bis 30 % träger (siehe Verschleiß) setting-fuelweight → fuelWeightEffect
Reifen: Temperatur & Verschleiß 0 bis 200 % 100 % Reifenmodell, siehe Verschleiß setting-tyres → tyreEffect
Mischungsunterschied (WIP) 0 bis 300 % 150 % Abstand der Mischungen zum Mittelreifen setting-tyre-mix
Reifenwärmer an/aus aus Start und Wechsel auf 85 °C statt 20 °C setting-tyre-blankets
Jedes Rad einzeln an/aus an vier Radlasten statt einer setting-tyre-asym → tyreAsymEffect
Reifendruck (bar) 1,4 bis 2,2 1,8 neutral bei 1,8 setting-tyre-pressure
Bremstemperatur und Fading an/aus an siehe Verschleiß#Bremsen setting-brake-fade
Stärke des Fadings 0 bis 200 % 150 % über 100 % nur schnelleres Aufheizen setting-brake-fade-strength → brakeFadeEffect
Windschatten in Kurven (experimentell) an/aus aus bis 18 % weniger Kurvengrip hinter einem Auto setting-dirtyair
Stärke des Windschattens 0 bis 200 % 100 % Faktor auf die 18 % setting-dirtyair-strength → dirtyAirEffect
Lenkansprechen 0,5 bis 4,0 (Anzeige 25 bis 200 %) 3,0 (150 %) Trimmung des Zielwinkels; Anzeige = Wert / 2,0 phys-steerresp → steerResponse
Lenkkennlinie (WIP) 0,6 bis 3,0 2,45 Exponent der Stick-Kennlinie setting-steer-expo → steerExpo
Voller Einschlag bei (experimentell) 30 bis 100 % 90 % Stickweg, bei dem der volle Einschlag erreicht ist setting-steer-voll → steerVoll
Lenkkraft unter Gas (WIP) 0 bis 100 % 75 % mildert die Lenkabschwächung beim Beschleunigen setting-throttle-steer-relief → throttleSteerRelief
Lenkdämpfung (WIP) 0 bis 500 ms 0 ms (sofort) Zeit von Mitte bis zum möglichen Anschlag phys-steerdamp → steerDaempfungMs
Bremsen nimmt Lenkung 0 bis 150 % 95 % Anteil der Bremse am Reibkreis vorn setting-brake-steal → brakeUseGain
Bremsaufbau 0,05 bis 0,60 s 0,12 s Zeitkonstante, mit der die Bremskraft am Reifen ansteht phys-brake-tau → useTauBrems
Lenkwinkel-Kalibrierung 100 bis 300 % 250 % Verstärkung hinter dem Reibkreis, gedeckelt bei 45 Grad setting-steer-calib → steerCalib
Beschleunigungsfaktor 0,4 bis 2,0 1,0 Faktor auf die kalibrierte Antriebskraft phys-accel → accelerationFactor
Tempo rückwärts 10 bis 100 % 50 % Anteil des Rückwärts-Höchsttempos (nicht unter Autopilot) phys-rueck-tempo → reverseTempo
Gaskennlinie (WIP) 0,6 bis 3,0 2,45 Exponent auf den Gasweg setting-throttle-gamma → throttleGamma
Bremskennlinie (WIP) 0,6 bis 3,0 2,45 Exponent auf den Bremsweg setting-brake-gamma → brakeGamma
Anfahrschub (WIP) 0 bis 35 % 5 % kleinstes Gasbyte beim Anfahren setting-minmove → minMoveThrottle
Bremsbalance 50 bis 80 % vorn 62 % Anteil der Bremskraft vorn; 62 % ist neutral setting-brakebias → brakeBias
Gewichtsverlagerung (WIP) 15 bis 50 % 30 % Lastanteil, der bei 1 g die Achse wechselt phys-transfer-k → transferK
Trägheit der Gewichtsverlagerung (WIP) 40 bis 250 ms 80 ms Zeitkonstante der Karosseriebewegung phys-load-tau → loadTau
Fahrhilfe (experimentell), Optionen → Fahrgefühl aus, Querlage, voll aus lässt das Auto die Spur halten oder selbst lenken driver-assist
Leistung über Akkulaufzeit konstant halten (WIP), Optionen → Allgemein an/aus aus drosselt bei vollem Akku setting-battery-comp
Referenz-Akkustand 20 bis 100 % 50 % Bezugswert der Drosselung setting-battery-ref

Hinweis: Die ⓘ-Texte einiger Regler nennen ältere Vorgaben (z. B. 83 ms Lenkdämpfung, Bremskennlinie 1,3). Gültig sind die Werte in dieser Tabelle, die aus dem Code und dem Markup stammen. Mit 1.2.11 wurden mehrere Erklärtexte an das Verhalten angeglichen, darunter die der Fahrgefühle Arcade, Pro, Pacejka und Omega.

Funktionsweise

Überblick: ein Takt von der Eingabe zum Paket

Alle 45 ms läuft der Herzschlag controlHeartbeat() (src/20-protocol.js). In ihm passiert für Spieler 1 der Reihe nach:

  1. Das Gamepad wird frisch gelesen (nur im Cockpit), die Ortung auf der Bahn wird nachgeführt.
  2. physicsStep() (src/50-drive.js) formt die Pedale mit den Kennlinien, zieht Tank, Schaden, Abseits, Frühstrafe und Autopilot ab und ruft physEngine.update().
  3. Das Modell liefert motorPWM (Gas, −1 bis 1) und servoAngle (Lenkung, −1 bis 1).
  4. sendControlValue() multipliziert das Gas mit dem Gasfaktor und baut das Paket.
  5. Danach senden Spieler 2 und 3 und die NPCs im selben Takt, und erst dann wird das Cockpit gezeichnet.

Kennlinien für Gas, Bremse und Lenkung

Alle drei Kennlinien benutzen dieselbe Formel (kennlinie() in src/40-physics.js):

aus = sign(x) · |x|^g

Die Enden liegen für jeden Exponenten fest: 0 bleibt 0, 1 bleibt 1. Ein Exponent über 1 macht den Anfangsbereich feiner. Beispiel mit 2,45: ein Viertel Gasweg ergibt 0,25^2,45 ≈ 0,034, also gut 3 % Gas.

Die Bremse ist in der App kein eigener Kanal: Gas und Bremse laufen als eine vorzeichenbehaftete Zahl throttleY (positiv Gas, negativ Bremse) und werden erst in physicsStep() getrennt.

Der Lenkweg mit „Voller Einschlag bei“

Ist „Voller Einschlag bei“ gesetzt (Standard 0,9), gilt lenkVollAnteil():

a      = min(1, |x| / voll)
s      = sign(x) · a^e
Wunsch = clamp(s · Lenkansprechen / 3,0 ;  −1 … 1) · Lenkgrenze

Ist der Wert nicht gesetzt (alter Weg), gilt Wunsch = clamp(x^e · Lenkgrenze · Lenkansprechen).

Tempoabhängige Lenkgrenze

Lenkgrenze = min(1, 1 − v_Anteil · speedSteerReduction · Gangindex/(Gangzahl − 1))

Im 1. Gang ist der Faktor 0, die Grenze also 1. Erst in höheren Gängen wird der erlaubte Einschlag bei hohem Tempo kleiner. speedSteerReduction folgt aus dem Regler Reifengrip (0,20 + 0,30·(1 − Grip)). Arcade schaltet diese Grenze ab (lenkKopplungAus).

Motor und Drehmomentkurve

Das Modell rechnet die Geschwindigkeit intern in „Modell-km/h“ von 0 bis topSpeedKmh = 4,0. Für die Anzeige gibt es zwei Maßstäbe (src/30-input.js):

Die Drehmomentkurve ist eine Tabelle mit linearer Interpolation (TORQUE_CURVE, torqueAt()):

Drehzahl (1/min) 1500 2500 3500 4500 5500 6200 7000 8000 9000
Drehmoment (1 = Spitze) 0,42 0,52 0,62 0,72 0,88 1,00 0,985 0,955 0,90

Leerlauf 1500/min, Begrenzer 9000/min (IDLE_RPM, REDLINE_RPM), weicher Begrenzer über 400/min (LIMITER_SOFT_RPM).

Die Drehzahl folgt im Gang aus der Geschwindigkeit:

Drehzahl = rpmScale · Übersetzung · (|v| / topSpeedKmh)
rpmScale = 9000 / max(Übersetzung · topFrac)   (GT3: 9000 / 0,9525 ≈ 9449)

Die Antriebsbeschleunigung (thrustAt()):

a_Antrieb = Gas · M(n) · Begrenzer · (Übersetzung / 0,88) · A · Anfahrfaktor
A         = (topSpeedKmh / 3,0) · Beschleunigungsfaktor · accelCalibration
Begrenzer = 1 über 9000/min abfallend auf 0 bei 9400/min
Anfahrfaktor = 0,95 + 0,05 · min(1, |v| / 0,6)

Der Regler „0 → 100 km/h“ ist damit ein Kalibrieranker und keine exakte Zeitangabe: der Code vermerkt, dass die vereinfachte Kalibrierrechnung und der echte Takt bis zu 46 % auseinanderliegen.

Widerstände (resistAt()), mit u = |v| / topSpeedKmh:

unter Last:  A · (0,08·u + 0,25·u²)
Ausrollen:   Ausrollfaktor · (0,030 + 0,065·(Übersetzung/0,88)²·u + 0,155·u²)

Beim Ausrollen ist der Motorbremsanteil im 1. Gang (3,75/0,88)² ≈ 18-mal stärker als im 6. Gang. Unter 10 km/h (Anzeige) ohne Gas wird das Gasbyte auf 0 gesetzt und das Tempo mit 0,45 Modell-km/h je s auf null gebracht, damit das Auto nicht im Bereich zuckt, in dem das Byte zu klein zum Losbrechen ist.

Bremsen (vorwärts):

a_Bremse = −( Widerstand + 0,72·Bremswirkung · Bremse · Längsgrip · Untergrund · Eintauchen · Reifengrip · (1 − Fading) / Massefaktor )

Über 80 % Bremse und über 15 % des Höchsttempos meldet das Modell „ABS“ (Anzeige und kurzes Rütteln); das Byte selbst wird nicht moduliert.

Getriebe und Schaltlogik

Getriebe Gänge Übersetzungen (topFrac) Hochschalten Herunterschalten Schaltzeit
GT3, 6-Gang sequenziell (Vorgabe) 6 3,75 (0,2523) · 2,38 (0,40) · 1,72 (0,5538) · 1,34 (0,7108) · 1,08 (0,88) · 0,88 (1,0) 8800/min 4200/min 120 ms
Formel 1, 8-Gang 8 3,07 (0,31) · 2,26 (0,42) · 1,83 (0,52) · 1,51 (0,63) · 1,28 (0,74) · 1,13 (0,84) · 1,03 (0,92) · 0,88 (1,0) 8850/min 5600/min 40 ms, wirksam 45 ms
Ferrari 412P, 5-Gang Transaxle 5 3,17 (0,30) · 2,11 (0,45) · 1,53 (0,62) · 1,17 (0,81) · 0,88 (1,0) 8600/min 3400/min 350 ms

topFrac ist der Anteil der Höchstgeschwindigkeit, an dem der Gang endet. Bei allen Gängen außer dem letzten ist Übersetzung · topFrac etwa 0,9507 (GEAR_PRODUCT); der letzte Gang ist luftwiderstandsbegrenzt. Die Schaltzeit wird nie kürzer als ein Sendetakt (shiftMs = max(45, Angabe)), sonst fiele sie zwischen zwei Pakete.

Die Automatik (update()) prüft in jedem Takt:

Zustand Bedingung Folge
Leerlauf, Automatik an Gas > 2 % 1. Gang, vorwärts
Gang n, nicht am Schalten Drehzahl ≥ Hochschaltdrehzahl und Gas > 5 % und n nicht der letzte Gang n+1, Schaltpause beginnt
Gang n > 1, nicht am Schalten Drehzahl ≤ Herunterschaltdrehzahl Gang n−1
am Schalten Restzeit shiftLeft läuft über dt ab während der Pause kein Antrieb, nur 25 % des Widerstands (shiftDragFactor)

Die Herunterschaltschwelle ist so gewählt, dass nach einem Hochschalten die Drehzahl darüber bleibt: im GT3 fällt sie beim Wechsel 1→2 von 8800 auf 8800·2,38/3,75 ≈ 5585/min, also 1385/min über 4200.

Von Hand (Automatik aus) gilt die Kette R ← N ← 1 ← 2 … Der Rückwärtsgang lässt sich nur im Stand einlegen (unter 0,05 Modell-km/h). Mit Automatik legt Quadrat den Rückwärtsgang ein, wenn das Tempo unter 0,034 · topSpeedKmh liegt (10 km/h Anzeige); sonst meldet die App „ZU SCHNELL FÜR R“.

Rückwärts zieht der Antrieb mit Übersetzung 3,00; die Grenze ist 0,11 · topSpeedKmh · Tempo rückwärts. Das Gasbyte rückwärts ist auf −0,5 begrenzt (reverseOutputSpan), weil nur diese Tiefe am echten Auto als sicher bestätigt ist.

Rückwärtsgang mit Gas und Bremse zusammen

Zustandsmaschine in gasBremseRueckwaertsPruefen() (src/50-drive.js), je Spieler und je Eingabequelle (Gamepad, Tastatur) mit eigener Uhr:

Zustand Bedingung nächster Zustand
vorwärts Option an, Automatik an, nicht RC, kein Autopilot, Tempo < Grenze, beide Pedale ≥ Druckschwelle für die Haltezeit Rückwärtsgang (Meldung, Rütteln, Ton)
Rückwärtsgang beide Pedale gedrückt Gas geht nach hinten (Rückgabewert = Gasweg)
Rückwärtsgang nur ein Pedal kein Antrieb, die Bremse bremst
Rückwärtsgang alle Pedale aller Quellen < 10 % für die Haltezeit Ausrollen: Tempo · e^(−dt/(Ausrollzeit/3))
Ausrollen Tempo < 0,5 km/h 1. Gang (vorwärts)

Reibkreis und Lenkung

Die Querausnutzung des Reibkreises:

latUse   = min(1, |Lenkung| · (|v| / topSpeedKmh) · 1,8)
gripLong = √(1 − latUse²)

Der Faktor 1,8 (corneringLoad) sorgt dafür, dass schon deutliches Lenken bei hohem Tempo einen großen Teil des Budgets verbraucht. gripLong begrenzt Antrieb und Bremse.

Die Lenkfähigkeit der Vorderachse heißt im Code steerGrip. Es gibt zwei Rechenwege:

Einfacher Reibkreis (Arcade, RC, Omega, eigene Abstimmungen):

steerGrip = ( max(0,12·(1 − nass), min(1, √(frontCap² − frontUse²))) + TrailBonus ) · Reifengrip
frontUse  = Bremsanteil · brakeUseGain · (Bremsbalance/0,62) · Tempoanteil · wf

Lenkung aus der Gewichtsverlagerung (seit 1.1.3 für Pro, Sim+, Pacejka, GT3, F1, Realismus GT3):

uF   = Last vorn / statische Last vorn
uFl  = 1 + (uF − 1) · 0,66 · Tempoanteil        (nur beim Bremsen, sonst 1)
cap  = uFl^(1 − 0,15)
use  = Bremsanteil · brakeUseGain · (Bremsbalance / statische Last vorn) · Tempoanteil
Ziel = max(0,12·(1 − nass), min(1,12, √(cap² − use²)) · Gasfaktor) · Layout · Nässe · Windschatten · Reifengrip

Das Ergebnis läuft durch einen Tiefpass mit 0,15 s (lenkGlattTau). Der Gasfaktor ist die stetige Lenkentlastung unter Gas:

Gasfaktor = max(0,5 ; 1 − 0,10 · (1 − Lenkkraft unter Gas)/0,25 · g^1,74)

mit g = Längsausnutzung beim Beschleunigen. Bei Reglerstand 75 % ergibt Vollgas 0,90 und Halbgas 0,97. Pacejka rechnet diesen Faktor im eigenen Schritt.

Gewichtsverlagerung

Last_vorn += ((statisch − Anforderung · transferK) − Last_vorn) · (1 − e^(−dt/loadTau))
longUse   += (Anforderung − longUse) · (1 − e^(−dt/τ))

Aus Längs- und Querlast entstehen vier Radlasten (vorne links, vorne rechts, hinten links, hinten rechts), die Reifentemperatur und Verschleiß je Rad treiben; eine Rechtskurve belastet die linken Räder.

Lenkdämpfung und Ausgabe

Der gedämpfte Lenkwert folgt dem Wunsch mit einer Ratenbegrenzung (nicht mit einer Glättung):

maxSchritt = dt · 1000 / Lenkdämpfung_ms · Weg

Bei 0 ms (Standard) ist der Schritt unbegrenzt, die Lenkung springt also sofort. Wählt man ein Layout, schlägt der Code einen Wert aus der Gierträgheit vor (steerDaempfungFor()): round(1000 / (clamp(6·2000/Iz ; 4 … 9) · 2)), das sind 83 ms neutral, 104 ms Frontmotor-GT3, 75 ms Mittelmotor, 92 ms Heckmotor und 56 ms Formel 1. Der Regler bleibt aber maßgeblich.

Am Ende (neuer Weg):

servoAngle = clamp( gedämpft · min(1, Lenkkalibrierung · Aquaplaning · steerGripRef) · (steerGrip/steerGripRef) + Zug ; −1 … 1 )

Mehr als ±1 geht nicht: das ist der volle mechanische Anschlag von 45 Grad. Ein größerer Wert käme im vorzeichenbehafteten Byte als Einschlag in die Gegenrichtung an.

Das Einspurmodell

Ein Einspurmodell fasst die beiden Räder einer Achse zu einem zusammen und beschreibt, wie sich das Auto um die Hochachse dreht (Gierrate r) und wie schräg es zur Fahrtrichtung steht (Schwimmwinkel β). In OmegaSim ist es ein Instrument: es speist Anzeigen im Cockpit, stellt aber nie die Lenkung (yawStep()).

m·v·(β' + r) = Fv + Fh
Iz·r'        = Fv·lv − Fh·lh
Fv = −Cv·(β + lv·r/v − δ)        Fh = −Ch·(β − lh·r/v)
Cv = 140000 · f^0,85             Ch = 140000 · (1 − f)^0,85
lv = L·(1 − f)                   lh = L·f

Gelöst wird halbimplizit: (I − dt·A) · x_neu = x_alt + dt·B·δ, ein 2×2-Gleichungssystem je Takt. Unter 0,5 m/s steht das Modell still. Daraus folgen:

Eigenlenkgradient  kU = m·f/Cv − m·(1−f)/Ch = (m/C)·(f^0,15 − (1−f)^0,15)
stationäre Gierrate r_s = δ · v / (L + kU·v²)
Layout Last vorn Radstand Iz (kg·m²) kU (s²/m) Verhalten
Neutral, kalibriert (Vorgabe) 0,50 2,60 m 2000 0 neutral
GT3, Frontmotor (BMW M4 GT3) 0,50 2,85 m 2500 0 neutral, träger
GT3, Mittelmotor (Ferrari 296 GT3) 0,44 2,60 m 1800 −3,0·10⁻⁴ leicht übersteuernd
GT3, Heckmotor (Porsche 911 GT3 R) 0,39 2,50 m 2200 −5,6·10⁻⁴ übersteuernd
Formel-1-Monoposto 0,45 3,60 m 1000 −2,5·10⁻⁴ leicht übersteuernd, flink

Die Layoutwerte sind laut Code Schätzungen aus der Fahrzeugklasse. Der Betrag der berechneten Querbeschleunigung ist nicht aussagekräftig (45 Grad Lenkbereich eines Modellautos bei Tempi eines echten ergeben über 20 g); brauchbar ist nur das Verhältnis aus Ist- und stationärer Gierrate. Der G-Plot zeigt deshalb die Querausnutzung latUse. Auf die Lenkung wirkt das Layout nur über einen kleinen linearen Faktor 1 − 0,15·(1 − f/0,5) auf die Vorderachskapazität.

Pacejka-Modus

Im Steuerungsmodus Pacejka (pacejkaStep()) bekommt die Vorderachse und, wenn „Übersteuern (Pacejka)“ an ist, die Hinterachse eine Haftgrenze nach der Magic Formula. Der Schritt läuft nach der normalen Lenkrechnung und formt nur den fertigen Lenkbefehl. Unterhalb der Grenze ändert sich nichts.

Die Formel ist normiert: u = 1 ist der Scheitel und y(1) = 1. Dafür wird B einmal so gesucht, dass C · atan(B − E·(B − atan B)) = π/2 gilt (pacB(), 60 Halbierungen). Die Höhe D ist damit fest 1; die tatsächliche Grenze steckt in der Haftgrenze.

Größe Wert im Code Bedeutung
C 1,3 (pacejkaC) Formfaktor für Seitenkraft
E −0,5 (pacejkaE) ausgeprägter Scheitel
B ≈ 2,1355 (gerechnet) Scheitel genau bei u = 1
D 1 (normiert) größte Kraft
Haftgrenze 0,7 (pacejkaGrenze) Querausnutzung am Scheitel
Heckreserve 1,2 (pacejkaHeckReserve) hinten 20 % mehr Seitenhalt: ab Werk leicht untersteuernd
größter Übersteuer-Zuschlag 0,35 Servoeinheiten (pacejkaUeberMax) ≈ 16 Grad
Vortriebsverlust beim Rutschen bis 55 % (pacejkaRutschVortrieb)
Leistungsübersteuern bis Faktor 1 + 1,4 hinten (pacejkaLeistung) ab 40 % Gas, Smoothstep bis Vollgas
Haltedauer eines Rutschs höchstens 2 s (pacejkaHaltMax) nicht unter 15 % des Höchsttempos

Rechenweg je Takt:

quer = |Lenkung| · v_Anteil · 1,8 / Haftgrenze
vorn = clamp(statisch/Last_vorn ; 0,6 … 1)           (Bremsen belastet vorn → kleiner)
hinten = clamp((1−statisch)/(1−Last_vorn) ; 0,6 … 1,6)
uV = quer · vorn / Grip
uH = quer · hinten / Grip / √(1 − (0,7·Antrieb)²) / 1,2   (· Leistungsfaktor bei viel Gas)
Wirkfaktor(u) = 1 für u ≤ 1, sonst y(u)/u
Untersteuern: pacUnter → Wirkfaktor(uV) · Gasfaktor, nachgeführt mit 80 ms
Übersteuern:  nur wenn uH > 1 und uH > uV: Zuschlag = min(0,35 ; 1 − Wirkfaktor(uH))
servoAngle = clamp(servoAngle · pacUnter + Richtung · pacUeber)

Gegenlenken (Stick gegen die Rutschrichtung) baut den Zuschlag mit 0,1 s ab, sonst mit 0,25 s; der Aufbau dauert 0,12 s. Unter- und Übersteuern lösen Vibration aus (Untersteuern als leises Brummen nur, wenn die Vorderachse wirklich über der Grenze ist, Übersteuern als kräftiger Stoß alle 150 ms) und Reifenquietschen. Mit Haftgrenze 0,7 ist voller Einschlag ab etwa 115 km/h am Limit, halber Einschlag ab etwa 230 km/h.

Steuerungsmodus RC

Im Fahrgefühl RC (Steuerungsmodus „aus“) rechnet die App kein Fahrzeugmodell, solange kein Autopilot fährt. Der Lenkstick geht roh ans Auto, nie begrenzt. Das Gas läuft durch rcGas() (src/20-protocol.js):

Lage Bedingung Gaswert
Gas Gas > 2 % steigt sofort, fällt höchstens um 1 je 2000 ms (RC_AUSLAUF_MS)
losgelassen kein Pedal läuft in 2 s auf 0 aus
Bremsen neuer Bremsdruck, geschätztes Tempo > 0 negativer Wert (Gegenstrom), bis die Schätzung 0 ist; Abbau Bremstiefe · dt / 700 ms
rückwärts neuer Bremsdruck, Befehl seit 150 ms null und Schätzung < 0,02 −Bremsweg, solange gedrückt

Das Tempo ist dabei geschätzt, denn das Auto meldet keines: die Schätzung folgt dem Gasbefehl mit 0,5 s beim Beschleunigen und 0,8 s beim Ausrollen.

Drift-Modus (entfernt)

Bis 0.10.5 gab es einen Drift-Modus, der gegen das gemessene Drehsignal aus Byte 3 der Meldungen gegenlenkte (driftGegenlenken(), Stärke 50 %). Er ist nicht mehr wählbar; die Stellung „Aus“ heißt seitdem RC. Der Code und der ausgeblendete Regler „Gegensteuern im Drift“ sind noch vorhanden.

Fahrhilfe

Die Fahrhilfe (driver-assist, je Auto auch in der Garage) hat drei Stellungen:

Unter gelber Flagge, in der Einführungsrunde und beim Aufstellen fährt ohnehin der Autopilot (siehe Safety Car und Reinigungswagen).

Vom Modell zum Funkbefehl

Der Gaswert ist nicht die Pedalstellung, sondern das simulierte Tempo:

motorPWM = v / topSpeedKmh                          (vorwärts, 0 … 1)
motorPWM = max(motorPWM, Anfahrschub · Gas)         (solange Gas gegeben wird)

Würde die App den Pedalwert direkt senden, stünde das echte Auto bei Vollgas sofort auf Höchsttempo. So steigt das Byte mit dem Modelltempo über mehrere Sekunden.

In sendControlValue():

x = motorPWM
wenn x > 0 und kein Autopilot:   x = x · Gasfaktor
wenn kein Autopilot:              x = x · Akkuausgleich
Δ_Gas    = clamp(round(x · 127) ; −64 … 127)
Byte 6   = (0xDF + Δ_Gas) mod 256
Δ_Lenk   = clamp(round(servoAngle · 127) ; −127 … 127)
Byte 7 = Byte 9 = Δ_Lenk im Zweierkomplement
Byte 19  = CRC-8 über Byte 0 bis 18 (Polynom 0x31, Startwert 0xFF)

Die übrigen Bytes (Kopf 0xAF, Lichtbits in Byte 14, Modus-Bytes) beschreibt die Seite Carrera HYBRID. Das Paket geht im 45-ms-Takt über eine Charakteristik von Bluetooth Low Energy hinaus; ist ein Schreibvorgang noch nicht fertig, wird der neueste Wert nachgereicht statt ein Takt verworfen.

Alle Fahrgefühle mit ihren Werten

Die Werte stammen aus PRESETS in src/98-presets.js (nicht aus den Beschreibungstexten). „Pro“ in der Spalte Sim+ und Pacejka heißt: gleicher Wert wie Pro. Der Crash-Regler ist ein Index in die Liste 1, 2, 3, 4, 5, 10, 20, 50.

Regler (ID) Arcade Sim+ Pacejka Pro GT3 F1 Realismus GT3 Omega RC (WIP)
Steuerungsmodus (phys-mode) Physik Physik Pacejka Physik Physik Physik Physik Physik RC
Automatik (setting-autoshift) an an an an aus aus aus an an
0 → 100 km/h, s (setting-zero-to-top) 1,6 2,3 2,6 2,6 2,9 2,5 3,2 2,6 1,5
Beschleunigungsfaktor (phys-accel) 1,5 1,15 1,0 1,0 1,0 1,0 1,0 1,0 1,6
Gasfaktor (setting-topspeed) 1,1 1,8 1,8 1,8 1,45 1,6 1,0 1,8 1,5
Bremswirkung (setting-brakepower) 4,0 2,2 1,4 1,4 1,15 1,45 0,85 1,4 2,5
Bremsaufbau, s (phys-brake-tau) 0,12 0,12 0,12 0,12 0,12 0,12 0,12 0,45 0,12
Bremsbalance, % vorn (setting-brakebias) 56 62 62 62 60 63 62 62 56
Bremsen nimmt Lenkung (setting-brake-steal) 0,4 0,95 0,95 0,95 1,1 1,1 1,0 1,15 0,2
Reifengrip (setting-grip) 1,0 1,0 1,0 1,0 0,87 0,97 0,72 1,0 1,0
Lenkansprechen (phys-steerresp) 3,4 3,3 3,0 3,0 3,2 3,2 3,0 3,0 4,0
Lenkkalibrierung (setting-steer-calib) 3,0 2,5 2,5 2,5 2,0 2,0 1,6 2,5 3,0
Ausrollen (setting-coast-drag) 0,4 0,6 0,6 0,6 0,9 1,2 1,25 0,6 0,3
Tankgewicht (setting-fuelweight) 0 1 1 1 0,45 0,6 1,0 1 0
Reifenmodell (setting-tyres) 0 (aus) 1 1 1 0,9 1,2 2,0 1 0 (aus)
Reifenwärmer (setting-tyre-blankets) an aus aus aus aus an aus aus an
Reifendruck, bar (setting-tyre-pressure) 1,8 1,8 1,8 1,8 1,8 1,75 1,8 1,8 1,8
Jedes Rad einzeln (setting-tyre-asym) aus an an an an an an an aus
Tankverbrauch, %/s (setting-fuel-drain) 0 1 1 1 1,3 2,7 3,0 1 0
Crashs bis 100 % (setting-crash-count) 50 5 5 5 5 4 10 5 50
Schaden bei Crash (setting-crash-schaden) aus an an an an an an an aus
Crash-Erkennung, Bremsen, Nur Rammer an an an an an an an an an
Crash-Schwelle (setting-crash-threshold) 60 40 40 40 35 30 30 40 60
Reparatur, s (setting-repair-time) 2 4 4 4 11 16 20 4 2
Bremsfading (setting-brake-fade) aus an an an an an an an aus
Stärke des Fadings 1,0 1,5 1,5 1,5 1,0 1,25 1,0 1,5 1,0
Windschatten (setting-dirtyair) aus aus aus aus an an an aus aus
Stärke des Windschattens 1,0 1,0 1,0 1,0 1,0 1,35 1,0 1,0 1,0
Lenkung aus Gewichtsverlagerung (abgeleitet) nein ja ja ja ja ja ja nein nein
Sonderweg (abgeleitet) lenkKopplungAus – – – – – – lenkAlt –

Nicht Teil der Sätze sind: Layout, Getriebe, Höchstgeschwindigkeit, Lenkkennlinie, Gas- und Bremskennlinie, „Voller Einschlag bei“, Lenkdämpfung, Lenkkraft unter Gas, Anfahrschub, Tempo rückwärts, Gewichtsverlagerung und deren Trägheit sowie alle Renneinstellungen (Renndauer, Wetter, Strecke).

Die abgeleiteten Schalter setzt setzeBrakeStealLast() aus dem gemessenen aktiven Satz:

Kurzcharakter:

Fahrgefühl je Spieler

Seit 1.2.4 kann ein Zusatzspieler ein eigenes Fahrgefühl haben (Speicher omegasim-preset-spieler-2 bzw. -3). Seine Abstimmung entsteht in zwei Schritten (src/98-presets.js, src/49-spieler.js):

  1. presetSchnappschuss(key) legt das Fahrgefühl kurz auf die Regler von Spieler 1, liest die entstandene Modellkonfiguration als Kopie ab und legt sofort den alten Stand von Spieler 1 zurück. So rechnet das Fahrgefühl durch dieselben Regler-Handler wie sonst; das Ergebnis wird je Satz zwischengespeichert. Während der Schnappschuss läuft, wird nicht abgeglichen.
  2. spielerGefuehlUeberlagern(nr, motor) kopiert erst die Konfiguration von Spieler 1 auf den Motor des Zusatzspielers, legt dann den Schnappschuss darüber und setzt den Steuerungsmodus (physModus). Danach wird die eigene Reifenmischung des Spielers wieder eingesetzt, damit sie nicht die von Spieler 1 übernimmt.

Ob ein Zusatzspieler mit Modell oder roh fährt, entscheidet spielerPhysikAn(): mit eigenem Fahrgefühl dessen Modus, sonst der von Spieler 1.

// src/49-spieler.js, spielerGefuehlUeberlagern
const key = window.__spielerPreset(nr);
const snap = key ? window.__presetSchnappschuss(key) : null;
if (snap) {
  Object.assign(motor.config, JSON.parse(JSON.stringify(snap.config)));
  motor.config.physModus = snap.modus;
} else {
  motor.config.physModus = null;   // wie Spieler 1
}

In der Meisterschaft kann zusätzlich ein Fahrgefühl für alle festgelegt werden.

Beispiele

Beispiel 1: vom Daumen zum Gasbyte

Fahrgefühl Pacejka (Gasfaktor 1,8), Gaskennlinie 2,45, Auto im 3. Gang bei halbem Modelltempo (v = 2,0 von 4,0), Tank und Schaden in Ordnung.

  1. Trigger halb gedrückt: throttleY = 0,5.
  2. Kennlinie: 0,5^2,45 ≈ 0,183. Das ist das Gas, das ins Modell geht; es beschleunigt das Modell nur sanft.
  3. Modell: motorPWM = 2,0 / 4,0 = 0,5 (das Tempo bestimmt das Byte, nicht der Trigger).
  4. Gasfaktor: 0,5 · 1,8 = 0,9.
  5. Δ = round(0,9 · 127) = round(114,3) = 114.
  6. Byte 6 = (0xDF + 114) mod 256 = (223 + 114) − 256 = 81 = 0x51.

Bei vollem Modelltempo wäre x = 1,8, Δ wird auf 127 begrenzt, Byte 6 = (223 + 127) − 256 = 94 = 0x5E. Ohne Gas und im Stand ist Δ = 0, Byte 6 = 0xDF.

Beispiel 2: Lenkbyte

Lenkwert nach allen Schritten servoAngle = 0,5: Δ = round(63,5) = 64, Byte 7 = Byte 9 = 0x40 (64), etwa 22,5 Grad nach rechts. Bei −0,5 rundet JavaScript −63,5 auf −63 (Rundung zur größeren Zahl): Zweierkomplement 256 − 63 = 193 = 0xC1. Voller Einschlag links (−1): −127 → 256 − 127 = 129 = 0x81.

Beispiel 3: Stickweg bei „Voller Einschlag bei“

Standard: voll = 0,9, Lenkkennlinie 2,45, Lenkansprechen 3,0, im Stand.

Beispiel 4: Schaltpunkt im GT3-Getriebe

rpmScale ≈ 9449. Hochschalten aus dem 1. Gang bei 8800/min: v = 8800 / (9449 · 3,75) · 4,0 ≈ 0,993 Modell-km/h, angezeigt (Maßstab 73,75) etwa 73 km/h. Nach dem Schalten liegt die Drehzahl bei 8800 · 2,38/3,75 ≈ 5585/min, das Drehmoment dort ist rund 0,89. Während der 120 ms Schaltpause gibt es keinen Antrieb.

Beispiel 5: Bremsen nimmt Lenkung (Pro, Lenkung aus Gewichtsverlagerung)

Neutral-Layout, 100 km/h (Tempoanteil voll), eingeschwungener Zustand, Bremsbalance 62 %, Bremsen nimmt Lenkung 0,95. Vereinfachend ist die Last vorn 0,5 + Bremse · 0,30.

Bremse uF cap use steerGrip (ohne Reifen, Nässe) Deutung
0,2 1,12 1,067 0,236 1,04 Trail-Braking: etwas mehr Lenkung als rollend
0,5 1,30 1,166 0,589 1,01 etwa wie rollend
0,8 1,48 1,264 0,942 0,84 spürbar weniger
1,0 1,60 1,328 1,178 0,61 deutlich weniger, aber nicht am Notboden

Die Lenkwinkel-Kalibrierung gleicht nur den statischen Grip aus, diese Verhältnisse kommen also am Servo an.

Beispiel 6: Pacejka am Limit

Pacejka, Haftgrenze 0,7, voller Einschlag bei 60 % des Höchsttempos (177 km/h), rollend (Last vorn 0,545).

  1. quer = 1 · 0,6 · 1,8 / 0,7 ≈ 1,543.
  2. vorn = 0,5 / 0,545 ≈ 0,917; uV = 1,543 · 0,917 ≈ 1,415 (über dem Scheitel).
  3. y(1,415) ≈ 0,99; Wirkfaktor = 0,99 / 1,415 ≈ 0,70.
  4. Am Auto kommen statt 45 nur etwa 31 Grad an, das Cockpit meldet Untersteuern, das Pad brummt.

Weitere Werte der normierten Kurve: Wirkfaktor 0,83 bei u = 1,2; 0,66 bei 1,5; 0,49 bei 2; 0,32 bei 3.

Grenzen und bekannte Probleme

Versionsgeschichte

Version Änderung
0.5.10 Gaskennlinie als Regler (Exponent; 1 = linear).
0.5.13 Schaltpause läuft über dt statt über einen Zeitgeber.
0.5.18 Reifenmodell in Pro ab Werk an; Drift-Modus (später entfernt).
0.5.54 Lenkdämpfung ab Werk 0 ms (sofort).
0.8.40 „Voller Einschlag bei“ (90 %); Gas-, Brems- und Lenkkennlinie ab Werk 2,45.
0.9.39 Tacho mit gemessenem Maßstab 68,1.
0.9.64 Fahrgefühl Pacejka (Pro mit Pacejka-Lenkmodell).
0.10.5 Sim+; Drift-Modus entfernt, Rohmodus heißt RC; FAHREN zeigt nur noch die gebräuchlichen Fahrgefühle.
1.0.22 Fahrgefühl RC; der Steuerungsmodus hängt am Fahrgefühl, die Einstellung ist ausgeblendet.
1.0.36 Fahrgefühl Omega (Pro wie 0.9.50, eingefroren).
1.0.42 Eigener Bremsaufbau 0,12 s (Omega 0,45 s), Regler Bremsaufbau.
1.0.43 Pro: Bremsen nimmt Lenkung 95 % statt 115 %.
1.0.44 Bremssteal an der simulierten Gewichtsverlagerung für die Realismus-Fahrgefühle; Arcade-Bremse stärker.
1.1 (1.1.3) Lenkung aus der Gewichtsverlagerung mit Tiefpass; stetige Lenkentlastung unter Gas; Omega rechnet wieder wie 1.0.42; Arcade ohne Kopplung von Gas/Bremse an die Lenkung; RC bremst bis zum geschätzten Stillstand.
1.1 (1.1.11) Rückwärtsgang halb so schnell, Regler „Tempo rückwärts“.
1.1 (1.1.25) Pacejka: Übersteuern ab Werk aus, eigener Schalter.
1.1 Rückwärtsgang mit Gas und Bremse zusammen (experimentell).
1.1 (1.1.42) Pacejka-Vibration nur bei echtem Untersteuern.
1.2 (1.2.4) Fahrgefühl je Spieler in der Garage.
1.2 (1.2.11) Erklärtexte der Fahrgefühle Arcade, Pro, Pacejka und Omega an die eingestellten Werte angeglichen.

Siehe auch

Quellen im Code