Ռուսական երկաթուղու սիմուլյատոր (RRS): առաջին հրապարակային թողարկում

Եկել է այն օրը, որին ես սպասում էի, երբ վերջապես կարող եմ ներկայացնել այս զարգացումը։ Նախագիծը սկսվել է ուղիղ մեկ տարի առաջ՝ առնվազն 1 թվականի սեպտեմբերի 2018-ին RRS պահեստները Gtihub-ում առաջին հանձնումն ունի հենց այս ամսաթիվը:

Մարդատար գնացք Ռոստովի գլխավոր կայարանում (կտտացնելով)

Ռուսական երկաթուղու սիմուլյատոր (RRS): առաջին հրապարակային թողարկում

Ի՞նչ է RRS-ը: Սա 1520 մմ տրամաչափի շարժակազմի բաց խաչաձև պլատֆորմային սիմուլյատոր է: Ընթերցողը, բնականաբար, հարց կտա. «Կներեք, ինչի՞ համար է այս նախագիծը, եթե կան բավարար թվով երկաթուղային սիմուլյատորներ՝ առևտրային և բաց»: Այս հարցի պատասխանի համար առաջարկում եմ նայել կատվի տակ

Նախագծի պատմություն

Ժամանակին, 2001 թվականին, այն լույս է տեսել Microsoft Train Simulator (MSTS), որը մեր երկրում առաջացրել է երկաթուղային եռացողների հսկայական համայնք։ Այս նախագծի գոյության մի քանի տարիների ընթացքում (մինչև Microsoft-ը լքեց այն՝ անցնելով իր համար ավելի հետաքրքիր բաների, օրինակ՝ Nokia-ի սնանկացումը և այլն), նախագիծը ձեռք բերեց իր համար ստեղծված մի շարք լրացումներ՝ երթուղիներ, շարժակազմ, սցենարներ.

MSTS-ի հիման վրա հետագայում ստեղծվեցին մի շարք այլ նախագծեր, ինչպիսիք են OpenRails, RTrainSim (RTS) և այլ լրացումներ և ածանցյալներ: Ի հայտ եկան նաեւ կոմերցիոն նախագծեր, ինչպիսին է հայտնի trainz. Եվ ամեն ինչ լավ կլիներ, բայց երկաթուղային տրանսպորտի շատ սիրահարներ բավարարված չեն այս ապրանքներով բավականին օբյեկտիվ պատճառներով. դրանք ոչ մի կերպ չեն արտացոլում հետխորհրդային տարածքում շահագործվող և զարգացած ներքին շարժակազմի առանձնահատկությունները: Սա հատկապես սուր է, երբ նայում ենք, թե ինչպես են իրականացվում գնացքի արգելակները. թվարկված նախագծերից և ոչ մեկը չունի և չի ունենա Մատրոսովի համակարգի ավտոմատ արգելակների նորմալ իրականացում:

Ոչ այնքան հեռավոր 2008 թվականին հայտնվեց մեկ այլ նախագիծ. ZDSsimulator, մշակված Վյաչեսլավ Ուսովի կողմից։ Նախագիծն ուշագրավ է նրանով, որ հաշվի է առնում և շտկում վերոնշյալ թերությունները՝ սկզբնական շրջանում կենտրոնանալով ռուսական ջրաչափի շարժակազմի վրա։ Բայց կա մեկ մեծ «բայց»՝ նախագիծը սեփականություն է և փակ՝ ճարտարապետորեն թույլ չտալով սեփական շարժակազմի ներդրումը։

Ես ինքս գնացի երկաթուղային թեմային 2007 թվականին, երբ սկսեցի աշխատել VELNII ԲԲԸ, որպես գիտաշխատող, իսկ 2008 թվականին թեկնածուական թեզը պաշտպանելուց հետո՝ որպես ավագ գիտաշխատող։ Հենց այդ ժամանակ ես ծանոթացա այն ժամանակվա երկաթուղային սիմուլյացիոն խաղերի ոլորտում վերջին ձեռքբերումներին։ Եվ ինձ դուր չեկավ այն, ինչ տեսա, և ZDSimulator նախագիծն այն ժամանակ գոյություն չուներ: Հետագայում, հիացած շարժակազմի դինամիկայով, ես եկա Ռոստովի պետական ​​տրանսպորտի համալսարան (RGUPS) բեռնատար գնացքի արգելակման դինամիկայի վերաբերյալ դոկտորական ատենախոսության թեմայով. Այսօր ես ղեկավարում եմ մեր համալսարանի երկաթուղային տրանսպորտի ուսումնական համալիրների զարգացումը և մասնագիտացված առարկաներ եմ դասավանդում Քարշի շարժակազմի ամբիոնում:

Վերոնշյալ բոլորի հետ կապված՝ առաջացավ սիմուլյատոր ստեղծելու գաղափարը, որը թույլ կտա դրա հավելումը մշակողին լիարժեք վերահսկողություն ձեռք բերել շարժակազմում տեղի ունեցող ֆիզիկական գործընթացների վրա: Նման է Orbiter տիեզերական սիմուլյատորին, որի համար ես մի ժամանակ մշակեցի հավելում R-7-ի վրա հիմնված մեկնարկային մեքենաների ընտանիքի տեսքով: Մեկ տարի առաջ ես վերցրեցի այս գործը և նետվեցի դրա մեջ: 26 թվականի դեկտեմբերի 2018-ը լույս տեսավ այստեղ այս տեխնոլոգիայի ցուցադրությունը.

Իմ աշխատանքը նկատվել է էնտուզիաստների կողմից և հայտնի է երկաթուղային խմիչքների շրջանակում, ZDsimulator-ի տեսողական բովանդակության ստեղծողը Ռոման Բիրյուկով (Ռոմիչ Ռուսական երկաթուղի) առաջարկեց ինձ օգնություն և համագործակցություն ծրագրի հետագա զարգացման գործում: Ավելի ուշ մեզ միացավ ևս մեկ մշակող. Ալեքսանդր Միշչենկո (Ulovskii2017), երթուղու ստեղծող ZDsimulator-ի համար: Մեր համագործակցությունը բերեց մեզ մեր առաջին թողարկմանը: Տեսանյութը ցույց է տալիս մի ակնարկ, թե ինչպես է խաղը նայում իր առաջին թողարկման համար

RRS Simulator-ի առանձնահատկությունները

Առաջին հերթին դա բաց ծրագրային ճարտարապետություն է։ Էլ չենք խոսում այն ​​մասին, որ սիմուլյատորի կոդը բաց է, կա API և SDK՝ ուղղված դրան երրորդ կողմի հավելումներ մշակողներին։ Մուտքի խոչընդոտը բավականին բարձր է՝ C++-ի զարգացման հիմնական հմտությունները պահանջվում են: Սիմուլյատորը գրված է դրանում՝ օգտագործելով GCC կոմպիլյատորը և դրա MinGW տարբերակը Windows օպերացիոն համակարգի համար: Բացի այդ, նպատակահարմար է, որ մշակողը ծանոթ լինի Qt շրջանակին, քանի որ դրա շատ գաղափարներ ընկած են խաղի ճարտարապետության հիմքում:

Այնուամենայնիվ, պատշաճ ջանասիրությամբ և ցանկությամբ այս նախագիծը հսկայական հնարավորություններ է բացում հավելյալ մշակողի համար: Շարժակազմն իրականացվում է դինամիկ գրադարանների վրա հիմնված մոդուլների տեսքով։ Հիմնական կառուցվածքային տարրը սիմուլյատորում շարժակազմի միավոր է, կամ շարժական միավոր (MU) - մեքենա (ոչ ինքնագնաց կամ որպես մի քանի միավոր գնացքի մաս) կամ լոկոմոտիվի մի հատված: API-ն հնարավորություն է տալիս սահմանել PE անիվի հավաքածուների վրա կիրառվող ոլորող մոմենտը՝ ի պատասխան ստանալով անիվի հավաքածուների անկյունային արագությունը, ինչպես նաև արտաքին պարամետրերը, ինչպիսիք են լարումը և հոսանքի տեսակը կոնտակտային ցանցում: Սիմուլյատորն այլ բան չգիտի և չի ուզում իմանալ, ինչը ներքին սարքավորումների ֆիզիկան թողնում է որոշակի լոկոմոտիվի կամ մեքենայի մշակողի խղճին:

Դժվար չէ կռահել, որ նման համեմատաբար ցածր մակարդակի մոտեցումը հնարավորություն է տալիս իրականացնել լոկոմոտիվային սխեմայի ամենափոքր նրբերանգները։ Բացի այդ, սիմուլյատորի հավաքածուն ներառում է ստանդարտ սարքավորումների մի շարք, որոնք տեղադրված են ներքին շարժակազմի վրա՝ վարորդական գնացքի կռունկի կոնվ. Թիվ 395 օդի դիստրիբյուտոր վիճակ. Թիվ 242, օժանդակ արգելակային փականի վիճակ. Թիվ 254 եւ արգելակային սարքավորումների այլ տարրեր։ Հավելվածի մշակողը պետք է միայն միացնի այս տարրերը կոնկրետ լոկոմոտիվի կամ մեքենայի օդաճնշական շղթայի մեջ: Բացի այդ, կա API՝ ձեր սեփական ապարատային միավորներ ստեղծելու համար:

Ճարտարապետական ​​առումով RRS-ը կառուցված է երկու հիմնական գործընթացների փոխազդեցության վրա

  • simulator — Ֆիզիկական գնացքի դինամիկայի շարժիչ TrainEngine 2. Իրականացնում է գնացքի շարժման ֆիզիկան՝ հաշվի առնելով բազմաթիվ արտաքին գործոններ՝ հաշվի առնելով շարժվող միավորների փոխազդեցությունը միացնող սարքերի միջոցով, մշակում է արտաքին մոդուլներից ստացվող տվյալները, որոնք իրականացնում են շարժակազմի սարքավորումների շահագործման ֆիզիկան։
  • հեռուստադիտողը — գրաֆիկական ենթահամակարգ, որը պատկերացնում է գնացքի շարժումը, որը կառուցված է գրաֆիկական շարժիչի հիման վրա OpenSceneGraph

Այս ենթահամակարգերը փոխազդում են միմյանց հետ համատեղ հիշողության միջոցով, որն իրականացվում է Qt շրջանակի QSharedMemory դասի հիման վրա: Առաջին ցուցադրություններն օգտագործում էին վարդակների վրա հիմնված IPC, և պլաններ կան ապագայում վերադառնալ այս տեխնոլոգիային՝ հաշվի առնելով սիմուլյատորի որոշ մասերի կատարելագործումը և ապագայի կարիքները: Անցումը ընդհանուր հիշողությանը որոշ չափով հարկադրված միջոց էր, որն իր օգտակարությունը գերազանցեց:

Ես չեմ նկարագրի նրբությունները. այս նախագծի զարգացման շատ շրջադարձեր արդեն ուրվագծված են ռեսուրսի վերաբերյալ իմ հրապարակումներում, մասնավորապես, ես ունեմ բավականին ընդարձակ մի շարք ձեռնարկներ OpenSceneGraph շարժիչի վերաբերյալ, որն առաջացել է այս նախագծի վրա աշխատելու պրակտիկայից:

Նախագծում ամեն ինչ այնքան հարթ չէ, որքան մենք կցանկանայինք: Մասնավորապես, գրաֆիկական ենթահամակարգը շատ հեռու է կատարյալից՝ մատուցման որակի առումով, և sim-ի կատարումը շատ ցանկալի է թողնում: Այս թողարկումն ունի մեկ նպատակ՝ ծանոթացնել երկաթուղային տրանսպորտի էնտուզիաստների համայնքին նախագծին, ուրվագծել դրա հնարավորությունները և վերջապես ստեղծել բաց, խաչմերուկային երկաթուղային սիմուլյատոր՝ առաջադեմ API-ով հավելյալ մշակողների համար:

Հեռանկարները

Հեռանկարները կախված են ձեզանից՝ մեր սիրելի ապագա օգտագործողներից և մշակողներից: Նախագիծը բաց է և գոյություն ունի Պաշտոնական կայքորտեղից կարող եք ներբեռնել սիմուլյատորը փաստաթղթեր, որի կազմը շարունակաբար համալրվելու է։ Գոյություն ունի форум նախագիծ, VK խումբԻսկ youtube ալիք, որտեղ կարող եք ստանալ առավել մանրամասն խորհրդատվություն և օգնություն:

Շնորհակալություն ձեր ուշադրության համար:

Source: www.habr.com

Добавить комментарий