Koheteetatik robotetara eta zer zerikusi du Pythonek. GeekBrains ikasle ohien istorioa

Koheteetatik robotetara eta zer zerikusi du Pythonek. GeekBrains ikasle ohien istorioa
Gaur Andrey Vukoloven ITrako trantsizioaren istorioa argitaratzen ari gara. Haurtzaroko espazioarekiko zaletasunak MSTUn suziri zientzia ikastera eraman zuen behin. Errealitate gogorrak ametsa ahantzi egin zidan, baina dena are interesgarriagoa bihurtu zen. C++ eta Python ikasteari esker, lan zirraragarri bezain zirraragarria egin nuen: roboten kontrol sistemen logika programatzea.

Начало

Zortea izan nuen nire haurtzaro guztian espazioari buruz gogotsu egoteagatik. Hori dela eta, eskola ondoren, ez nuen minutu bakar batean zalantzan jarri nondik joan behar nuen ikastera, eta MSTUn sartu nintzen. Bauman, Rocket Propulsion Engineering Sailari. Hala ere, ikastaroaren adarra bera - suziri espazialen hauts edo likido motorrak - ez zen batere aukeratu beharrik izan: 2001ean, fakultateko batzorde berezi batek eskatzaileen xede-taldeak banatzen zituen oraindik. Bolbora kupel batean harrapatu ninduten.

Garai hartan, "suziriaren boom"-a planetan baino ez zegoen; ingeniariek soldata eskasak jasotzen zituzten eta diseinu-bulego eta ikerketa-institutu itxi berezietan lan egiten zuten, karrera eta hazkunde profesionalerako ia aukerarik gabe. Hala ere, Errusiako hauts-koheteak produktu militarrak dira.

Orain arlo hau eskatzen da, baina ikasketetan jada konturatu nintzen kohete zientzian norberaren ekimenez edozein jarduera ia ezinezkoa dela. Izan ere, hau zerbitzu militarra da. Esaterako, koheteen industrian lanean, softwarea modu independentean garatzeko aukera erabat kenduko nuke, baita niretzat ere, jarduera hau zorrotz araututa baitago.

Software-produktu guztiak esklusiboki garatzen dira eskaera bereziz eta sekretu batzordearen (gaur egun FSTEC-en dibisioa) oniritziarekin. Bertan garatzaileak kode-lerro guztiak erregistratu eta lizentziatu behar ditu. Software guztia sekretua da hasieran ataza mailan. Horrek, neurri batean, azaltzen du zergatik garatu zen 90eko hamarkadan, beranduenez, kohete zientzietako ikasleak trebatzeko orain erabiltzen den softwarea.

Institutuan graduatu nintzenerako, mekanismoen teoria sailean lan egitea lortu nuen eta C++-n hezkuntza-prozesuaren simulagailu bat garatzen hasi nintzen, beraz, konparaziorako adibide bat nuen eta alde onak eta txarrak baloratu nituen. Aukera nabaria zen, eta pixkanaka informatika eta robotikarantz noraezean hasi nintzen. Mekanika aplikatua koheteen zientzia baino askoz dibertigarriagoa zen: konpondu gabeko arazo asko, ingurune irekia, garapen-industriarik ez izatea, simulazio-softwarearen premia larria. Robotikan, software arruntaren arkitektura finkatu bat dago eta algoritmo konplexuak behin eta berriz ezartzeko beharra dago, logika lausoa eta AIaren hastapenak barne. Hori dela eta, datu esperimentalak prozesatzeko nire lehen programen ondoren, ez nintzen ia inoiz suzirietara itzuli (nire graduko proiektua izan ezik).

Ondorioz, lau hilabetez soilik nire espezialitatean lan egiteko aukera izan nuen Moskutik gertu industria aeroespazialerako egitura konposatuetarako lantegi batean lizentziatu aurretik. Ikasketak amaitu eta gero, ez nuen lana bilatu beharrik izan ere, berehala etorri nintzen robotika sailera mekanika aplikatua irakastera.

Irakaskuntzatik programaziora

Koheteetatik robotetara eta zer zerikusi du Pythonek. GeekBrains ikasle ohien istorioa
IFTOMM Munduko Kongresuan ikerketa taldeko ikasleekin (ni eskuinaldean)

MSTUn 10 urtez aritu nintzen laginketa sailean, mekanismoen teoriari buruzko ikastaro bat ematen. Lan zientifikoak argitaratu zituen (ikus artikuluaren amaiera), pixkanaka mekanikatik CAD eta robotikara joan zen. Eta azkenean irakaskuntza uztea erabaki zuen. Erabaki honen arrazoiak argien adierazteko, esango dut hamar urtetan eman nuen ikasketak ez duela hamartar bat aldatu. Nahiz eta mekanika aplikatuak, argitalpenen arabera, aurrera egin oso-oso arrakastatsuan.

Horrez gain, lanak gero eta lan burokratikoaren antza handiagoa zuen: txostenak, programak, estandarrak eta paper tonakoak. Halako baldintzetan, irakasteko plazera plazer hori jaso izanaren berri emateaz ordezkatzen zen, eta hori desatsegina baino gehiago da praktikan ari den espezialista batentzat.

Eta azkenean honela heldu nintzen robotikara: 2007-2009an, A. Golovin eta N. Umnov irakasleekin batera, lehenengo lan zientifikoak prestatzen hasi ginen. Bertan algoritmoak erabili behar izan nituen estrobo-argazkietatik objektuen ibilbideak zehazteko. Gai honetatik urrats bat da ikusmen automatikoa, OpenCV eta sistema eragile robotikoa (nahiz eta garai hartan ez nuen halako eskalarik pentsatu ere egin). Horren ostean, azkenean, mekanika aplikatuan eta robotikan zentratu nintzen ikerketan, eta garapena laguntza-jarduera bihurtu zen.

Hala ere, robotikan lan berri bat aurkitzeko, programazio ezagutzak hobetu eta osatzea beharrezkoa izan zen. Azken finean, ez nuen inoiz informatika espezifikoki ikasi, urte osoko unibertsitate-ikastaro batean izan ezik (ObjectPascal eta Borland VCL C++-n), eta matematikan oinarritzen nintzen garapenaren alderdi teorikoetarako.

Hasieran nire jatorrizko institutuan lanaldi osoko ikastaroetarako aukerak kontuan hartu nituen. Egia da, berehala argitu zen ia ezinezkoa izango zela halako ikasketak departamentuko lanarekin uztartzea ordutegi irregularragatik eta norberaren ordutegitik kanpo sarri lanagatik (ordezkapena, etab.). Beraz, pixkanaka-pixkanaka ordaindutako ikastaroak urrutitik burutzea bururatu zitzaidan. GeekBrainsera Baumankan kokatutako Mail.ru Technopark prestakuntza zentroko irakasleen gomendioarekin etorri nintzen eta Python Programatzaile ikastaroan izena eman nuen.

Ikastaroek ez zuten zailtasunik sortu, arazo bakarra zen etengabe uztartu behar nituela saileko lanekin, lan zientifikoekin eta ekitaldiekin. Denbora hain estua zenez, etxetik kanpoko harreman sozial gehienak sakrifikatu behar izan ziren (zorionez, aldi baterako).

Honela egin nion aurre lan kargari: errepidean arazoak konpondu nituen. Trebetasun hori, negozio-bidaia ugariren bidez garatua, oso baliagarria izan zen, hura gabe ezingo nituzkeelako etxeko lan guztiak egin ere (eta meditazioa ordezkatzen du ere...). Edonon kodetzen ikasi nuen ordenagailu eramangarria, telefonoa eta hari gabeko telefonoaren teklatuak erabiliz.

Nire ordenagailu eramangarria Dell Latitude 3470 bat da, eta Logitech K 5.5 BT teklatu batekin parekatuta dagoen 810 hazbeteko diagonala edo gehiago duen edozein telefonok balioko du. Oro har, denei gomendatzen diet Logitech produktuak; oso fidagarriak dira eta erabilera baldintza oso gogorrak jasan ditzakete (eta hau ez da inoiz iragarki bat).

Koheteetatik robotetara eta zer zerikusi du Pythonek. GeekBrains ikasle ohien istorioa
Teklatua Logitech K810

Python oso egokia da horrelako lanetarako - editore ona baduzu. Beste programazio hack bat: erabili mahaigaineko edo exekuzio-ingurunerako urruneko konexioak. Nire etxeko ordenagailuan Django exekutatzen duen web zerbitzari seguru bat erabiliz hainbat zeregin burutu nituen. Trenetik lan egin nuen, PyDroid, DroidEdit, Maxima softwarea erabiliz.

Zergatik Python?

Denbora gutxi igaro zen PHP sistemaren gidoi-lengoaia gisa erabiltzen saiatu nintzen arte. Hasieran Python nire kabuz ikasi nuen eta pixkanaka "niretzat". Modulu mailan Python eta C++-ren arteko konexio eraginkorra zegoela jakin ondoren serio aztertzea erabaki nuen; interesgarria iruditu zitzaidan algoritmo optimizatuak eta datuak prestatzeko prozedurak hizkuntza berean partekatzea.

Adibiderik errazena: estandarra ez den disko indartsu baterako kontrol sistema dago, RISC prozesadorearekin txertatutako makina batean inplementatuta, C++-n. Kudeaketa makinaren menpeko kanpoko API baten bidez egiten da, eta, adibidez, sare baten bidez azpisistemen arteko komunikazioa onartzen du. Maila altuan, diskoaren funtzionamenduaren algoritmoa ez da arazketarik edo ez da konstantea (beharrezkoa da algoritmo desberdinak kargatzea lan-prozesuaren arabera).

Sistema hori lortzeko modurik onenetako bat makinaren C++ azpisistemako API espezifikoa erabiltzea da plataforma anitzeko interprete batean exekutatzen diren Python klase multzo baten oinarri gisa. Horrela, goi-mailako garatzaileak ez ditu txertatutako makinaren eta bere OSaren ezaugarriak kontuan izan beharko; besterik gabe, behe-mailako APIaren "bilgarri" gisa jokatzen duten Python klaseekin lan egingo du.

C++ eta Python lotura ia hutsetik ikasi behar izan nuen. Azkar argi geratu zen maila altuan objektuetara bideratutako gaitasunak maila baxuan baino askoz ere garrantzitsuagoak zirela. Horregatik, APIa diseinatzeko eta inplementatzeko ikuspegia guztiz aldatu behar izan genuen, Python mailan klaseak aukeratuz eta C/C++-n datu globalak partekatuz. Ohitu kode-sorkuntzara: adibidez, ROS markoak berak Python-en izenak eta objektuak sortzen ditu, beraz, kontuan izan behar dituzu hizkuntza desberdintasunak, batez ere idazketan, zure interfazeak diseinatzerakoan.

Orainaldian lan egiten: Python eta Robot Kontrol Logika

Orain Python eta C++ programatzaile gisa lan egiten dut Moskuko Estatuko Unibertsitate Teknikoko Robotika Ikerketa eta Hezkuntza Zentroan. Gobernuko sailek agindutako ikerketa-proiektuak eta software-tresnak ezartzen ditugu: ikusmen-sistema teknikoak dituzten manipulagailuak garatzen ditugu eta sistemetatik independenteak diren maila handiko kontrol automatikoko algoritmoak.

Gaur egun, Python-en roboten kontrol-sistemetarako goi-mailako logika programatzen dut; hizkuntza honek C++, mihiztatzaile eta Go-n idatzitako modulu oso optimizatuak lotzen ditu.

Roboten kontrol-algoritmoen programazioan, bi algoritmo-talde handi erabiltzen dira. Horietako lehena ekipoan zuzenean inplementatzen da, maila baxuan: disko kontrolagailuen, komunikazio-lerroen kontzentragailuen eta operadoreen interakzio azpisistemen softwarea da.

Hemen algoritmoak robotaren errendimendua gainditzen duen exekuzio abiadura kontrolatu eta fidagarritasunerako diseinatuta daude. Azken hau derrigorrezkoa da, sistema osoaren segurtasuna maila baxuko kontrol-softwarearen araberakoa baita.

Bigarren algoritmo-taldeak robotaren funtzionamendua zehazten du bere osotasunean. Hauek maila altuko programak dira, eta horien garapenean enfasia algoritmoaren ezarpenaren argitasuna eta abiadura da, askotan nahiko konplexua. Gainera, robotaren goi-mailako softwarea sarritan aldatzen da konfigurazio eta proba prozesuan zehar. Garapen horretarako, helburu orokorreko hizkuntza interpretatuak ezinbestekoak dira.

Zer ezagutza behar da horrelako lanetarako?

Derrigorrezkoa izango da C++ txantiloi-lengoaia eta Python-en objektuetara zuzendutako gaitasunak aztertzea. Trebetasun ia ordezkaezina APIak diseinatzeko eta dokumentatzeko gaitasuna da. Ideia ona litzateke Boost::Python bezalako liburutegi espezializatuen gaitasunak arakatzea. Maila baxuko softwarearekin lan egiten dutenek, zalantzarik gabe, multithreading (kernel mailan) eta Linux/UNIX/QNX sistema-deiei aurre egin beharko diete. Robotikaren printzipioak hobeto ulertzeko, oso erabilgarria da Robotic Operating System esparrua ezagutzea.

Gutxienez garatzen eta eskatzen ari den programazio-lengoaia konpilatu eta interpretatu bat izaten saiatzen naiz. Ingeniaritzan lan egiteko estrategia irabazlea da, non algoritmo oso espezializatuak (irakurri: ezohikoak) garatzeko eta konpilazio-lengoaietan ezartzeko beharra etengabea den. Software honetarako datuak prestatzeko lana askoz atseginagoa da interpretatutako hizkuntzak erabiliz ebaztea. Hasieran, nire multzoak C++, Pascal eta BASIC barne hartzen zituen, geroago PHP eta BASH gehitu ziren.

Garapen tresnak nola izan daitezkeen erabilgarriak ikasleen irakaskuntzan

Garapen profesionalerako plan nagusia pedagogian softwarea garatzeko tresna profesionalak erabiltzeko oinarri zientifiko bat ematen saiatzea da orain, irakaskuntza-metodoak garatu eta probatzeko.

2016az geroztik, esperimentu handi bat hasi nuen garapen tresnak -programazio-lengoaiak, IDEak, dokumentazio-sorgailuak, bertsioak kontrolatzeko sistemak- goi-mailako irakaskuntza-praktikan sartzeko. Orain lortu dugu kualitatiboki orokortu daitezkeen emaitzak lortzea.

Adibidez, hezkuntza-prozesuan materialen bertsioak sartzeak nabarmen hobetzen du ikasleen lanaren kalitatea, hala ere, derrigorrezko baldintzapean soilik: ikasleek elkarrekin lan egiten duten proiektu partekatuetan. Softwarea garatzeko tresna profesionalak erabiliz diziplina teknikoak irakasteko metodoen garapena orain aktiboki burutzen ari da nire ikerketa-taldeak, MSTUko hezkuntza-programa osagarrietako ikasleek, eskatzaileek eta ikasleek osatua.

Bide batez, ez nuen nire irakaskuntza praktika utzi - MSTUko Ikasketa Aurreratuen Institutuko Linux-en diseinuari eta administrazioari buruzko lanaldi osoko ikastaro sakona garatu nuen eta nik neuk irakasten dut.

Lan zientifikoa

Hasierako lanak
Lau hankako ibilaldi sistemak diseinatzerakoan ibilaldiaren plangintzaren arazoak zaldi baten ibilaldiaren ezarpenaren adibidea erabiliz (2010)

Zinematikari eta zaldiaren aurreko hankaren euskarri-elementuaren kargari buruzko euskarrira hurbiltzeko fasean lau hankako higikariaren lan-zikloaren osagai gisa. (2012)

Azkenetik
3D engranajeak fabrikatzeko simulazio aplikazioa irakasteko mekanismoak eta makinen teoriarako (2019)

Egiturazko oztopoak antzemateko metodoa eta erliebe-objektuen bilaketan aplikatzea (2018)

Zientzia datu-baseek indexatutako beste lan batzuk nire profilean ikus daitezke Eusko. Artikulu gehienak makinen mugimenduari buruzkoak dira, ingeniaritza pedagogiari eta hezkuntza softwareari buruzko lanak daude.

Iturria: www.habr.com

Gehitu iruzkin berria