Webseiten-Werkzeuge


traffic

ToDo und Notizen

Beobachtung der Umgebung

In driving.c werden Informationen über das Umfeld des einzelnen Fahrzeugs ermittelt, die zusammen mit den Regeln das Verhalten (Geschwindigkeitsänderung, Spurwechsel) bestimmen

  • gibt Geschwindigkeitsbegrenzungen ?
  • gibt es Überholverbote ?
  • gibt es Baustellen voraus ?
  • welche Fahrzeuge fahren vor mir auf meiner Spur, auf der Spur links von mir, rechts von mir?
    • mit welchem Abstand?
    • mit welcher Geschwindigkeit?
    • mit Spurwechselabsicht?
    • welcher Typ?
    • das Gleiche für „neben mir“ und „hinter mir“ auf den Spuren rechts und links von mir
  • ist ein Rettungswagen in der Nähe?
    • rechts, links oder auf meiner Spur hinter mir
  • ist ein Polizeifahrzeug in der Nähe
  • gibt es einen Stau (mehrere langsame Fahrzeuge dicht hintereinander) rechts oder links von mir?

Regeln

Die Regeln sind auch in der Routine driving.c umzusetzen:

  1. Wenn drumrum nichts los, dann mit Wunschgeschwindigkeit fahren
    • Ausnahme: Polizeiwagen zu sehen, dann Polizeiwagengeschwindigkeit
    • Sicherheitsabstand zum Vordermann halten; ggf. überholen
  2. In Geschwindigkeitsbegrenzung maximal ca. zulässige Geschwindigkeit fahren
    • Ausnahme Rettungswagen von hinten
  3. Überholverbote beachten
    • außer im Stau, dann darf langsam vorbeigefahren werden (StVO prüfen)
  4. nicht rechts überholen
    • doch rechts überholen, wenn links von mir ein Stau ist und auf meiner Spur frei ist
    • dabei aber mit wenig Geschwindigkeitsüberschuss vorbeifahren
  5. Krankenwagen vorbeilassen (rechts oder links rüber und bremsen)
    • wenn Vorbeilassen nicht geht, beschleunigen und voraus fahren
    • dabei auch Geschwindigkeitsbegrenzungen missachten
  6. So weit rechts wie möglich fahren
    • Ausnahme: einige PKW auf Mitte (Fahrertyp langsam)
      • fährt nur nach rechts, wenn von hinten Auto mit sehr hoher Geschwindigkeit
    • wenn ganz links, zügig auf Mitte wechseln
      • Ausnahme sehr schnelle PKW (>180 km/h) auf linker Spur (Fahrertyp schnell )
    • wenn rechts vor mir Autos,
      • nach rechts nur wenn 1km frei (LKW)
      • nach rechts, nur wenn 500 m frei (PKW)
  7. Wenn vor mir auf meiner Spur langsames Fahrzeug oder Baustelle,
    • Spurwechsel nach links,
      • ggf. sogar etwas zurückfallen lassen
      • abhängig vom Delta zum Überholten, beschleunigen
      • mit gleicher Geschwindigkeit weiter (Fahrertyp langsam)
      • wenn von hinten wer kommt, dann tendenziell früher nach links
      • bei Spurwechsel ist abhängig von der eigenen Fahrspur zu prüfen, ob bei Wechsel nach links ein Fahrzeug von weiter links (wenn vorhanden) nach rechts will. Entsprechend bei Wechsel nach rechts.
  8. Wenn vor mir auf meiner Spur Autos, nicht nach rechts auch wenn rechts frei
  9. Regeln für zähfließend/Stau
    • frühzeitig gesperrte Spur verlassen (fast alle)
    • bei rechts stehendem Fahrzeug Lücke lassen/langsam werden, bis eingeschert wurde
    • bis zur Sperrung vorfahren (Fahrertyp schnell)
    • direkt vor der Sperrung „rechts vor links“
  10. Baustellen
    • dürfen nicht befahren werden!

Fahrer-Typen

zur Implementierung

Beobachten

  • für die Beobachtung der Umgebung street_state und street_limits verwenden
    • alle weiteren Infos aus den fahrzeugbezogenen [car] Variablen holen:
      • speed
      • position
      • type
      • lane_change

Verhalten

  • das Verhalten aus den „stetigen“ Variablen ableiten und für diese festlegen
    • (Sicherheits-)abstand zum Vordermann –> auch bei Spurwechsel!
    • neue Geschwindigkeit
    • neue Position
    • neue Spur

Idee zur Steuerung des Verhaltens

„Pläne“ definieren, die abgearbeitet werden, z.B.

  • Plan 0: normales Fahren ohne Überholen
  • Plan 1: Überholen und schnellstens nach rechts
  • Plan 2: Einfädeln vor Baustellen, in Staus
  • usw.

Speichern für die Darstellung

  • in calc_pos erfolgt nur noch das Mapping auf Gitterzellen street_state
    • dabei Doppelbelegungen/Überschreiben verhindern/überwachen (sollte bei Sicherheitsabstand von mind. 5m nicht nötig sein)
    • neue Speed in calc_pos setzen. Dazu ist neue Schleife über alle Autos erforderlich. Neue Position über neuen Speed ist so was wie implizites integrieren, über alten Speed ist Euler. Aber: Beschleunigung findet ja auch noch statt (2nd order)
traffic.txt · Zuletzt geändert: von wikiwriter