====== 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: - Wenn drumrum nichts los, dann mit Wunschgeschwindigkeit fahren * Ausnahme: Polizeiwagen zu sehen, dann Polizeiwagengeschwindigkeit * Sicherheitsabstand zum Vordermann halten; ggf. überholen - In Geschwindigkeitsbegrenzung maximal ca. zulässige Geschwindigkeit fahren * Ausnahme Rettungswagen von hinten - Überholverbote beachten * außer im Stau, dann darf langsam vorbeigefahren werden (StVO prüfen) - 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 - Krankenwagen vorbeilassen (rechts oder links rüber und bremsen) * wenn Vorbeilassen nicht geht, beschleunigen und voraus fahren * dabei auch Geschwindigkeitsbegrenzungen missachten - 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) - 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. - Wenn vor mir auf meiner Spur Autos, nicht nach rechts auch wenn rechts frei - 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" - 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)