Autor Wątek:  Ukresy  (Przeczytany 3980 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Ukresy
« dnia: 08 Lipca 2012, 13:26:08 »
Jedną z rzeczy, które nie są zrobione porządnie (albo prawie wcale) są ukresy (W17). Ukres to miejsce, w którym skład się powinien zatrzymać przed rozjazdem albo skrzyżowaniem torów tak, aby nie kolidować z ruchem na sąsiednim torze.

Najbliższy funkcjonalnie ukresowi obiekt to zatrzymanie przy peronie (W4). W4 działa w ten sposób, że na podstawie rozkładu ustalana jest nazwa stacji/przystanku, której W4 mają być widoczne. Wszystkie inne, niepasujące do nazwy w rozkładzie będą ignorowane. W4 posiada event PutValues, z komendą PassengerStopPoint:*, zawierającą nazwę stacji/przystanku. Nazwa eventu musi być unikalna na scenerii, ponieważ istotne są współrzędne W4. Z kolei nazwa stacji musi być identyczna we wszystkich W4 na całej stacji. Zostało to rozwiązane poprzez użycie znaku # w nazwie eventu oraz w komendzie, przy czym w komendzie znaki od # są automatycznie ignorowane. W4 musi być oddzielny dla każdego toru, ponieważ określa również z której strony toru znajduje się peron (które drzwi otworzyć). Przykład zastosowania aktywnych W4 i ruch AI z uwzględnieniem W4 można prześledzić na scenerii Quark z PC2011.

W17 lepiej by było przypisywać od razu do obu sąsiednich torów, dzięki czemu będzie mniej eventów. Obecna wersja AI rzutuje sobie wszelkie sygnały na swoją trajektorię ruchu, więc odległość sygnału (miejsca wstawienia XYZ eventu) od osi toru nie ma znaczenia.

Osobną kwestią jest zaprogramowanie AI, żeby wiedziało, jak ma się zatrzymać względem ukresów. Tzn. czy tylko wjechać za ukres, czy dojechać do następnego. W szczególnym przypadku, co zrobić, jeśli skład jest dłuższy niż dostępny tor (np. przejechać za semafor aż do ukresu).

Kolejna kwestia jest taka, że ukresy powinny zawierać informację o torach, przy których się znajdują, aby AI podczas manewrów mogło określić, na którym jest torze. Można by utworzyć komendę FoulingPoint:* (z nazwą stacji i unikalnym numerem po znaku #), a jako parametry liczbowe podać numery torów po lewej i prawej stronie.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline Ra

  • Zasłużony dla Symulatora
  • Wiadomości: 6308
  • Ostatni gasi światło...
    • Zobacz profil
    • Instalator+Starter+Edytor
  • Otrzymane polubienia: 337
Odp: Ukresy
« Odpowiedź #1 dnia: 30 Stycznia 2013, 01:36:09 »
Po przemyśleniu, moja propozycja jest taka, żeby zrobić to na 3 sposoby.

1. Wersja uproszczona do ogólnego stosowania. We wpisie toru dodajemy parametr fouling1 albo fouling2, w znaczeniu takim, jak event1/event2, tylko zamiast nazwy eventu podajemy nazwę modelu W17. Odpowiedni event PutValues utworzy się niejawnie i będzie widoczny podczas skanowania. Nazwa modelu musi być unikalna, aby AI mogło policzyć odległość.

2. Wersja standardowa. We wpisie toru używamy event1 albo event2 z nazwą eventu PutValues, zawierającego komendę FoulingPoint. Event powinien być tworzony przez plik INC i być ustawiony w tym samym miejscu, co model W17. Jest to bardziej kłopotliwa wersja niż poprzednia, bo raz, że trzeba tworzyć dodatkowe eventy, których mogą być tysiące, to jeszcze blokuje to możliwość odczytu semafora albo Tm na takim torze (trzeba by namnażać odcinki). Niemniej w niektórych sytuacjach może być przydatne, np. gdy samego modelu nie będzie.

3. Wersja specjalna. Zamiast wskazywać konkretny punkt można by też wskazać tor, z którym następuje konflikt. Można by użyć foulingtrack1 albo foulingtrack2, podając nazwę toru jako parametr. Było by to przydatne w szczególności na skrzyżowaniach torów, a także na przejazdach. Współrzędne ukresu były by wyliczane odpowiednim algorytmem, aczkolwiek nie przeszkadzało by to użyć jednej z wspomnianych wcześniej metod. Informacja o przecinanym torze/drodze była by przydatna dla AI przy jeździe na widoczność. Pozwalała by też uprościć konstrukcję przejazdów, zwłaszcza takich bez infrastruktury (nie potrzebne by były komórki pamięci zatrzymujące samochody oraz odcinki izolowane do ich sterowania).


W ramach rozbudowy jazdy na widoczność, zamierzam umieszczać w torach znacznik czasu, ustawiany na aktualny czas przez dokonujący skanowania jadący pojazd. Wszelkie inne AI, znajdując w odcinku znacznik czasu nie starszy niż 10 sekund, uważałyby odcinek za zajęty. Pojazdy stojące nie zapisywały by znacznika czasu podczas skanowania, aby nie rezerwować niepotrzebnie drogi, której nie potrzebują do hamowania. W przypadku połączenia przez foulingtrack1/foulingtrack2 AI musiało by również sprawdzać znacznik czasu na przecinającym odcinku.
¯\_( ͡° ͜ʖ ͡°)_/¯ Ra

Polecam: kręgarz Wojciech Walczak, projekt masarni

Offline popatrz

  • Wiadomości: 588
    • Zobacz profil
  • Otrzymane polubienia: 2
Odp: Ukresy
« Odpowiedź #2 dnia: 30 Stycznia 2013, 02:51:50 »
Ad.2
blokuje to możliwość odczytu semafora albo Tm na takim torze (trzeba by namnażać odcinki).
Tak, już teraz są takie sytuacje gdy trzeba wstawić osobny event do W4 i osobny do sygnalizatora. Niekiedy miejsca zaczyna brakować.
Niemniej w niektórych sytuacjach może być przydatne, np. gdy samego modelu nie będzie.
Może pominąć ten sposób i skorzystać z trzeciego sposobu, rozjazd w sumie jest takim miejscem kolizyjnym, na podstawie którego można miejsce zatrzymania wyliczyć/oszacować (?). Więc chyba wtedy powinien być foulingtrack1/foulingtrack2/foulingtrack3 z nazwą rozjazdu wpisany w torze stykającym się z rozjazdem, a w rozjeździe trzy parametry-nazwy torów przyległych podane w odpowiedniej kolejności., Wtedy AI będzie wiedziało od której strony dojeżdża do rozjazdu i jakie tory ma sprawdzać.
Jeśli to wyda się zbyt uciążliwe dla kogoś, to użyje alternatywnego sposobu 1 z modelem widocznym lub nie.

  Dodano: 30 Stycznia 2013, 03:35:10
A żeby jeszcze uprościć, to foulingtrack1 w torze przyległym do rozjazdu od strony "na ostrze" a foulingtrack2 dla torów od strony "z ostrza" . W obydwu przypadkach trzy parametry - nazwa rozjazdu i nazwy torów od strony "z ostrza". Wtedy w rozjeździe nic nie trzeba wpisywać.
« Ostatnia zmiana: 30 Stycznia 2013, 03:35:10 wysłana przez popatrz »