Jump to content

Recommended Posts

Posted

Hallo HaNNoveraNer,

ich habe deine Anlage nur kurz überflogen, mir sind das etwas zu viele Variablen und Timer. Ich habe selber deine Straße genutzt um eine eigene Version zu implementieren:
DB356342-5047-4E9D-8584-93B785CED91D

Meine Version folgt dem immer gleichen Prinzip:

  • (Vorbereitung): Nähert sich ein Fahrzeug der Kreuzung, wird ein zufälliges Ziel ermittelt
  • Betritt ein Fahrzeug den Vorfahrtskontakt, wird zuerst die Richtung ermittelt, in die das Fahrzeug fährt
  • Für jede Richtung gibt es ein eigenes benutzerdefiniertes Ereignis
    • Ist die Strecke frei, fährt das Fahrzeug weiter
    • Ist die Strecke blockiert, stoppt das Fahrzeug und probiert es später noch einmal

Zur Prüfung, ob eine Strecke frei ist, nutze ich die neue Funktion "GetVehiclesOnRoute". Da Fahrzeuge beim Stoppen am Vorfahrtskontakt den Kontakt aber minimal überfahren, würden wartende Fahrzeuge die Strecke fälschlicherweise blockieren. Ich nutze daher eine Erweiterung, die nur fahrende Fahrzeuge prüft (mit dem Nachteil, das Fahrzeuge nicht mitten auf der Kreuzung stehen bleiben dürfen).

Die Funktion "Fahrzeug fährt in Richtung eines Gleiskontakts" nutze ich, um die Fahrtrichtung zu ermitteln. Diese hat den Nachteil, dass sie 150 m weit schaut, d.h. ich musste die Straßen soweit verlängern, dass andere Kontakt der Kreuzung außerhalb der 150 m liegen. Hier könnte man über eine Erweiterung nachdenken, bei der der Nutzer die maximale Reichweite selber bestimmen kann.

Das System lässt sich auf beliebige Kreuzungen erweitern und auch noch weiter abstrahieren, da immer die gleichen Abläufe stattfinden, mit dem Ziel, eine voll funktionsfähige Kreuzung im Katalog anzubieten, die ein Nutzer einfach nur auf die Anlage zieht. Im Moment soll die Anlage aber auch nur ein Ideengeber sein.

Viele Grüße,

Neo

Posted (edited)

Hallo @Neo
Du hast Dir das etwas zu einfach gemacht ;-)
Es gilt ja, die Vorfahrtsregeln nachzubilden.
Das heißt, die Haupt/Vorfahrtsstraße hat Vorrang.

Edited by HaNNoveraNer
Posted

Zunächst ging es mir um eine kollisionsfreie Kreuzung durch Nutzung der neuen EV-Möglichkeiten. Prioritäten können darauf aufbauen.

Posted

Hallo, 

ich habe mal den Ansatz von @Neo ausprobiert.  

Am 3.11.2024 um 20:13 schrieb Neo:

Dann kannst du meiner Meinung nach auch darauf verzichten, wohin ein Fahrzeug tatsächlich fährt. Es genügt, einfach die Bereiche auf Vorhandensein eines Fahrzeugs zu prüfen, die zu einer Kollision führen könnten.

Natürlich gleich an der großen Kreuzung. :D  Es geht tatsächlich ohne die Fahrziele zu benutzten. 

Und die Steuerung ist auch einigermaßen übersichtlich. Leider geht es nicht ganz ohne Lua. 

Da sich aber einige Vorfahrtregeln gegenseitig ausschließen, kommt es noch häufig zu unplanmäßigen Stop's. Dafür habe mal ein paar Schalter mitberücksichtigt, um den Verkehr wieder zum Laufen zu bringen. Bei der hier dargestellten Situation, sollte eigentlich das Fahrzeug von "Ost" schon fahren können. 

Screenshot2024-11-05191640.thumb.jpg.886d66b0985c6849548bb5429b0fd7ef.jpg

Da aber das Fahrzeug von "West" auf den GK steht, wird die gesamte Abbiegestrecke nach "Nord" schon blockiert. 

@Neo Verbesserungsvorschlag: Ein Fahrzeug das auf dem GK und hält (V=0), sollte den kommenden Streckenabschnitt nach "Nord" nicht blockieren. 

Screenshot2024-11-05191552.thumb.jpg.2468285175dff09def971f306e3e7241.jpg

Hier mal die Testanlage dazu. 

V9-große Kreuzung 01.mbp

VG,

Hawkeye

Posted
vor 5 Stunden schrieb Neo:

Da Fahrzeuge beim Stoppen am Vorfahrtskontakt den Kontakt aber minimal überfahren, würden wartende Fahrzeuge die Strecke fälschlicherweise blockieren.

Das gilt wohl auch für die neue Bedingung „Fahrzeuge zwischen zwei Gleiskontakten“. Kann hier nicht ein stehendes Fahrzeug ignoriert werden?

VG,

Hawkeye

Posted
vor 38 Minuten schrieb Hawkeye:

Kann hier nicht ein stehendes Fahrzeug ignoriert werden?

In meinem Beispiel habe ich das mit Lua gelöst, standardmäßig würde ich das aber nicht in die Funktion integrieren, weil sie ja auch für andere Zwecke eingesetzt werden kann (z.B. um alle Fahrzeuge innerhalb eines Bereiches anzusprechen). Eine Option wäre aber, einen "Filter" zu "Fahrzeuge zwischen zwei Gleiskontakten" hinzuzufügen, um nur bestimmte Fahrzeuge je nach Einstellung zu berücksichtigen. Das würde ich am Ende entscheiden, wenn die Vorfahrtsexperimente abgeschlossen sind.

Posted

Hallo @Hawkeye,

vor 2 Stunden schrieb Hawkeye:

Hier mal die Testanlage dazu. 

Die läuft schon weitgehend unfallfrei - aber das habe ich mehrfach gesehen. Immer Linksabbieger West --> Nord vs. von Ost kommend entweder gerade nach West (wie im Bild) oder rechtsabbiegend nach Nord.

Screenshot2024-11-05221225.thumb.jpg.3088d0ae9cbc2099e8225fad95990c04.jpg

Beste Grüße

Phrontistes

Posted

Nur mal als Anmerkung.

Die Straßenverkehrsordnung , jedenfalls die deutsche, verlangt die Einrichtung von separat getrennten Abbiege- und Geradeausspuren. Die im vorherigen Beitrag  gezeigte Kreuzung erfüllt diese Anforderung nicht. 

Hier eine real existierende Kreuzung in meiner Heimatstadt. Man beachte die Spurenanordnung und die Markierung. Normalerweise sollte auch das MBS sich an die Straßenverkehrsvorschriften halten.

 Kreuzung.thumb.JPG.6d153fdcf8290d16f988c08d9ae25a62.JPG

Gruß

streit_ross

 

Posted
vor 33 Minuten schrieb streit_ross:

Die Straßenverkehrsordnung , jedenfalls die deutsche, verlangt die Einrichtung von separat getrennten Abbiege- und Geradeausspuren.

Zeig mir mal bitte, wo sie das tut.

Und erklär mir dann bitte diese Kreuzung hier:

https://maps.app.goo.gl/CjXjSwKGfzxdJnhW7

Klar sind Abbiegespuren häufig zu finden, weil sie den Verkehrsfluss verbessern.
Aber wo es nicht passt, da gibt es keine. 

Posted
vor 10 Stunden schrieb Neo:

In meinem Beispiel habe ich das mit Lua gelöst,

Danke, werde ich auch mal versuchen. 

vor 9 Stunden schrieb Phrontistes:

aber das habe ich mehrfach gesehen. Immer Linksabbieger West --> Nord vs. von Ost kommend entweder gerade nach West (wie im Bild) oder rechtsabbiegend nach Nord.

Ja, leider. Das liegt wohl daran, das die 3 Gleiskontakte so dicht beieinander liegen. Dadurch stoppt manchmal ein Fahrzeug auf einem falschen GK, der nicht der Fahrtrichtung entspricht. Schiebt man die GK etwas weiter nach vorne, dann fahren Fahrzeuge wieder durch die davor stehenden durch. :(  

@Neo In der obigen Anlage habe ich Probleme mit den Schaltern Nord und Süd. 

Obwohl die Fahrzeuge auf den in den Schaltern hinterlegten GK stehen, findet das Programm die Fahrzeuge nicht und weist ihnen somit keine Geschwindigkeit zu. 

 

Screenshot2024-11-06080840.thumb.jpg.f00e9c86e55afca83003f77d400100ae.jpg

Screenshot2024-11-06080952.thumb.jpg.7ad38efccb2f689c483094db14dfef2c.jpg

VG,

Hawkeye 

Posted (edited)

 

Am 5.11.2024 um 18:44 schrieb Neo:

Zunächst ging es mir um eine kollisionsfreie Kreuzung durch Nutzung der neuen EV-Möglichkeiten. Prioritäten können darauf aufbauen.

Hallo @Neo

Ich habe die Prioritäten mal darauf aufgebaut.
Jetzt werden die Vorfahrtsregeln in den meisten Fällen eingehalten.
Die Fahrzeuge tragen sich in eine Prioritätenliste ein.
Wer immer fahren darf erhält Prio 1.
Wer einen vorlassen muß erhält Prio 2.
Wer zwei vorlassen muß erhält Prio 3.
u.s.w.

Damit kann man jetzt gut leben.

P.S. Nochmal korrigiert nach 1. hochladen.

 

Vorfahrt1.mbp

Edited by HaNNoveraNer
Posted

Hallo,

und der Kreisverkehr ist jetzt auch hinzugefügt. Nur eine "Universal"-Steuerung für alles. :D 

Screenshot2024-11-07094032.thumb.jpg.a097da04ce07b724190cac72c90fda68.jpg

@Neo Du hast recht gehabt, mit dem Ansatz, das das Fahrziel eines Fahrzeuges keine Rolle spielt. Es kommt nur darauf an, die neue Funktion "Fahrzeug zwischen zwei Gleiskontakten" für die Vorfahrtsregeln an den Stoppkontakten sinnvoll einzustellen. Jetzt musst du nur noch das Problem mit dem "Hindurchfahren von vorausfahrenden Fahrzeugen" bei Abbiegern lösen. Ich nutzte hierfür bis dahin die "unsichtbaren" Anhänger. 

 VG,V9-Kreuzung_Abzweig_Kreisverkehr 01.mbp

Hawkeye

Posted

Hallo Hawkeye
Es fällt auf, daß die Fahrzeuge vor der Einfahrt in den Kreisverkehr warten, obwohl das FZ im
Kreisverkehr die Ausfahrt davor wählt. Sie könnten also fahren.

Das Hindurchfahren passiert ja eigentlich nur, wenn Gleiskontakte auf unterschiedlichen Spuren nebeneinander liegen,
bzw. Fahrzeuge dort halten wo die Spuren zu dicht liegen. Das kann man vermeiden, indem man die Stopkontakte
VOR so eine Verzweigung plaziert.

LG Thomas

Posted
vor 16 Minuten schrieb HaNNoveraNer:

Das Hindurchfahren passiert ja eigentlich nur, wenn Gleiskontakte auf unterschiedlichen Spuren nebeneinander liegen,
bzw. Fahrzeuge dort halten wo die Spuren zu dicht liegen.

Ja, das stimmt. Aber auch dann, wenn ein nachfolgendes Fahrzeug bei Verwendung einer anderen Fahrspur an einer Kreuzung schneller beschleunigt. Ich habe die Spuren der Kreuzung angepasst, damit genau das erreicht wird. Mein Ansatz basiert darauf, das ich für jede Fahrtrichtung einen einzelnen Stoppkontakt verwende. Das ermöglich z.Z. eine übersichtlichere Tabelle für die Vorfahrtsregelung. 

vor 22 Minuten schrieb HaNNoveraNer:

Es fällt auf, daß die Fahrzeuge vor der Einfahrt in den Kreisverkehr warten, obwohl das FZ im
Kreisverkehr die Ausfahrt davor wählt. Sie könnten also fahren.

Das kann z.B. an der Schalterstellung "Vorrang" in den Stoppkontakten liegen. Wenn an einer Kreuzung oder im Kreisverkehr alle auf "false" stehen, dann kommt der Verkehr manchmal zum Stillstand, weil sich Vorfahrtregeln überschneiden. Deshalb haben einige Stoppkontakte die Einstellung "true". In diesem Fall wird eine Vorfahrtsregel ignoriert und der Verkehr läuft weiter ohne in der EV Änderung durchführen zu müssen . Hier sind sicherlich noch Optimierungen möglich. Auch wenn man z.B. die Verzögerungszeit für die erneute Prüfung auf "defer(0.5, "Verzögerung") setzt, oder die Regeln nochmal anpasst. 

Auch ist die Verwendung von Anhängern/ Gelenkbussen mit dieser Steuerung noch nicht zufriedenstellend gelöst.  

Screenshot2024-11-07131100.thumb.jpg.8f43cd3bbe48ce0a73fe6ad2d673479d.jpg

VG, 

Hawkeye

Posted (edited)

Puh, ich komme meinen Vorstellungen jetzt langsam näher.
Ich versuche jetzt mal meine weiter optimierten Routinen an Deiner Anlage.
Erstmal das T-Stück.
Ziel wenige Kontakte und leicht anpassbarer, kopierbarer Lua Code.
Und natürlich möglichst keine Kollisionen bei Einhaltung der Vorfahrtsregeln.

Vorfahrt1.thumb.jpg.d259c5dad7f3f34f82ebe9adc46d5b8b.jpg

Vorfahrt1.mbp

Edited by HaNNoveraNer
Posted

Hallo @Neo und @Goetz

ich komme mal wieder an die Grenze. Für die Steuerung an Kreuzungen ist es für die Prüfung wichtig, das bei Fahrzeugen, die mit Anhängern fahren oder aus mehreren Teile bestehen, wie z.B. der Gelenkbus, das in den Schleife das angetriebene Fahrzeug auch an Platz "1" in der Liste steht.  

 Screenshot2024-11-09163209.thumb.jpg.9f2458ead90f880cf49da5383396a102.jpg

Das isst aber nicht immer der Fall! Ich habe mal zwei unterschiedliche Wege von Schleifen untersucht, die aber das gleiche falsche Ergebnis liefern. 

Der "Gelenkbus-Nachläufer" oder der "Gelenkbus-Faltenbalg" habe keine Antriebe. Trotzdem steht der Nachläufer an Position 1 der Liste. 

Screenshot2024-11-09163111.thumb.jpg.f9fd8eb5b361e92c8126bffac0219ba2.jpg

Gibt es eine andere Variante die Liste/Tabelle zu lesen, so das auch das erste Element das gewünschte Fahrzeug (hier: "Gelenkbus rot" mit eingeschaltetem Antrieb ist? 

Sonst fahren die anderen Fahrzeuge bei der Prüfung zwischen 2 Gleiskontakten schon los, obwohl der Bus die Kreuzung noch nicht verlassen hat, bzw. der Bus wird bei der Prüfung gar nicht erst erkannt. 

VG,

Hawkeye

Posted

Hallo @Hawkeye,

was

layout:getVehiclesOnRoute(a, b)

in welcher Reihenfolge zurückgibt, kann nur @Neo beeinflussen. Ersichtlich, geht er in Fahrtrichtung von a nach a die Fahrzeuge durch. Zweckmäßig wäre wohl, die Reihenfolge umzudrehen, d.h. die Fahrzeuge entgegen der Fahrtrichtung aufzulisten.

Beste Grüße

Phrontistes

Posted (edited)
vor 38 Minuten schrieb Phrontistes:

was

layout:getVehiclesOnRoute(a, b)

in welcher Reihenfolge zurückgibt

Ist wohl im Moment noch völlig willkürlich. Die Reihenfolge, wie der Bus im obigen Beispiel in Fahrtrichtung tatsächlich zusammengebaut ist,

lautet 3,4,1,2.

Wichtig ist, das in bestimmten Streckenabschnitten die Prüfung auf Anhänger unterschiedlich bewertet werden muß.

Steht ein Fahrzeug auf einem Stoppkontakt und wartet darauf, das die Prüfabschitte frei werden, dann spielen die Anhänger keine Rolle. Fährt aber ein Fahrzeug mit Anhänger durch eine Prüfstrecke, dann darf diese erst freigegeben werden, wenn der Anhänger den Abschnitt auch mit verlassen hat, sonst fahren wartende Fahrzeuge zu früh los oder durch andere an Kreuzungen hindurch.

VG,

Hawkeye

Edited by Hawkeye
Posted

Hallo, 

hier die Erweiterung für Fahrzeuge mit Anhängern oder Gelenkbusse. Habe etwas mit den Einstellungen experimentieren müssen. Dafür gibt es in Stoppkontakten und den Startkontakten zwei "Schalter", damit der Verkehr in bestimmten Situationen weiterläuft.  

1. "Auf_Vorfahrt_verzichten" (true/false) - ein Fahrzeug das auf einem Stoppkontakt steht, lässt einen anderen die Vorfahrt

2. "Anhängerprüfung"  (true/false)  - (nur, wenn "Auf_Vorfahrt_verzichten" = true)  Das ist z.B. im Kreisverkehr und bei der Kreuzung notwendig, damit die Anhänger auf der Prüfstrecke mit berücksichtigt werden.

Screenshot2024-11-09205726.thumb.jpg.869d7043f37d4c22c7e1af2732dad1b6.jpg

V9-Krzg_Abzg_KreisVkr 02.mbp

Ein paar kleine Problemstellen gibt es leider immer noch. :( Aber sonst läuft die Anlage recht flüssig. 

VG,

Hawkeye

Posted

Hallo @Neo

die Funktion Anz = #layout:getVehiclesOnRoute(a, b) scheint in Verzögerungen (= Wiederholungsprüfungen, die kurz hintereinander ausgeführt werden) die Fahrzeuge nicht immer zu erkennen. Das führt zu Problemen. Hier mal ein paar Auszüge aus dem Protokoll: 

Screenshot2024-11-11104129.thumb.jpg.a07dd98af9c73e889b7d347963431281.jpg 

Screenshot2024-11-11103900.thumb.jpg.ee7f68e62c22167d8376a3747c8faea9.jpg

Screenshot2024-11-11111954.thumb.jpg.f2f56e43eeae82a034c545769f21be56.jpg

 VG,

Hawkeye

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...