Russian Railway Simulator (RRS): lehen argitalpen publikoa

Iritsi da itxaroten nuen eguna, azkenean garapen hau aurkeztu ahal izateko. Proiektua orain dela urtebete hasi zen zehazki, 1ko irailaren 2018ean, behintzat Gtihub-en RRS biltegiak lehen konpromisoak data hori du zehazki.

Bidaiarien trena Rostoveko geltoki nagusian (klikatu daiteke)

Russian Railway Simulator (RRS): lehen argitalpen publikoa

Zer da RRS? Hau 1520 mm-ko zabalerako material mugikorren plataforma gurutzatutako simulagailu irekia da. Irakurleak berez egingo du galdera: “Barkatu, zertarako da proiektu hau, baldin eta trenbide-simulagailu kopuru nahikoa badago, komertzialak zein irekiak?”. Galdera honi erantzuna emateko, katuaren azpian begiratzea proposatzen dut

Proiektuaren historia

Bazen behin, 2001ean, argitaratu zen Microsoft Train Simulator (MSTS), eta horrek gure herrian trenbide-simmer komunitate erraldoi bat sortu zuen. Proiektu hau egon zen hainbat urtetan (Microsoftek bertan behera utzi zuen arte, gauza interesgarriagoetara pasatuz, Nokiaren porrota, etab.), proiektuak horretarako sortutako gehigarri ugari eskuratu zituen: ibilbideak, material mugikorra, eszenatokiak.

MSTSn oinarrituta, beste hainbat proiektu sortu ziren gero, hala nola OpenRails, RTrainSim (RTS) eta beste gehigarri eta eratorri batzuk. Proiektu komertzialak ere agertu ziren, famatuak adibidez Trainz. Eta dena ondo legoke, baina trenbide-garraioaren zale asko ez daude produktu hauekin nahiko arrazoi objektiboengatik - ez dute inola ere islatzen sobietar osteko espazioan ustiatu eta garatutako etxeko material mugikorren berezitasunak. Hau bereziki larria da trenen balaztak nola ezartzen diren aztertzean - zerrendatutako proiektuetako batek ere ez du Matrosov sistemaren balazta automatikoen ezarpen normalrik izango edo izango.

2008ko urte ez hain urrunean, beste proiektu bat agertu zen - ZDSimulator, Vyacheslav Usovek garatua. Proiektua nabarmena da, goian aipatutako gabeziak kontuan hartu eta zuzentzen dituelako, hasieran Errusiako zabalera duen material mugikorrari arreta jarriz. Baina "baina" handi bat dago: proiektua jabeduna eta itxia da, arkitektura aldetik ez du bere material mugikorra sartzea ahalbidetzen.

Ni neu 2007an heldu nintzen trenbidearen gaira, lanean hasi nintzenean JSC VELNII, ikertzaile gisa, eta 2008an bere doktoretza tesia defendatu ondoren, ikertzaile senior gisa. Orduan ezagutu nituen garai hartan trenbide-simulazio-jokoen alorreko azken lorpenak. Eta ez zitzaidan gustatu ikusitakoa, eta ZDSimulator proiektua ez zegoen garai hartan. Geroago, material mugikorren dinamikak liluratuta, Rostoveko Garraioen Estatuko Unibertsitatera etorri nintzen (RGUPS) merkantzia-tren baten balazta-dinamikari buruzko doktorego-tesiaren gaiarekin. Gaur egun, gure unibertsitaterako trenbide-garraioko prestakuntza-konplexuen garapena zuzentzen dut eta diziplina espezializatuak irakasten ditut Trakzio-Material Rodanteen Sailean.

Aurreko guztiarekin lotuta, simulagailu bat sortzearen ideia sortu zen, gehigarri baten garatzaileari material mugikorra gertatzen diren prozesu fisikoen kontrol osoa lortu ahal izateko. Orbiter espazio-simulagailuaren antzekoa, eta behin R-7-n oinarritutako abiarazte-ibilgailuen familia baten formako gehigarri bat garatu nuen. Duela urtebete lan hau hartu eta horretara bota nuen. 26ko abenduaren 2018ak ikusi zuen argia hemen teknologia demo hau.

Nire lana zaletuek nabaritu zuten, eta trenbide simmers zirkuluetan ezaguna zen, ZDsimulator-eko eduki bisualen sortzailea. Roman Biryukov (Romych Errusiako Trenbideak) laguntza eta lankidetza eskaini zidan proiektua garatzeko. Geroago beste garatzaile bat sartu zen gurekin - Alexander Mishchenko (Ulovskii2017), ZDsimulator-erako ibilbide-sortzailea. Gure kolaborazioak gure lehen bertsiora eraman gintuen. Bideoak jokoak bere lehen bertsiorako itxuraren ikuspegi orokorra erakusten du

RRS simulagailuaren ezaugarriak

Lehenik eta behin, software irekiko arkitektura bat da. Simulagailuaren kodea irekita dagoela aipatu gabe, hirugarrenen gehigarrien garatzaileei zuzendutako API eta SDK bat dago. Sarrera-hesia nahiko altua da - oinarrizko C++ garapenerako trebetasunak behar dira. Simulagailua bertan idatzita dago, GCC konpilatzailea eta bere MinGW aldaera Windows sistema eragilerako. Horrez gain, garatzaileak Qt esparrua ezagutzea komeni da, bere kontzeptu asko jokoaren arkitekturaren azpian daudelako.

Hala ere, behar bezalako ardura eta gogoarekin, proiektu honek aukera izugarriak irekitzen dizkio gehigarrien garatzaileari. Material mugikorra liburutegi dinamikoetan oinarritutako modulu moduan inplementatzen da. Simulagailuko egitura-elementu nagusia material mugikorren unitatea da, edo unitate mugikorra (MU) - bagoia (autopropultsatua ez dena edo unitate anitzeko tren baten zati gisa) edo lokomotora baten atal bat. API-k PE gurpil-multzoei aplikatutako momentua ezartzea ahalbidetzen du, gurpil-multzoen abiadura angeluarra jasoz, baita kanpoko parametroak ere, kontaktu sareko tentsioa eta korronte-mota, esaterako. Simulatzaileak ez daki beste ezer eta ez du jakin nahi, eta horrek barne-ekipoaren fisika uzten du lokomotora edo auto jakin baten garatzailearen kontzientziaren esku.

Ez da zaila asmatzea maila baxuko hurbilketa horrek lokomotora zirkuituaren ñabardura txikienak ezartzea ahalbidetzen duela. Horrez gain, simulagailu-kitak etxeko material ibiltariaren gainean instalatutako ekipamendu estandar multzo bat biltzen du: gidariaren tren-garabia konv. 395. zenbakia, aire banatzailearen egoera. 242. zenbakia, balazta balbula osagarriaren egoera. 254. zenbakia eta balazta-ekipoen beste elementu batzuk. Gehigarriaren garatzaileak elementu horiek lokomotora edo auto zehatz baten zirkuitu pneumatikora konektatu besterik ez ditu behar. Horrez gain, zure hardware unitateak sortzeko API bat dago.

Arkitektorikoki, RRS bi prozesu nagusiren elkarrekintzan oinarritzen da

  • Simuladorea — Trenaren dinamika fisikoaren motor TrainEngine 2. Trenaren mugimenduaren fisika inplementatzen du, kanpoko faktore asko kontuan hartuta, akoplamendu gailuen bidez higitzen diren unitateen elkarrekintza kontuan hartuta, material gurpildun ekipoen funtzionamendu fisika ezartzen duten kanpoko moduluetatik datozen datuak prozesatzen ditu.
  • ikusle — Trenaren mugimendua ikusarazten duen azpisistema grafikoa, motor grafiko batean oinarrituta eraikia OpenSceneGraph

Azpisistema hauek elkarren artean elkarreragiten dute partekatutako memoriaren bidez, Qt esparruko QSharedMemory klasean oinarrituta ezarrita. Lehenengo demoak socket-en oinarritutako IPC erabili zuen, eta etorkizunean teknologia horretara itzultzeko asmoa dago, simulagailuaren zati batzuen fintasuna eta beharrak etorkizunera begira kontuan hartuta. Memoria partekaturako trantsizioa, neurri batean, bere erabilgarritasuna gainditu duen neurri behartu bat izan zen.

Ez ditut ñabardurak deskribatuko - proiektu honen garapenaren gorabehera asko baliabideari buruzko nire argitalpenetan jada azaltzen dira, bereziki, nahiko zabala daukat. OpenSceneGraph motorrari buruzko tutorial sorta bat, proiektu honetan lan egiteko praktikatik sortu zena.

Proiektuan dena ez da nahiko genukeen bezain leuna. Bereziki, grafikoen azpisistema ezin hobea da errendatze-kalitateari dagokionez, eta sim-aren errendimenduak asko uzten du. Argitalpen honek helburu bat du: trenbide-garraioaren zaleen komunitatea proiektua aurkeztea, bere gaitasunak deskribatzea eta, azkenik, plataforma anitzeko trenbide-simulatzaile ireki bat sortzea, gehigarrien garatzaileentzako API aurreratu batekin.

Itxaropenak

Itxaropenak zuregan daude, gure etorkizuneko erabiltzaile eta garatzaile maiteok. Proiektua irekia da eta existitzen da web ofizialahortik deskarga dezakezu simulagailua dokumentazioa, zeinaren osaera etengabe berrituko da. Existitzen da foroa proiektua, VK taldeaEta YouTube kanala, non aholkularitza eta laguntza zehatzena lor dezakezu.

Eskerrik asko zure arreta!

Iturria: www.habr.com

Gehitu iruzkin berria