Ресейлік теміржол симуляторы (RRS): алғашқы көпшілікке арналған шығарылым

Мен күткен күн келді, мен бұл дамуды ұсына аламын. Жоба осыдан тура бір жыл бұрын, кем дегенде 1 жылдың 2018 қыркүйегінде басталды Gtihub жүйесіндегі RRS репозиторийлері бірінші тапсырманың дәл осы күні бар.

Ростов бас станциясындағы жолаушылар пойызы (басуға болады)

Ресейлік теміржол симуляторы (RRS): алғашқы көпшілікке арналған шығарылым

RRS дегеніміз не? Бұл 1520 мм калибрлі жылжымалы құрамның ашық кросс-платформалық тренажеры. Оқырманда «Кешіріңіз, егер коммерциялық және ашық теміржол тренажерларының саны жеткілікті болса, бұл жоба не үшін қажет?» деген сұрақты қояды. Бұл сұраққа жауап алу үшін мен мысықтың астына қарауды ұсынамын

Жобаның тарихы

Бір кездері 2001 жылы жарық көрді Microsoft Train Simulator (MSTS), бұл біздің елімізде үлкен теміржолшылар қауымдастығын тудырды. Бұл жоба өмір сүрген бірнеше жыл ішінде (Microsoft оны тастап, ол үшін қызықты нәрселерге көшкенге дейін, мысалы, Nokia-ның банкротқа ұшырауы және т. сценарийлер.

MSTS негізінде кейіннен басқа да бірқатар жобалар жасалды, мысалы OpenRails, RTrainSim (RTS) және басқа да толықтырулар мен туындылар. Атақты сияқты коммерциялық жобалар да пайда болды Трайнц. Және бәрі жақсы болар еді, бірақ теміржол көлігінің көптеген жанкүйерлері бұл өнімдерге объективті себептермен қанағаттанбайды - олар посткеңестік кеңістікте пайдаланылатын және дамыған отандық жылжымалы құрамның ерекшеліктерін ешбір түрде көрсетпейді. Бұл әсіресе пойыздың тежегіштерінің қалай жүзеге асырылатынын қарастырған кезде өте өткір - аталған жобалардың ешқайсысында Матросов жүйесінің автоматты тежегіштерін қалыпты енгізу жоқ немесе болмайды.

2008 жылы соншалықты алыс емес жылы тағы бір жоба пайда болды - ZDSimulator, Вячеслав Усов әзірлеген. Бастапқыда ресейлік калибрлі жылжымалы құрамға баса назар аудара отырып, жоғарыда айтылған кемшіліктерді ескеріп, түзететін жоба ерекше. Бірақ бір үлкен «бірақ» бар - жоба меншікті және жабық, архитектуралық тұрғыдан өзінің жылжымалы құрамын енгізуге мүмкіндік бермейді.

Мен өзім теміржол тақырыбына 2007 жылы жұмыс істей бастағанда келдім АҚ ВЕЛЬНИИ, ғылыми қызметкер ретінде және 2008 жылы кандидаттық диссертациясын қорғағаннан кейін аға ғылыми қызметкер ретінде. Сол кездегі теміржол симуляциялық ойындарының соңғы жетістіктерімен сол кезде таныстым. Маған көргенім ұнамады, және ZDSimulator жобасы ол кезде болған жоқ. Кейін жылжымалы құрамның динамикасына таң қалып, мен Ростов мемлекеттік көлік университетіне келдім (RGUPS) жүк пойызының тежеу ​​динамикасы бойынша докторлық диссертация тақырыбымен. Бүгінгі таңда университетіміздің теміржол көлігінің оқу-жаттығу кешендерін дамытуға жетекшілік етіп, «Тартымды жылжымалы құрам» кафедрасында арнайы пәндерден сабақ беремін.

Жоғарыда айтылғандардың барлығына байланысты, оған арналған қосымшаны әзірлеушіге жылжымалы құрамда болып жатқан физикалық процестерді толық бақылауға мүмкіндік беретін тренажер жасау идеясы пайда болды. Orbiter ғарыштық тренажерына ұқсас, мен бір кездері R-7 негізіндегі зымыран тасығыштардың отбасы түріндегі қосымшаны әзірледім. Бір жыл бұрын мен осы жұмысқа кірісіп кеттім. 26 жылдың 2018 ​​желтоқсанында мұнда жарық көрді бұл технология демонстрациясы.

Менің жұмысымды әуесқойлар байқады және ZDsimulator үшін көрнекі мазмұнды жасаушы теміржолшылар үйірмесіне танымал болды. Роман Бирюков (Ромич Ресей темір жолдары) жобаны одан әрі дамытуда маған көмек пен ынтымақтастықты ұсынды. Кейінірек бізге басқа әзірлеуші ​​қосылды - Александр Мищенко (Уловский 2017), ZDsimulator үшін маршрут жасаушы. Біздің ынтымақтастығымыз бізді алғашқы шығарылымымызға әкелді. Бейнеде ойынның алғашқы шығарылымында қалай көрінетіні туралы қысқаша шолу көрсетілген

RRS симуляторының мүмкіндіктері

Біріншіден, бұл ашық бағдарламалық жасақтама архитектурасы. Тренажер коды ашық екенін айтпағанда, оған үшінші тарап қондырмаларын әзірлеушілерге бағытталған API және SDK бар. Кіру кедергісі өте жоғары - C++ дамытудың негізгі дағдылары қажет. Тренажер оған GCC компиляторын және оның Windows операциялық жүйесіне арналған MinGW нұсқасын пайдаланып жазылған. Сонымен қатар, әзірлеушіге Qt құрылымымен таныс болғаны жөн, өйткені оның көптеген тұжырымдамалары ойын архитектурасының негізінде жатыр.

Дегенмен, мұқият және тілекпен бұл жоба қосымша әзірлеушіге үлкен мүмкіндіктер ашады. Жылжымалы құрам динамикалық кітапханалар негізінде модульдер түрінде жүзеге асырылады. Тренажердегі негізгі құрылымдық элемент жылжымалы құрамның бірлігі болып табылады, немесе жылжымалы қондырғы (MU) - вагон (өзі жүрмейтін немесе көп агрегаттық пойыздың бөлігі ретінде) немесе локомотив бөлігі. API доңғалақ жинағының бұрыштық жылдамдығын, сондай-ақ контактілер желісіндегі кернеу мен ток түрі сияқты сыртқы параметрлерді қабылдауға жауап ретінде PE доңғалақ жинақтарына қолданылатын моментті орнатуға мүмкіндік береді. Тренажер басқа ештеңе білмейді және білгісі келмейді, бұл ішкі жабдықтың физикасын белгілі бір локомотив немесе вагон жасаушының санасына қалдырады.

Мұндай салыстырмалы түрде төмен деңгейлі тәсіл локомотив тізбегінің ең кішкентай нюанстарын жүзеге асыруға мүмкіндік беретінін болжау қиын емес. Сонымен қатар, тренажер жинағы отандық жылжымалы құрамда орнатылған стандартты жабдықтың жиынтығын қамтиды: машинисттік пойыз кранының конв. № 395, ауа таратушы жағдайы. № 242, қосалқы тежегіш клапанның жағдайы. No 254 және тежегіш жабдығының басқа элементтері. Қосымшаны әзірлеушіге бұл элементтерді белгілі бір локомотивтің немесе вагонның пневматикалық тізбегіне қосу ғана қажет. Сонымен қатар, өзіңіздің аппараттық бірліктерді жасауға арналған API бар.

Архитектуралық тұрғыдан RRS екі негізгі процестің өзара әрекеттесуіне негізделген

  • симулятор — поездың физикалық динамикалық қозғалтқышы TrainEngine 2. Көптеген сыртқы факторларды ескере отырып, қозғалыстағы агрегаттардың байланыстыру құрылғылары арқылы өзара әрекеттесуін ескере отырып, пойыздар қозғалысы физикасын жүзеге асырады, жылжымалы құрам жабдығының жұмыс физикасын жүзеге асыратын сыртқы модульдерден келетін деректерді өңдейді.
  • көрермен — графикалық қозғалтқыштың негізінде құрастырылған пойыз қозғалысын визуализациялайтын графикалық ішкі жүйе OpenSceneGraph

Бұл ішкі жүйелер Qt құрылымының QSharedMemory класы негізінде жүзеге асырылатын ортақ жады арқылы бір-бірімен әрекеттеседі. Бірінші демонстрациялар розеткаға негізделген IPC қолданылды және болашақта тренажердің кейбір бөліктерін нақтылауды және болашаққа деген қажеттіліктерді ескере отырып, бұл технологияға қайта оралу жоспарлануда. Ортақ жадқа көшу белгілі бір дәрежеде өзінің пайдалылығын ұзартқан мәжбүрлі шара болды.

Мен нюанстарды сипаттамаймын - бұл жобаны дамытудың көптеген ауытқулары ресурстағы жарияланымдарымда көрсетілген, атап айтқанда, менде жеткілікті кең. OpenSceneGraph қозғалтқышындағы оқулықтар сериясы, бұл жобада жұмыс істеу тәжірибесінен пайда болды.

Жобада бәрі біз қалағандай тегіс емес. Атап айтқанда, графикалық ішкі жүйе көрсету сапасы жағынан мінсіз емес, ал SIM-картаның өнімділігі көп нәрсені қажет етеді. Бұл шығарылымның бір мақсаты бар - теміржол көлігі энтузиастары қауымдастығын жобамен таныстыру, оның мүмкіндіктерін сипаттау және соңында қосымша әзірлеушілерге арналған жетілдірілген API бар ашық, кросс-платформалық теміржол тренажерін жасау.

Болашағы

Келешектер сізге, біздің қымбатты болашақ пайдаланушыларымыз бен әзірлеушілерімізге байланысты. Жоба ашық және бар ресми сайтсимуляторды қай жерден жүктеп алуға болады құжаттама, оның құрамы үздіксіз толықтырылып отырады. Бар форум жоба, ВК тобымен youtube арнасы, онда сіз ең егжей-тегжейлі кеңес пен көмек ала аласыз.

Назарларыңызға рахмет!

Ақпарат көзі: www.habr.com

пікір қалдыру