Frá eldflaugum til vélmenna og hvað hefur Python með það að gera. Saga GeekBrains alumni

Frá eldflaugum til vélmenna og hvað hefur Python með það að gera. Saga GeekBrains alumni
Í dag erum við að birta söguna um umskipti Andrey Vukolov yfir í upplýsingatækni. Æskuástríðu hans fyrir geimnum leiddi hann einu sinni til að læra eldflaugavísindi við MSTU. Hinn harki raunveruleiki fékk mig til að gleyma draumnum, en allt varð enn áhugaverðara. Að læra C++ og Python gerði mér kleift að vinna jafn spennandi verk: að forrita rökfræði vélmenna stýrikerfa.

Byrja

Ég var heppin að hafa verið að æsa mig um geim alla mína æsku. Þess vegna, eftir skóla, efaðist ég ekki í eina mínútu hvert ég ætti að fara að læra og ég fór inn í MSTU. Bauman, við deild eldflaugavirkjunar. Hins vegar þurfti alls ekki að velja grein námskeiðsins sjálfs - duft- eða vökvahreyflar geimeldflaugar: Árið 2001 dreifði sérstök deildarnefnd enn markhópum umsækjenda. Ég var gripinn í tunnu af byssupúðri.

Á þeim tíma var „eldflaugauppsveifla“ aðeins til í áætlunum; verkfræðingar fengu lág laun og störfuðu á sérstökum lokuðum hönnunarstofum og rannsóknarstofnunum með nánast engar möguleika á starfsframa og faglegum vexti. Samt eru dufteldflaugar í Rússlandi eingöngu hernaðarvörur.

Núna er þetta svæði eftirsótt, en þegar í námi mínu áttaði ég mig á því að í eldflaugavísindum er öll starfsemi að eigin frumkvæði nánast ómöguleg. Í raun er þetta herþjónusta. Til dæmis, að vinna í eldflaugaiðnaðinum, myndi ég vera algjörlega sviptur tækifæri til að þróa sjálfstætt hugbúnað, jafnvel fyrir sjálfan mig, þar sem þessi starfsemi er stranglega stjórnað.

Allar hugbúnaðarvörur eru eingöngu þróaðar samkvæmt sérpöntun og með samþykki leyniþjónustunefndar (nú deild FSTEC). Framkvæmdaraðilinn þar þarf að skrá sig og gefa leyfi fyrir bókstaflega hverri kóðalínu. Allur hugbúnaður er upphaflega leyndur á verkefnastigi. Þetta skýrir að hluta hvers vegna hugbúnaðurinn sem nú er notaður til að þjálfa eldflaugafræðinema var þróaður í síðasta lagi á tíunda áratugnum.

Þegar ég útskrifaðist frá stofnuninni tókst mér að vinna við vélvirkjafræðideild og byrjaði að þróa menntunarferlahermi í C++, svo ég hafði dæmi til samanburðar og gat vegið kosti og galla. Valið var augljóst og ég fór smám saman að svífa í átt að upplýsingatækni og vélfærafræði. Hagnýt aflfræði var miklu skemmtilegri en eldflaugavísindi: mörg óleyst vandamál, opið umhverfi, skortur á þróunariðnaði, brýn þörf fyrir hermihugbúnað. Í vélfærafræði er órólegur arkitektúr algengs hugbúnaðar og þörf á að innleiða ítrekað flókin reiknirit, þar á meðal óljós rökfræði og upphaf gervigreindar. Þess vegna, eftir fyrstu forritin mín til að vinna úr tilraunagögnum, fór ég nánast aldrei aftur í eldflaugar (að undanskildu útskriftarverkefninu mínu).

Fyrir vikið fékk ég tækifæri til að vinna í sérgreininni minni í aðeins fjóra mánuði áður en ég útskrifaðist í verksmiðju nálægt Moskvu fyrir samsett mannvirki fyrir geimferðaiðnaðinn. Eftir að hafa lokið námi þurfti ég ekki einu sinni að leita að vinnu - ég kom strax til að kenna hagnýta vélfræði við vélfærafræðideildina.

Frá kennslu til forritunar

Frá eldflaugum til vélmenna og hvað hefur Python með það að gera. Saga GeekBrains alumni
Á IFTOMM heimsþingi með nemendum úr rannsóknarhópnum (ég til hægri)

Ég vann við MSTU í sýnatökudeild í 10 ár, kenndi námskeið um aðferðafræði. Hann birti vísindaverk (sjá lok greinarinnar), færðist smám saman frá vélfræði í átt að CAD og vélfærafræði. Og á endanum ákvað hann að hætta kennslunni. Til að skýra ástæður þessarar ákvörðunar sem skýrast skal ég segja að á tíu árum hefur námið sem ég kenndi ekki breyst um einn aukastaf. Þrátt fyrir að hagnýt vélfræði, af ritunum að dæma, hafi gengið mjög, mjög vel.

Auk þess minnti starfið meira og meira á skrifræðisvinnu - skýrslur, forrit, staðla og tonn af pappír. Við slíkar aðstæður var ánægjunni af kennslu skipt út fyrir að tilkynna um móttöku þessarar ánægju og er það meira en óþægilegt fyrir starfandi sérfræðing.

Og að lokum kom ég að vélfærafræði eins og þessari: Árin 2007-2009, ásamt prófessorunum A. Golovin og N. Umnov, byrjuðum við að undirbúa fyrstu vísindaverkin. Þar þurfti ég að nota reiknirit til að ákvarða slóðir hluta úr strobe ljósmyndun. Frá þessu efni er það eitt skref að vélsjón, OpenCV og Robotic Operating System (þó að á þeim tíma hafi ég ekki einu sinni hugsað um slíkan mælikvarða). Eftir það einbeitti ég mér loks að hagnýtri aflfræði og vélfærafræði í rannsóknum og þróunin varð stuðningsstarfsemi.

Hins vegar, til að finna nýtt starf í vélfærafræði, var nauðsynlegt að bæta og bæta við forritunarþekkingu mína. Enda lærði ég aldrei upplýsingatækni sérstaklega, nema árslangt háskólanám (ObjectPascal og Borland VCL í C++), og treysti á stærðfræði fyrir fræðilega þætti þróunar.

Í fyrstu íhugaði ég möguleika á fullu námskeiði við móðurskólann minn. Að vísu kom fljótt í ljós að nær ómögulegt væri að sameina slíkt nám við störf við deildina vegna óreglulegrar stundar og tíðrar vinnu utan eigin stundar (afleysingar o.fl.). Svo ég kom smám saman að hugmyndinni um að ljúka greiddum námskeiðum lítillega. Ég kom til GeekBrains að tillögu prófessora frá Mail.ru Technopark þjálfunarmiðstöðinni, sem staðsett er í Baumanka, og skráði mig í Python forritara námskeiðið.

Námskeiðin ollu engum erfiðleikum, vandamálið var bara að ég þurfti stöðugt að sameina þau við vinnu á deildinni, vísindastörf og viðburði. Tíminn var svo naumur að fórna þurfti flestum félagslegum tengslum utan heimilis (sem betur fer tímabundið).

Svona tókst ég á við vinnuálagið: Ég leysti vandamál á veginum. Þessi kunnátta, sem þróaðist í gegnum fjölmargar viðskiptaferðir, reyndist mjög gagnleg, þar sem án hennar myndi ég ekki einu sinni geta klárað öll heimaverkefnin mín (og hún kemur líka í stað hugleiðslu...). Ég lærði að kóða á ferðinni með því að nota fartölvu, snjallsíma og þráðlausa snjallsímalyklaborð.

Fartölvan mín er Dell Latitude 3470 og allir snjallsímar með 5.5 tommu ská eða meira sem eru paraðir við Logitech K 810 BT lyklaborð duga. Almennt séð mæli ég með Logitech vörum fyrir alla; þær eru mjög áreiðanlegar og þola mjög erfiðar notkunarskilyrði (og þetta er aldrei auglýsing).

Frá eldflaugum til vélmenna og hvað hefur Python með það að gera. Saga GeekBrains alumni
Logitech K810 lyklaborð

Python hentar mjög vel til slíkrar vinnu - ef þú ert með góðan ritstjóra. Annað forritunarhakk: notaðu fjartengingar við skjáborðið eða keyrsluumhverfið. Ég kláraði nokkur verkefni með því að nota öruggan vefþjón sem keyrir Django á heimatölvunni minni. Ég vann úr lestinni og notaði hugbúnaðinn PyDroid, DroidEdit, Maxima.

Af hverju Python?

Það leið ekki á löngu þar til ég reyndi að nota PHP sem kerfisskriftarmál. Ég lærði Python í upphafi á eigin spýtur og smátt og smátt „fyrir sjálfan mig“. Ég ákvað að læra alvarlega eftir að ég lærði um tilvist skilvirkrar tengingar á milli Python og C++ á mátstigi - það virtist áhugavert að deila bjartsýni reikniritum og gagnaundirbúningsaðferðum á sama tungumáli.

Einfaldasta dæmið: það er stjórnkerfi fyrir óstöðluð öflugan drif, útfært á innbyggðri vél með RISC örgjörva, í C++. Stjórnun fer fram í gegnum ytri vélaháð API, sem styður til dæmis samskipti milli undirkerfa yfir net. Á háu stigi er drifaðgerðaralgrímið ekki villuleitt eða er ekki stöðugt (það er nauðsynlegt að hlaða mismunandi reikniritum eftir vinnuferlinu).

Ein besta leiðin til að ná fram slíku kerfi er að nota vélsértæka C++ undirkerfis API sem grunn fyrir mengi Python flokka sem keyra á túlk yfir vettvang. Þannig mun verktaki á efsta stigi ekki þurfa að taka tillit til eiginleika innbyggðu vélarinnar og stýrikerfis hennar; hann mun einfaldlega vinna með Python flokkum sem virka sem „umbúðir“ lágstigs API.

Ég þurfti að læra C++ og Python bindingu nánast frá grunni. Það varð fljótt ljóst að hlutbundinn hæfileiki á háu stigi var mun mikilvægari en á lágu stigi. Vegna þessa þurftum við að gjörbreyta nálguninni við að hanna og innleiða API, velja flokka á Python stigi og deila alþjóðlegum gögnum í C/C++. Venjast við kóðagerð: til dæmis býr ROS ramminn sjálfur til nöfn og hluti í Python, þannig að þú verður að taka tillit til tungumálamunar, sérstaklega í vélritun, þegar þú hannar viðmótin þín.

Að vinna í nútíðinni: Python og vélmennastjórnunarfræði

Núna vinn ég sem Python og C++ forritari hjá Robotics Research and Education Center við Moscow State Technical University. Við innleiðum rannsóknarverkefni og hugbúnaðarverkfæri á vegum ríkisdeilda: við þróum stjórntæki með innbyggðum tæknilegum sjónkerfum og sjálfvirkum stjórnalgrímum á háu stigi sem eru óháð kerfum.

Eins og er forrita ég rökfræði á háu stigi fyrir stýrikerfi vélmenna í Python; þetta tungumál tengir saman mjög bjartsýni einingar skrifaðar í C++, assembler og Go.

Við forritun vélmennastýringaralgríma eru tveir stórir hópar reiknirita notaðir. Fyrsta þeirra er útfært beint á búnaðinn, á lágu stigi - þetta er innbyggður hugbúnaður drifstýringa, samskiptalínuþjöppu og undirkerfa rekstraraðila.

Reikniritin hér eru hönnuð fyrir stýrðan hraða og áreiðanleika sem er meiri en afköst vélmennisins í heild sinni. Hið síðarnefnda er skylda, þar sem öryggi alls kerfisins er háð lágmarksstýringarhugbúnaði.

Annar hópur reiknirita ákvarðar virkni vélmennisins í heild sinni. Þetta eru forrit á háu stigi, þar sem áherslan í þróun þeirra er á skýrleika og hraða innleiðingar reikniritsins, oft frekar flókið. Að auki er háþróaður hugbúnaður á vélmenni mjög oft háður breytingum meðan á uppsetningu og prófunarferlinu stendur. Fyrir slíka þróun eru almenn túlkuð tungumál ómissandi.

Hvaða þekkingu þarf til slíkrar vinnu?

Það verður skylda að læra C++ sniðmát tungumálið og hlutbundinn getu Python. Næstum óbætanlegur færni er hæfileikinn til að hanna og skjalfesta API. Það væri góð hugmynd að kanna möguleika sérhæfðra bókasöfna eins og Boost::Python. Þeir sem vinna með hugbúnað á lágu stigi þurfa örugglega að takast á við multithreading (á kjarnastigi) og Linux/UNIX/QNX kerfissímtöl. Til að bæta skilning þinn á meginreglum vélfærafræði er mjög gagnlegt að kynna þér vélfærastýrikerfisramma.

Ég reyni að hafa að minnsta kosti eitt samsett og eitt túlkað forritunarmál sem er í þróun og eftirsótt. Þetta er vinningsstefna til að vinna í verkfræði, þar sem stöðugt er þörf á að þróa mjög sérhæfð (les: óvenjuleg) reiknirit og innleiða þau í samsetningu tungumála. Það verkefni að útbúa gögn fyrir slíkan hugbúnað er miklu skemmtilegra að leysa með því að nota túlkuð tungumál. Upphaflega innihélt settið mitt C++, Pascal og BASIC, síðar bættust PHP og BASH við.

Hvernig þróunarverkfæri geta nýst við kennslu nemenda

Megináætlun fagþróunar nú er að reyna að skapa vísindalegan grundvöll fyrir notkun faglegra hugbúnaðarþróunartækja í kennslufræði, til að þróa og prófa kennsluaðferðir.

Síðan 2016 hóf ég stóra tilraun með að innleiða þróunarverkfæri - forritunarmál, IDE, skjalaframleiðendur, útgáfustýringarkerfi - inn í kennslustarf í háskólanámi. Nú hefur tekist að fá niðurstöður sem hægt er að alhæfa eigindlega.

Til dæmis bætir innleiðing á útgáfu efnis inn í kennsluferlið verulega gæði vinnu nemenda, þó aðeins við skylduskilyrði: nemendur vinna saman að sameiginlegum verkefnum. Þróun aðferða til að kenna tæknigreinar með faglegum hugbúnaðarþróunarverkfærum er nú í fullum gangi hjá rannsóknarhópnum mínum, sem samanstendur af nemendum, umsækjendum og nemendum viðbótarnáms við MSTU.

Við the vegur, ég hætti ekki kennarastarfinu mínu - ég þróaði mitt eigið ítarlegt fullt námskeið um hönnun og stjórnun Linux fyrir Institute of Advanced Studies við MSTU, og ég kenni það sjálfur.

Vísindastörf

Snemma verk
Vandamál við skipulagningu ganglags við hönnun fjögurra fóta göngukerfis með því að nota dæmi um gangtegund hesta (2010 g.)

Um hreyfifræði og hleðslu á burðarhluta framfótar hestsins á því stigi að nálgast stuðninginn sem hluti af vinnulotu fjórfætta ökumannsins (2012 g.)

Frá sl
3D gírframleiðslu eftirlíkingarforrit fyrir kennslu vélbúnaðar og vélafræði (2019 g.)

Aðferð til að þekkja burðarvirki hindranir og beitingu þeirra við leit að hjálparhlutum (2018 g.)

Önnur verk skráð af vísindalegum tilvitnunargagnagrunnum má sjá í prófílnum mínum á ResearchGate. Flestar greinarnar eru helgaðar hreyfingum véla, þar eru verk um verkfræðikennslu og fræðsluhugbúnað.

Heimild: www.habr.com

Bæta við athugasemd