Na początku była Amiga
Historia zaczęła się dawno temu. W roku 1995 Tomek Rogacewicz napisał prosty pseudosymulator tramwaju na Amigę. W gruncie rzeczy zrobił to dla zabawy, traktując projekt jako odskocznię od pisania innych gier. Program powstał w AMOS-ie, czymś w rodzaju amigowego BASIC-a – języku prostym, lecz wygodnym. Praca zajęła kilka dni, rezultat był skromny: niewyszukana grafika zawierała kilka wektorowych obiektów, proste torowisko i parę renderingów, ale dostarczył wiele radości. Prawdopodobnie nikt wtedy nie przypuszczał, że pomysł będzie miał ciąg dalszy, o wiele bardziej zaawansowany i całkiem poważny.
Ciąg dalszy nastąpił po dziesięciu latach, w roku 2005. W Katedrze Inżynierii Wiedzy na Wydziale Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej realizowano wtedy projekt „Clusterix”, finansowany z grantu Komitetu Badań Naukowych. Chodziło o stworzenie trójwymiarowej wizualizacji Gdańska na podstawie danych GIS. Tomek był wtedy odpowiedzialny za konwersję danych o drogach i torach oraz ich wizualizację. Mimo że założenia projektu nie przewidywały odwzorowania ruchu ulicznego, umieścił w programie model jeżdżącego tramwaju – i tak się zaczęło po raz drugi. Tym razem pod ręką były poważne narzędzia w rodzaju środowiska graficznego OpenGL, przyzwoitej klasy pecety, inna była też motywacja: Tomek powiązał projekt ze swoją pracą doktorską.
W kwietniu roku 2006 nad symulującym sieć tramwajową programem Advanced Tram Simulator pracowało już kilka osób. Oprócz Tomasza Edwarda Rogacewicza oprogramowaniem symulacji jazdy zajął się Paweł Rogacewicz, a Maciej Górowski, wtedy student Wydziału Form Przemysłowych krakowskiej Akademii Sztuk Pięknych, rozpoczął budowę makiety kabiny tramwaju Bombardier NGT6. Program nadzorujący działanie kabiny zaczął pisać Tomasz Ozon. Założenia były ambitne: stworzyć symulator wiernie oddający realia jazdy tramwajem NGT6, bez wykorzystania części fabrycznych. Jakość odwzorowania miała być wystarczająco dobra, aby umożliwić zastosowanie symulatora w procesie szkolenia kandydatów na motorniczych. Kabina miała współpracować z ATS, który udowodnił swoją uniwersalność: pierwotnie, w wersji czysto programowej, symulował najbardziej rozpowszechniony w Polsce tramwaj typu 105N, tymczasem w Krakowie miał posłużyć do symulacji jazdy stosunkowo nowym tramwajem NGT6 (pierwsze jazdy odbyły się w grudniu 1999 roku).
I powstał interfejs
Historia budowy repliki kabiny NGT6 mogłaby wystarczyć do napisania osobnego artykułu. Maciej Górowski przyjął zasadę, że nie będzie korzystał z oryginalnych części tramwaju. Wszystkie elementy konstrukcyjne kabiny, pulpity, przyciski, manipulatory, przełączniki i nastawnik jazdy oraz nawrotnik wykonał własnoręcznie ze sklejki, tworzywa sztucznego i metalu. Dokumentację projektową sporządził na podstawie szkiców i fotografii wykonanych w kabinie prawdziwego tramwaju jeżdżącego w krakowskim Miejskim Przedsiębiorstwie Komunikacyjnym. Efekt robi wrażenie. Tym bardziej że Maciek zadbał również o odtworzenie dźwięków wydawanych przez poszczególne urządzenia: dzwonek, buczki sygnalizacyjne, nawiewy, piasecznicę, hamulce szynowe, przetwornicę. Praca nad kabiną trwa do dziś: ciągle powstają nowe elementy (ostatnio atrapa radiotelefonu i sterownika zapowiedzi głosowych).
Osobna kwestia to odtworzenie zachowania kabiny: zależności logicznych i czasowych pomiędzy poszczególnymi urządzeniami służącymi do sterowania tramwajem. To działka Tomasza Ozona. Prostsze funkcje (na przykład migające kierunkowskazy) zostały zrealizowane sprzętowo, za pomocą prostych układów logicznych. Pełną funkcjonalność zapewnia system złożony ze sterownika opartego na dwóch mikrokontrolerach Atmel oraz komputera PC działającego pod kontrolą Linuksa. Sterownik sprzętowy ma kilkadziesiąt analogowych i cyfrowych wyjść/wejść służących do sterowania wszystkimi elementami kabiny, komunikuje się z komputerem przy użyciu interfejsu RS-232. Jest to w zasadzie „inteligentna” karta I/O. Oprogramowanie sterownika i komputera zostało napisane w języku C.
Komputer sterujący kabiną komunikuje się za pośrednictwem sieci LAN opartej na protokołach TCP/IP z serwerem (drugim PC), na którym działa program symulacji jazdy. Kabina może funkcjonować samodzielnie, ale nie wszystkie opcje są wtedy dostępne – symulator jest dostępny w trybie demonstracyjnym, pozwalającym zapoznać się z rozkładem przycisków i urządzeń sterujących oraz ich działaniem. Po połączeniu z serwerem symulacji wpływ na zachowanie kabiny mają symulowane zdarzenia (prędkość tramwaju, zjawiska atmosferyczne, zjawiska ruchowe, pasażerowie itd.). Na przykład nie można otworzyć drzwi podczas jazdy ani zamknąć ich, jeśli zostanie przytrzaśnięty pasażer. Kiedy tramwaj wpada w poślizg na mokrych torach, w kabinie zostaje włączony element symulujący dźwięk pracującej piasecznicy (tak jak w rzeczywistym wagonie). Migające na zewnątrz rzeczywistej kabiny kierunkowskazy są widoczne, jeśli w symulacji zostanie włączony widok z lusterka wstecznego. Symulowany opad deszczu pogarsza widoczność przez przednią szybę. Można ją poprawić, włączając prawdziwą wycieraczkę. Efekt jest taki, jakby szyba została oczyszczona z wody. Wirtualni pasażerowie mogą nacisnąć przycisk „przystanek na żądanie” albo włączyć hamulec bezpieczeństwa. Wtedy odpowiednie lampki i komunikaty na wyświetlaczu komputera pokładowego tramwaju informują motorniczego o zaistniałych zdarzeniach. Dokładny opis konstrukcji i kronikę budowy kabiny można znaleźć na stronie www.transportszynowy.pl
Uliczne życie sztucznej inteligencji
Użycie skomplikowanych algorytmów sztucznej inteligencji i ich optymalizacja opłaciły się: podczas testów okazało się, że 100 tysięcy wirtualnych przechodniów może poruszać się w przestrzeni symulacji z prostą detekcją kolizji. To znaczy, że można przedstawić w czasie rzeczywistym ruch wszystkich mieszkańców miasta wielkości Elbląga. Każdemu można przypisać imię i nazwisko, określić jego charakter i zachowanie w ruchu ulicznym. Na potrzeby symulatora powstał język skryptowy opisujący zachowanie się modeli, pozwalający na programowanie zdarzeń, które nie były planowane w programie głównym.
Program symulacji jazdy jest pisany w języku C++, w pełni obiektowo i dynamicznie. Cały czas jest rozwijana fizyka symulacji (na razie nie jest wykorzystywana żadna zewnętrzna biblioteka). Trójwymiarowy świat w Advanced Tram Simulator ma żyć swoim życiem, z naciskiem na algorytmy sztucznej inteligencji, co w połączeniu z możliwością kreowania wydarzeń i grafiką 3D (z animacją szkieletową) powinno zapewnić bardzo realistyczne wrażenia. Tym bardziej że symulatory można łączyć tak, aby w tej samej przestrzeni symulacji poruszało się więcej pojazdów sterowanych przez użytkowników.
Wizja
Obraz wirtualnego otoczenia tramwaju jest wyświetlany na ekranie ustawionym przed kabiną. Sposób wyświetlania obrazu oraz liczba rzutników i ekranów są w pełni konfigurowalne. Można dokładać tandemy: komputer + rzutnik, zwiększając pole widzenia, nawet do 360 stopni, co pozwala uzyskać efekt całkowitego „zanurzenia” w wizualizacji (cave). Można też dodawać wyświetlacze LCD spełniające rolę lusterek, które w symulatorze NGT6 będzie można regulować z kabiny.
Grafika 3D może powstać w dowolnym edytorze 3D z opcją eksportowania obiektu do uniwersalnego formatu .obj (jak: Blender, Wings 3D, Milk Shape, Lightwave 3D, Maya, 3dMax), na podstawie którego powstaje własny format ATS, .eso. Obraz jest generowany z wykorzystaniem cieniowania i w tym kierunku będą szły dalsze prace. Vertex shader będzie dbał o oświetlenie i animację szkieletową, a pixel shader – o zróżnicowanie kolorów obiektów, dodawanie zabrudzeń i generowanie kropli wody na przedniej szybie, które będzie mogła zetrzeć wirtualna wycieraczka. W planach jest również użycie geometry shadera do generowania roślinności.
Drugie życie prototypu
Prototypowy ATS pokazał możliwości symulatora, posłużył do zdobycia doświadczeń i określenia wymagań w środowisku docelowym (trenażer MPK) i w zasadzie na tym jego rola mogłaby się zakończyć, ponieważ zespół przyjął metodę tworzenia oprogramowania z odrzuceniem prototypu. Na szczęście dla aplikacji okazało się, że wzbudziła spore zainteresowanie wśród fanów komunikacji tramwajowej. ATS został udostępniony na stronie www.ats.d6team.pl i zaczął żyć własnym życiem. Miłośnicy tramwajów tworzą nowe modele pojazdów i innych obiektów, przemalowują istniejące wagony. Nowe trasy są tworzone za pomocą programu Rainsted – edytora scenerii realistycznych, napisanego przez Rafała Adamskiego. Można testować zaczątek modelu rzeczywistej trasy Górnośląskiego Okręgu Przemysłowego – największej sieci tramwajowej w Polsce. Trwają prace nad nowym edytorem TramCAD i nowym systemem obiektów wraz z torowiskiem. Powstała aplikacjaTrams, namiastka symulatora z widokiem z dalszej perspektywy, w której można przetestować trasy zaprojektowane za pomocą TramCAD. Słowem: dzieje się dużo dobrego.
Tułaczka i nadzieje
Duże rozmiary i spora masa kabiny utrudniają transport i przechowywanie urządzenia. Muszą się z tym liczyć ewentualni naśladowcy, szczególnie ci, którzy chcieliby zbudować podobne urządzenie we własnym mieszkaniu. To spory mebel i na etapie projektu warto przewidzieć możliwość podzielenia go na mniejsze bloki, możliwe do przeniesienia bez użycia wózka widłowego czy samochodu z platformą samozaładowczą.
Pierwsze prace nad makietą były prowadzone w pomieszczeniach krakowskiej Akademii Sztuk Pięknych, później symulator wędrował kolejno do Muzeum Inżynierii Miejskiej i Miejskiego Przedsiębiorstwa Komunikacyjnego, a ostatnio przygarnął go Instytut Pojazdów Szynowych Politechniki Krakowskiej. W międzyczasie kabina była pokazywana w 2008 roku na wystawie z okazji „Dni Ziemi”, później – podczas Dnia Otwartego zajezdni „Podgórze”, a ostatnio oglądali ją uczestnicy konferencji zorganizowanej przez Izbę Gospodarczą Komunikacji Miejskiej. Ten pokaz był bardzo ważny, bo odbył się tuż po prezentacji oferty symulatorów jazdy autobusem francuskiej firmy CORYS T.E.S.S. Francuzi może i nie byli przerażeni konkurencją, ale dokładnie obejrzeli krakowski symulator i sprawiali wrażenie zaskoczonych.
Co dalej?
Od czasów Amigi minęła epoka. Dla twórców symulatora to były lata zdobywania doświadczeń i zaprawiania się w cnocie cierpliwości i konsekwencji. Programiści: Tomasz Ozon, Tomasz Rogacewicz, Paweł Rogacewicz, zdobyli bogate doświadczenie i konsekwentnie rozwijają się w wybranym przed laty kierunku. Maciej Górowski został projektantem, opracowuje koncepcje kabin lokomotyw.
Symulator NGT6 od początku był finansowany wyłącznie z własnych środków, co nie znaczy, że zespół nie podejmował prób zainteresowania nim potencjalnych użytkowników komercyjnych. Prowadzono rozmowy z krakowskim MPK, kabina przez pewien czas stała w hali zajezdni tramwajowej „Podgórze”, ale do dzisiaj Ośrodek Szkolenia nie podjął decyzji o wprowadzeniu zajęć na symulatorze do planu szkolenia kandydatów na motorniczych.
Konstruktorzy są przekonani, że kompletny symulator albo poszczególne rozwiązania opracowane podczas pracy nad kabiną i ATS znajdą zastosowanie w następnych projektach: własnych albo prowadzonych przez firmy budujące symulatory.