Jump to content

Straßenverkehr


Hawkeye

Recommended Posts

Hallo, 

hier endlich ein Lösungsvorschlag für das Problem des "durch Fahrzeuge hindurchfahren" bei verschiedenen Fahrzielen von Fahrzeugen an Kreuzungen oder Abzweigen. Wenn zwei hintereinander fahrende Fahrzeuge unterschiedliche Ziele ansteuern, dann passt sich das nachfolgende Fahrzeug der Geschwindigkeit des vorausfahrenden Fahrzeugs an. Die automatische Beschleunigung ist beim Verfolger ausgeschaltet, da er sonst an der Kreuzung durch vorbeifahrende Fahrzeuge in die Kreuzung hinein und durch das stoppende Fahrzeug hindurchgezogen würde. Zur Verdeutlichung der Zielrichtungen der Fahrzeuge an den Bremskontakten, sind die Spuren (Radien) der Abzweige gegenüber der "Katalog"-Version verändert und die Animationen "Blinker" eingerichtet.   

Die Kurven direkt hinter den Abzweigen sind bewusst sehr eng gewählt, da die Geschwindigkeit eines Verfolgers in Abhängigkeit des Abstandes zwischen den Fahrzeugen nur linear als Strecke und nicht im Bogenmaß ermittelt wird. (Falls jemand hierfür eine Idee hat, wie man das bei Straßen mit mehreren Spuren auch noch realisieren könnte, . . . nur zu. :D )    

Fahrzeuganimationen "Blinker" und "Bremslicht" werden ausgeführt, soweit im Modell vorhanden. (Golf - ohne "Bremslicht", Polizei - komplett ohne Animationen) 

Screenshot2023-07-12194812.thumb.jpg.845c76f3f457d82ea04f161211a5e7e2.jpg

Da die Animationen bei "Tageslicht"-Einstellung nur schwer zu erkennen sind, macht es eigentlich nur Sinn, den Schalter "Bremslicht" einzuschalten, wenn man in der Fahrzeugkamera mitfahren möchte, oder direkt mit der Kamera an die Kreuzung heranfährt.  (Die Timer-Einstellung ist 0,5s)   

Die Sicherheitsanzeigen können wie gehabt unter Ebenen eingeblendet werden.  

Screenshot2023-07-12194852.thumb.jpg.65095c8db091b4dc93927b2bda1b1b28.jpg

Viel Spaß, beim Testen. Die ein oder andere Einstellung kann bestimmt noch optimiert werden. :) 

Abzweig-Vorfahrt achten 01.mbp

 Anregungen und Kritik willkommen. 

VG, 

Hawkeye

Link to comment
Share on other sites

Hallo @Neo,

wenn ich einem Fahrzeug ein Ziel manuell zuweise, werden mir alle Fahrwege angezeigt, die möglich sind. In diesem Beispiel sind es zwei.  

Screenshot2023-07-17143837.thumb.jpg.d32658a99d84d7903b33a50519705a39.jpg 

Über die grafische EV habe ich nicht die Wahl zwischen den zwei Strecken.  Leider wird hier automatisch der "falsche" Fahrweg (2 statt 1) genommen. >:(

Screenshot2023-07-17143931.thumb.jpg.1b00439977bb3826b450b095312dfb74.jpg

Gibt es eine Möglichkeit in Lua die verschiedenen  Wege auseinander zu halten, um dann auch den gewünschten Fahrweg auszuwählen? 

VG,

Hawkeye

 

Edited by Hawkeye
Link to comment
Share on other sites

vor 23 Minuten schrieb Bertram-Will:

ich habe meinen Fahrzeugen für bestimmte Richtungen Schlagwörter zugeteilt. So können in Bedingungen an GK die Richtungen fetgelegt werden.

Hallo Pitt,

nette Idee, danke. Hier geht es aber darum, das es für den Gleiskontakt aus dieser Anfangsposition zwei Fahrwege gibt und das Programm leider den nicht gewünschten davon auswählt. Ein Schlagwort ändert daran nichts.

So wie es aussieht, muß ich die Spuren wohl abändern, das es bei Betreten des auslösenden GK nur einen Fahrweg und somit auch eindeutiges Ziel gibt.

VG, 

Hawkeye

Edited by Hawkeye
Link to comment
Share on other sites

Hallo @Neo

ich habe mal wieder ein Verständnisproblem und bin auf Fehlersuche. 9_9 

In der obigen Anlage wird dem Bus bei Betreten des Gleiskontakte "Anfang" das Ziel zugewiesen und im Zielkontakt eine Variable "Gegenverkehr  auf "true" gesetzt.

Screenshot2023-07-21075917.thumb.jpg.40c958bf8860a82b5f5159cb49e51595.jpg

Diese Variable wird ständig beim Betreten eines Gleiskontaktes durch ein beliebiges Fahrzeug durch eine Schleife geprüft, ob ein Fahrzeug (hier der Bus) auf diesen Zielkontakt zufährt. Dies wird für den Bus aber nicht sofort erkannt und die Variable "Gegenverkehr"  wieder auf "false" zurückgesetzt.   

Screenshot2023-07-21080051.thumb.jpg.debf168febe5b40311fa867f4014c0b9.jpg   

Erst bei der zweiten Abfrage wird das Ziel des Busses erkannt und die Variable "Gegenverkehr" wieder auf "true" gesetzt. 

Screenshot2023-07-21080231.thumb.jpg.ded6811387a8ca814f527b1c24c194f1.jpg

--[[-------------------------------------------------------------------
    Prüft, ob sich ein Fahrzeug auf der Gegenfahrbahn befindet.
---------------------------------------------------------------------]]
$("GK Ziel gerade Strecke 02").variables["Gegenverkehr"] = false
local t = layout:getEntitiesByKeyword("Straßenverkehr")
for i, Wdh in ipairs(t) do
  if Wdh:isHeadingToward($("GK Ziel gerade Strecke 02")) then
    $("GK Ziel gerade Strecke 02").variables["Gegenverkehr"] = true

    break
  end
end

Das verstehe ich nicht.  Gibt es da eine Zeitverzögerung beim Erkennen des Zieles?  

VG,

Hawkeye

Link to comment
Share on other sites

Hallo @Hawkeye

isHeadingToward() ist unabhängig vom eingestellten Ziel.
Das Ziel voraus, welches mit dieser Funktion erkannt wird, ist dasjenige welches auch für das automatische Bremsen genutzt wird.
Bremskontakte werden ab einer fixen Entfernung erkannt.

Viele Grüße
Götz

 

Link to comment
Share on other sites

Hallo @Hawkeye,

vor 43 Minuten schrieb Hawkeye:

isHeadingToward($("GK Ziel gerade Strecke 02")

Die Vorstellung, damit danach zu fragen, zu welchem Zielkontakt das Auto unterwegs ist hatte ich auch mal. Das ist aber leider eine Fehlvorstellung, wie ich von @Neo erfahren habe. Das Ziel (welches dem Programm ja bekannt ist) kann man leider nicht abfragen. Ich weiß nicht mehr, ob er das als Feature-Wunsch aufgenommen hat oder nicht.

Beste Grüße

Phrontistes

PS: Das hatte ich Dir gegenüber übrigens schon mal erwähnt:

https://community.3d-modellbahn.de/forums/topic/8414-alternative-ampelsteuerung/page/2/#comment-107746

Edited by Phrontistes
PS eingefügt
Link to comment
Share on other sites

vor 6 Minuten schrieb Phrontistes:

Das Ziel (welches dem Programm ja bekannt ist) kann man leider nicht abfragen.

Das Ziel ist in der Eigenschaft "target" eines Fahrzeugs enthalten.

Viele Grüße,

Neo

Link to comment
Share on other sites

vor 16 Minuten schrieb Goetz:

isHeadingToward() ist unabhängig vom eingestellten Ziel.

Danke Götz, das mag sein. Aber trotzdem fährt der Bus auf diesen Gleiskontakt zu, unabhängig davon, ob es sein definiertes Ziel ist. 

Screenshot2023-07-21091739.thumb.jpg.350424a1a6fc0c880e55287187531b08.jpg

vor 19 Minuten schrieb Goetz:

Bremskontakte werden ab einer fixen Entfernung erkannt.

Das steht nicht in der Beschreibung! Wie soll man darauf kommen? 

VG, 

Hawkeye

Link to comment
Share on other sites

vor 32 Minuten schrieb Phrontistes:

Das Ziel (welches dem Programm ja bekannt ist) kann man leider nicht abfragen.

Hallo @Phrontistes, wie Neo gerade schon erwähnt hat, geht das nur mit einer Lua-Anweisung. 

Deshalb kann ein Ziel eines Fahrzeuges bisher auch nur mit einer Lua-Anweisung gelöscht werden, oder es wird durch ein neues Ziel überschrieben.

VG, 

Hawkeye

Edited by Hawkeye
Link to comment
Share on other sites

vor 15 Minuten schrieb Hawkeye:

geht das nur mit einer Lua-Anweisung

Ja, so ist es. Deshalb formuliere ich meinen Feature-Wunsch an @Neo nochmals: Es wäre schön, wenn man das Ziel hier finden würde (hier bei einer Bedingung, die man ja nicht durch einen Lua-Einzeiler ersetzen kann):

Screenshot2023-07-21094722.jpg.a8868af118a03a32352e501b32e76ff3.jpg

Link to comment
Share on other sites

vor 5 Minuten schrieb Phrontistes:

die man ja nicht durch einen Lua-Einzeiler ersetzen kann

Es gäbe auch eine Skript-Bedingung. Aber generell ist der Zugriff auf die Zielliste etwas problematischer in der grafischen EV, weil sich hinter dem Ziel entweder ein einzelner Gleiskontakt, oder eine Liste von Gleiskontakten befinden können. Das kann die grafische EV aktuell nicht abbilden.

Ich kann auch nur noch einmal betonen, dass ich selber den Anspruch habe, Straßenverkehr im Studio soweit zu automatisieren, dass solche komplexen EVs für das Steuern von Autos in Zukunft nicht mehr notwendig sind.

Viele Grüße,

Neo

Link to comment
Share on other sites

vor einer Stunde schrieb Neo:

Ich kann auch nur noch einmal betonen, dass ich selber den Anspruch habe, Straßenverkehr im Studio soweit zu automatisieren, dass solche komplexen EVs für das Steuern von Autos in Zukunft nicht mehr notwendig sind.

Hallo Neo,

durch dieses Experimentieren lernt man aber die EV besser zu verstehen. Geht mir zumindest so. :) 
Ich sammle mit jeder neuen Herausforderung ein kleines bisschen mehr wertvolle Erfahrung, was umsetzbar ist und was nicht.
Manchmal genügt schon ein anderer Ansatz zur Lösung.

VG,

 Hawkeye

Edited by Hawkeye
Link to comment
Share on other sites

vor 39 Minuten schrieb Phrontistes:

mal in die graphische EV übersetzt, das geht nämlich :D.

Danke, aber das weiß ich auch. Ich habe es ja von der graphischen EV absichtlich in Lua übersetzt, um beim Testen so auch ohne viel Kopieren das Skript an andere Stellen in der EV hin und her schieben können. 
VG, Hawkeye

Link to comment
Share on other sites

vor 45 Minuten schrieb Hawkeye:

durch dieses Experimentieren lernt man aber die EV besser zu verstehen.

Das begrüße ich auf jeden Fall, ich wollte mit meiner Aussage nur eventuelle Enttäuschungen vermeiden, falls ich die EV nicht wie gewünscht erweitern/anpassen kann.

Link to comment
Share on other sites

vor 2 Stunden schrieb Goetz:

Bremskontakte werden ab einer fixen Entfernung erkannt.

Hallo @Neo, gibt es für die function :is HeadingToward () einen Anhaltswert für die Entfernung zum Gleiskontakt in [m] nach dem man sich richten kann? Oder ist die Entfernung auch von der Fahrzeuggeschwindigkeit und der Verzögerung des Fahrzeugs abhängig?
Dann bräuchte ich wohl nur einen zweiten Kontakt für die Prüfung, um die ganze Strecke mit „true“ erfassen zu können.

VG, Hawkeye

Link to comment
Share on other sites

Die Entfernung ist konstant und liegt bei ca. 150 m (bei Maßstab 1:1). Ich würde mich aber nicht zu sehr auf diese Zahl konzentrieren, der Wert ist mehr oder weniger zufällig gewählt und könnte sich auch ändern.

Link to comment
Share on other sites

Hallo,

nachdem die Tests mit der Anweisung :is HeadingToward () und einem zusätzlichen Gleiskontakt auch nicht zu einem zufriedenstellenden Ergebnis geführt haben,  

ist die Lösung dann doch einfacher, als ursprünglich gedacht. Direkt die Ziele aller Fahrzeuge überprüfen. Screenshot2023-07-21131550.thumb.jpg.54d8a7b2fb9f35cdfead255093fa595c.jpg 

Damit klappt es dann auch, das die Variable "Gegenverkehr" genau zwischen den beiden GK auf "true" gesetzt wird. 

Wie sagt Götz immer so schön. Manchmal denkt man "von hinten durch die Brust ins Auge".  :D  (oder war das Brummi? o.O )

VG,

Hawkeye  

Link to comment
Share on other sites

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...