Nga raketat te robotët dhe çfarë lidhje ka Python me të. Historia Alumni e GeekBrains

Nga raketat te robotët dhe çfarë lidhje ka Python me të. Historia Alumni e GeekBrains
Sot po publikojmë historinë e kalimit të Andrey Vukolov në IT. Pasioni i tij i fëmijërisë për hapësirën e shtyu dikur të studionte shkencën e raketave në MSTU. Realiteti i ashpër më bëri të harroj ëndrrën, por gjithçka doli edhe më interesante. Studimi i C++ dhe Python më lejoi të bëj një punë po aq emocionuese: programimin e logjikës së sistemeve të kontrollit të robotëve.

Fillim

Unë kam qenë me fat që kam qenë i tërbuar për hapësirën gjatë gjithë fëmijërisë sime. Prandaj, pas shkollës, nuk dyshova për asnjë minutë se ku duhet të shkoja për të studiuar dhe hyra në MSTU. Bauman, në Departamentin e Inxhinierisë së Propulsionit të Raketave. Sidoqoftë, vetë dega e kursit - motorë pluhur ose të lëngshëm të raketave hapësinore - nuk duhej të zgjidhej fare: në vitin 2001, një komision i posaçëm fakulteti shpërndante ende grupet e synuara të aplikantëve. Më kapi një fuçi baruti.

Në atë kohë, "bumi i raketave" ekzistonte vetëm në plane; inxhinierët merrnin paga të pakta dhe punonin në zyra speciale të mbyllura të projektimit dhe institute kërkimore pa pothuajse asnjë perspektivë për karrierë dhe rritje profesionale. Megjithatë, raketat pluhur në Rusi janë produkte thjesht ushtarake.

Tani kjo zonë është në kërkesë, por tashmë gjatë studimeve të mia kuptova se në shkencën e raketave çdo aktivitet me iniciativën e dikujt është pothuajse i pamundur. Në fakt, ky është shërbimi ushtarak. Për shembull, duke punuar në industrinë e raketave, do të privohesha plotësisht nga mundësia për të zhvilluar në mënyrë të pavarur softuer, madje edhe për veten time, pasi ky aktivitet është i rregulluar rreptësisht.

Të gjitha produktet softuerike zhvillohen ekskluzivisht me urdhër të veçantë dhe me miratimin e komisionit të fshehtësisë (tani një ndarje e FSTEC). Zhvilluesi atje duhet të regjistrojë dhe licencojë fjalë për fjalë çdo rresht kodi. I gjithë softueri fillimisht është sekret në nivelin e detyrës. Kjo shpjegon pjesërisht pse softueri që përdoret tani për të trajnuar studentët e shkencës raketore u zhvillua më së voni në vitet 90.

Në kohën kur u diplomova në institut, arrita të punoja në departamentin e teorisë së mekanizmave dhe fillova të zhvilloj një simulator të procesit arsimor në C++, kështu që kisha një shembull për krahasim dhe mund të peshoja të mirat dhe të këqijat. Zgjedhja ishte e qartë dhe gradualisht fillova të shkoj drejt IT dhe robotikës. Mekanika e aplikuar ishte shumë më argëtuese se shkenca e raketave: shumë probleme të pazgjidhura, një mjedis i hapur, mungesa e një industrie zhvillimi, një nevojë urgjente për softuer simulues. Në robotikë, ekziston një arkitekturë e parregullt e softuerit të zakonshëm dhe nevoja për të zbatuar në mënyrë të përsëritur algoritme komplekse, duke përfshirë logjikën fuzzy dhe fillimet e AI. Prandaj, pas programeve të mia të para për përpunimin e të dhënave eksperimentale, pothuajse kurrë nuk u ktheva në raketa (me përjashtim të projektit tim të diplomimit).

Si rezultat, pata mundësinë të punoja në specialitetin tim vetëm katër muaj përpara se të diplomohesha në një fabrikë afër Moskës për strukturat e përbëra për industrinë e hapësirës ajrore. Pasi përfundova studimet e mia, as që më duhej të kërkoja punë - erdha menjëherë të jepja mësim për mekanikën e aplikuar në departamentin e robotikës.

Nga mësimdhënia në programim

Nga raketat te robotët dhe çfarë lidhje ka Python me të. Historia Alumni e GeekBrains
Në Kongresin Botëror IFTOMM me studentë anëtarë të grupit kërkimor (unë në të djathtë)

Kam punuar në MSTU në departamentin e kampionimit për 10 vjet, duke dhënë një kurs për teorinë e mekanizmave. Ai botoi vepra shkencore (shiko fundin e artikullit), kaloi gradualisht nga mekanika drejt CAD dhe robotikës. Dhe në fund vendosi të linte mësimdhënien. Për të ilustruar sa më qartë arsyet e këtij vendimi, do të them se në dhjetë vjet kursi i studimit që kam dhënë nuk ka ndryshuar një numër dhjetor. Edhe pse mekanika e aplikuar, duke gjykuar nga botimet, eci përpara me shumë, shumë sukses.

Veç kësaj, puna gjithnjë e më shumë i ngjante punës burokratike - raporte, programe, standarde dhe tonelata letre. Në kushte të tilla kënaqësia e mësimdhënies zëvendësohej me raportimin për marrjen e kësaj kënaqësie dhe kjo është më se e pakëndshme për një specialist praktikant.

Dhe më në fund arrita te robotika kështu: në vitet 2007-2009, së bashku me profesorët A. Golovin dhe N. Umnov, filluam përgatitjen e punimeve të para shkencore. Aty më duhej të përdorja algoritme për të përcaktuar shtigjet e objekteve nga fotografia me strobë. Nga kjo temë është një hap drejt vizionit të makinës, OpenCV dhe Sistemit Operativ Robotik (megjithëse në atë kohë as që e kisha menduar një shkallë të tillë). Pas kësaj, më në fund u fokusova në mekanikën e aplikuar dhe robotikën në kërkime dhe zhvillimi u bë një aktivitet mbështetës.

Megjithatë, për të gjetur një punë të re në robotikë, ishte e nevojshme të përmirësoja dhe plotësoja njohuritë e mia në programim. Në fund të fundit, unë kurrë nuk kam studiuar IT në mënyrë specifike, përveç një kursi universitar njëvjeçar (ObjectPascal dhe Borland VCL në C++), dhe u mbështeta në matematikë për aspektet teorike të zhvillimit.

Në fillim mora parasysh opsionet për kurse me kohë të plotë në institutin tim të lindjes. Vërtetë, shpejt u bë e qartë se do të ishte pothuajse e pamundur të kombinohen studime të tilla me punën në departament për shkak të orarit të parregullt dhe punës së shpeshtë jashtë orarit të dikujt (zëvendësimi, etj.). Kështu që gradualisht erdha në idenë e përfundimit të kurseve me pagesë nga distanca. Erdha në GeekBrains me rekomandimin e profesorëve nga qendra e trajnimit Mail.ru Technopark, e vendosur në Baumanka dhe u regjistrua në kursin Python Programmer.

Kurset nuk shkaktuan ndonjë vështirësi, problemi i vetëm ishte se vazhdimisht më duhej t'i kombinoja me punën në departament, punimet shkencore dhe ngjarjet. Koha ishte aq e ngushtë saqë shumica e lidhjeve shoqërore jashtë shtëpisë duhej të sakrifikoheshin (për fat të mirë, përkohësisht).

Kështu e përballova ngarkesën: zgjidha problemet në rrugë. Kjo aftësi, e zhvilluar përmes udhëtimeve të shumta pune, doli të ishte shumë e dobishme, pasi pa të nuk do të mund t'i kryeja as të gjitha detyrat e shtëpisë (dhe gjithashtu zëvendëson meditimin...). Mësova të kodoj në lëvizje duke përdorur laptopin tim, telefonin inteligjent dhe tastierat e smartfonëve me valë.

Laptopi im është një Dell Latitude 3470 dhe çdo telefon inteligjent me diagonale 5.5 inç ose më shumë i çiftuar me një tastierë Logitech K 810 BT do të funksionojë. Në përgjithësi, unë rekomandoj produktet Logitech për të gjithë; ato janë shumë të besueshme dhe mund t'i rezistojnë kushteve shumë të vështira të përdorimit (dhe kjo nuk është kurrë një reklamë).

Nga raketat te robotët dhe çfarë lidhje ka Python me të. Historia Alumni e GeekBrains
Tastiera Logitech K810

Python është shumë i favorshëm për një punë të tillë - nëse keni një redaktues të mirë. Një tjetër hak programimi: përdorni lidhje në distancë me desktopin ose mjedisin e kohës së funksionimit. Përfundova disa detyra duke përdorur një server të sigurt në internet që përdor Django në kompjuterin tim të shtëpisë. Kam punuar nga treni, duke përdorur softuerin PyDroid, DroidEdit, Maxima.

Pse Python?

Nuk kaloi shumë kohë përpara se u përpoqa të përdor PHP si një gjuhë skriptimi të sistemit. Fillimisht e studiova Python-in vetë dhe pak nga pak "për veten time". Vendosa të studioja seriozisht pasi mësova për ekzistencën e një lidhjeje efektive midis Python dhe C++ në nivelin e modulit - m'u duk interesante të ndaja algoritmet e optimizuara dhe procedurat e përgatitjes së të dhënave brenda së njëjtës gjuhë.

Shembulli më i thjeshtë: ekziston një sistem kontrolli për një makinë të fuqishme jo standarde, të implementuar në një makinë të integruar me një procesor RISC, në C++. Menaxhimi ndodh nëpërmjet një API të jashtme të varur nga makina, e cila mbështet, për shembull, komunikimin midis nënsistemeve përmes një rrjeti. Në një nivel të lartë, algoritmi i funksionimit të diskut nuk është i korrigjuar ose nuk është konstant (është e nevojshme të ngarkohen algoritme të ndryshme në varësi të procesit të punës).

Një nga mënyrat më të mira për të arritur një sistem të tillë është përdorimi i API-së së nënsistemit C++ specifik për makinën si bazë për një grup klasash Python që funksionojnë në një interpretues ndër-platformë. Kështu, zhvilluesi i nivelit të lartë nuk do të duhet të marrë parasysh veçoritë e makinës së integruar dhe OS-në e saj; ai thjesht do të punojë me klasat e Python që veprojnë si "mbështjellës" të API-së së nivelit të ulët.

Më duhej të mësoja lidhjen e C++ dhe Python pothuajse nga e para. U bë shpejt e qartë se aftësitë e orientuara nga objekti në një nivel të lartë ishin shumë më të rëndësishme sesa në një nivel të ulët. Për shkak të kësaj, na u desh të ndryshonim plotësisht qasjen për hartimin dhe zbatimin e API-së, duke zgjedhur klasat në nivelin Python dhe të dhënat e përbashkëta globale në C/C++. Mësohuni me gjenerimin e kodeve: për shembull, vetë korniza ROS gjeneron emra dhe objekte në Python, kështu që ju duhet të merrni parasysh dallimet gjuhësore, veçanërisht në shkrimin, kur dizajnoni ndërfaqet tuaja.

Puna në të tashmen: Python dhe logjika e kontrollit të robotëve

Tani punoj si programues Python dhe C++ në Qendrën e Kërkimit dhe Edukimit të Robotikës në Universitetin Teknik Shtetëror të Moskës. Ne zbatojmë projekte kërkimore dhe mjete softuerike të porositura nga departamentet qeveritare: ne zhvillojmë manipulues me sisteme të integruara vizioni teknik dhe algoritme të nivelit të lartë të kontrollit automatik që janë të pavarur nga sistemet.

Aktualisht, unë programoj logjikën e nivelit të lartë për sistemet e kontrollit të robotëve në Python; kjo gjuhë lidh së bashku module shumë të optimizuara të shkruara në C++, assembler dhe Go.

Në programimin e algoritmeve të kontrollit të robotëve, përdoren dy grupe të mëdha algoritmesh. E para prej tyre zbatohet drejtpërdrejt në pajisje, në një nivel të ulët - ky është softueri i integruar i kontrolluesve të makinës, përqendruesve të linjave të komunikimit dhe nënsistemeve të ndërveprimit të operatorit.

Algoritmet këtu janë të dizajnuara për shpejtësi të kontrolluar të ekzekutimit dhe besueshmëri që tejkalon performancën e robotit në tërësi. Kjo e fundit është e detyrueshme, pasi siguria e të gjithë sistemit varet nga softueri i kontrollit të nivelit të ulët.

Grupi i dytë i algoritmeve përcakton funksionimin e robotit në tërësi. Këto janë programe të nivelit të lartë, theksi në zhvillimin e të cilave është në qartësinë dhe shpejtësinë e zbatimit të algoritmit, shpesh mjaft kompleks. Përveç kësaj, softueri i nivelit të lartë në robot është shumë shpesh subjekt i ndryshimit gjatë procesit të konfigurimit dhe testimit. Për një zhvillim të tillë, gjuhët e interpretuara për qëllime të përgjithshme janë të domosdoshme.

Çfarë njohurie nevojiten për një punë të tillë?

Do të jetë e detyrueshme të studiohet gjuha e modelit C++ dhe aftësitë e orientuara drejt objekteve të Python. Një aftësi pothuajse e pazëvendësueshme është aftësia për të hartuar dhe dokumentuar API. Do të ishte një ide e mirë për të eksploruar aftësitë e bibliotekave të specializuara si Boost::Python. Ata që punojnë me softuer të nivelit të ulët do të duhet patjetër të merren me thirrjet multithreading (në nivel kernel) dhe thirrjet e sistemit Linux/UNIX/QNX. Për të përmirësuar të kuptuarit tuaj të parimeve të robotikës, është shumë e dobishme të njiheni me kornizën e Sistemit Operativ Robotik.

Përpiqem të kem të paktën një gjuhë programimi të përpiluar dhe të interpretuar që është në zhvillim dhe në kërkesë. Kjo është një strategji fituese për të punuar në inxhinieri, ku ekziston një nevojë e vazhdueshme për të zhvilluar algoritme shumë të specializuara (lexo: të pazakonta) dhe zbatimin e tyre në përpilimin e gjuhëve. Detyra e përgatitjes së të dhënave për një softuer të tillë është shumë më e këndshme për t'u zgjidhur duke përdorur gjuhë të interpretuara. Fillimisht, grupi im përfshinte C++, Pascal dhe BASIC, më vonë u shtuan PHP dhe BASH.

Si mjetet e zhvillimit mund të jenë të dobishme në mësimdhënien e studentëve

Plani kryesor për zhvillimin profesional tani është të përpiqet të sigurojë një bazë shkencore për përdorimin e mjeteve profesionale të zhvillimit të softuerit në pedagogji, për të zhvilluar dhe testuar metodat e mësimdhënies.

Që nga viti 2016, fillova një eksperiment të madh në futjen e mjeteve të zhvillimit - gjuhë programimi, IDE, gjeneratorë dokumentacioni, sisteme të kontrollit të versioneve - në praktikën mësimore në arsimin e lartë. Tani kemi arritur të marrim rezultate që mund të përgjithësohen cilësisht.

Për shembull, futja e versioneve të materialeve në procesin arsimor përmirëson ndjeshëm cilësinë e punës së studentëve, megjithatë, vetëm nën një kusht të detyrueshëm: studentët të punojnë së bashku në projekte të përbashkëta. Zhvillimi i metodave për mësimdhënien e disiplinave teknike duke përdorur mjete profesionale të zhvillimit të softuerit tani po kryhet në mënyrë aktive nga grupi im kërkimor, i përbërë nga studentë, aplikantë dhe studentë të programeve të arsimit shtesë në MSTU.

Nga rruga, unë nuk e lashë praktikën time të mësimdhënies - unë zhvillova kursin tim të thelluar me kohë të plotë mbi hartimin dhe administrimin e Linux për Institutin e Studimeve të Avancuara në MSTU, dhe e mësoj vetë.

Puna shkencore

Punimet e hershme
Çështjet e planifikimit të ecjes gjatë projektimit të sistemeve të ecjes me katër këmbë duke përdorur shembullin e zbatimit të ecjes së një kali (2010 g.)

Për çështjen e kinematikës dhe ngarkimit të elementit mbajtës të këmbës së përparme të kalit në fazën e afrimit të suportit si përbërës të ciklit të punës së lëvizësit me katër këmbë (2012 g.)

Nga e fundit
Aplikim simulimi i prodhimit të ingranazheve 3D për mekanizmin e mësimdhënies dhe teorinë e makinerive (2019 g.)

Metoda për njohjen e pengesave strukturore dhe aplikimin e saj në kërkimin e objekteve të relievit (2018 g.)

Punime të tjera të indeksuara nga bazat e të dhënave të citimeve shkencore mund të shihen në profilin tim në ResearchGate. Shumica e artikujve i kushtohen lëvizjes së makinave, ka punime për pedagogjinë inxhinierike dhe softuer arsimor.

Burimi: www.habr.com

Shto një koment