No raķetēm līdz robotiem un kāds ar to sakars Python. GeekBrains absolventu stāsts

No raķetēm līdz robotiem un kāds ar to sakars Python. GeekBrains absolventu stāsts
Å odien mēs publicējam stāstu par Andreja Vukolova pāreju uz IT. Viņa bērnÄ«bas aizrauÅ”anās ar kosmosu savulaik lika viņam studēt raÄ·eÅ”u zinātni MSTU. Skarbā realitāte lika aizmirst par sapni, bet viss izrādÄ«jās vēl interesantāk. C++ un Python apguve man ļāva veikt tikpat aizraujoÅ”u darbu: programmēt robotu vadÄ«bas sistēmu loÄ£iku.

sākums

Man paveicās, ka visu savu bērnÄ«bu es murgoju par kosmosu. Tāpēc pēc skolas es ne minÅ«ti neÅ”aubÄ«jos, kur man jāiet mācÄ«ties, un iestājos MSTU. Baumans uz RaÄ·eÅ”u dzinēju inženierijas katedru. Taču pati kursa nozare - kosmosa raÄ·eÅ”u pulvera vai Ŕķidrie dzinēji - nemaz nebija jāizvēlas: 2001. gadā speciāla fakultātes komisija tomēr sadalÄ«ja reflektantu mērÄ·a grupas. Mani ieķēra Å”aujampulvera mucā.

Tolaik ā€œraÄ·eÅ”u bumsā€ pastāvēja tikai plānos, inženieri saņēma niecÄ«gas algas un strādāja Ä«paÅ”os slēgtos projektÄ“Å”anas birojos un pētniecÄ«bas institÅ«tos, kuriem praktiski nebija izredžu uz karjeru un profesionālo izaugsmi. Tomēr pulvera raÄ·etes Krievijā ir tikai militāras preces.

Tagad Ŕī joma ir pieprasÄ«ta, taču jau studiju laikā sapratu, ka raÄ·eÅ”u zinātnē jebkura darbÄ«ba pēc paÅ”a iniciatÄ«vas ir gandrÄ«z neiespējama. PatiesÄ«bā tas ir militārais dienests. Piemēram, strādājot raÄ·eÅ”u industrijā, man bÅ«tu pilnÄ«bā liegta iespēja patstāvÄ«gi izstrādāt programmatÅ«ru pat sev, jo Ŕī darbÄ«ba ir stingri reglamentēta.

Visi programmatÅ«ras produkti tiek izstrādāti tikai pēc Ä«paÅ”a pasÅ«tÄ«juma un ar slepenÄ«bas komisijas (tagad FSTEC nodaļa) apstiprinājumu. Izstrādātājam ir jāreÄ£istrējas un jālicencē burtiski katra koda rindiņa. Visa programmatÅ«ra sākotnēji ir slepena uzdevuma lÄ«menÄ«. Tas daļēji izskaidro, kāpēc programmatÅ«ra, ko tagad izmanto raÄ·eÅ”u zinātnes studentu apmācÄ«bai, tika izstrādāta agrākais deviņdesmitajos gados.

Laikā, kad pabeidzu institÅ«tu, es paguvu strādāt mehānismu teorijas nodaļā un sāku izstrādāt izglÄ«tÄ«bas procesa simulatoru C++ valodā, tāpēc man bija piemērs salÄ«dzinājumam un varēja izsvērt plusus un mÄ«nusus. Izvēle bija acÄ«mredzama, un es pamazām sāku virzÄ«ties uz IT un robotiku. LietiŔķā mehānika bija daudz jautrāka nekā raÄ·eÅ”u zinātne: daudzas neatrisinātas problēmas, atvērta vide, attÄ«stÄ«bas nozares trÅ«kums, steidzama vajadzÄ«ba pēc simulācijas programmatÅ«ras. Robotikā pastāv nesakārtota izplatÄ«tas programmatÅ«ras arhitektÅ«ra un nepiecieÅ”amÄ«ba atkārtoti ieviest sarežģītus algoritmus, tostarp izplÅ«duÅ”o loÄ£iku un AI pirmsākumus. Tāpēc pēc pirmajām eksperimentālo datu apstrādes programmām es gandrÄ«z nekad neatgriezos pie raÄ·etēm (izņemot manu beigÅ”anas projektu).

Rezultātā man bija iespēja strādāt savā specialitātē tikai četrus mēneÅ”us, pirms es absolvēju aviācijas un kosmosa industrijas kompozÄ«tmateriālu konstrukciju rÅ«pnÄ«cā netālu no Maskavas. Pabeidzot studijas, man pat nebija jāmeklē darbs ā€” es uzreiz atnācu mācÄ«t lietiŔķo mehāniku robotikas nodaļā.

No mācÄ«Å”anas lÄ«dz programmÄ“Å”anai

No raķetēm līdz robotiem un kāds ar to sakars Python. GeekBrains absolventu stāsts
IFTOMM pasaules kongresā ar pētnieku grupas studentiem (es pa labi)

Nostrādāju MSTU paraugu ņemÅ”anas nodaļā 10 gadus, pasniedzot kursu par mehānismu teoriju. ViņŔ publicēja zinātniskos darbus (skat. raksta beigas), pakāpeniski pārgāja no mehānikas uz CAD un robotiku. Un galu galā viņŔ nolēma pamest mācÄ«bas. Lai visskaidrāk ilustrētu Ŕī lēmuma iemeslus, teikÅ”u, ka desmit gadu laikā manis mācÄ«tais studiju kurss nav mainÄ«jies ne vienu zÄ«mi aiz komata. Lai gan lietiŔķā mehānika, spriežot pēc publikācijām, ļoti, ļoti veiksmÄ«gi virzÄ«jās uz priekÅ”u.

Turklāt darbs arvien vairāk atgādināja birokrātisku darbu ā€“ atskaites, programmas, standarti un tonnas papÄ«ra. Šādos apstākļos pasniegÅ”anas prieks tika aizstāts ar ziņoÅ”anu par Ŕī prieka saņemÅ”anu, un praktizējoÅ”am speciālistam tas ir vairāk nekā nepatÄ«kami.

Un beidzot pie robotikas nonācu Ŕādi: 2007.-2009.gadā kopā ar profesoriem A.Golovinu un N.Umnovu sākām gatavot pirmos zinātniskos darbus. Tur man bija jāizmanto algoritmi, lai noteiktu objektu ceļus no stroboskopijas. No Ŕīs tēmas ir viens solis lÄ«dz maŔīnredzei, OpenCV un robotizētajai operētājsistēmai (lai gan toreiz es par tādu mērogu pat nedomāju). Pēc tam es beidzot pievērsos lietiŔķajai mehānikai un robotikai pētniecÄ«bā, un attÄ«stÄ«ba kļuva par atbalsta darbÄ«bu.

Taču, lai atrastu jaunu darbu robotikā, bija nepiecieÅ”ams pilnveidot un papildināt programmÄ“Å”anas zināŔanas. Galu galā es nekad neesmu Ä«paÅ”i studējis IT, izņemot gadu ilgu universitātes kursu (ObjectPascal un Borland VCL C++ valodā), un izstrādes teorētiskajos aspektos paļāvos uz matemātiku.

Sākumā es apsvēru iespējas apmeklēt pilna laika kursus savā dzimtajā institÅ«tā. Tiesa, ātri kļuva skaidrs, ka Ŕādas studijas ar darbu katedrā bÅ«tu gandrÄ«z neiespējami apvienot neregulārā grafika un biežas darba ārpus sava grafika (aizvietoÅ”ana utt.) dēļ. Tā nu pamazām nonācu pie domas apmaksātus kursus pabeigt attālināti. Es nonācu GeekBrains pēc Mail.ru Technopark mācÄ«bu centra, kas atrodas Baumankā, profesoru ieteikuma un iestājos Python Programmer kursā.

Kursi nesagādāja grūtības, vienīgā problēma bija tā, ka nemitīgi nācās tos apvienot ar darbu katedrā, zinātniskajiem darbiem un pasākumiem. Laiks bija tik saspringts, ka lielākā daļa sociālo sakaru ārpus mājas bija jāupurē (par laimi, uz laiku).

Tā tiku galā ar darba slodzi: atrisināju problēmas ceļā. Šī daudzos komandējumos attīstītā prasme izrādījās ļoti noderīga, jo bez tās es pat nespētu izpildīt visus mājasdarbus (un tā aizvieto arī meditāciju...). Es iemācījos kodēt, atrodoties ceļā, izmantojot klēpjdatoru, viedtālruni un bezvadu viedtālruņa tastatūras.

Mans klēpjdators ir Dell Latitude 3470, un jebkurÅ” viedtālrunis, kura diagonāle ir 5.5 collas vai lielāka, ir savienots pārÄ« ar Logitech K 810 BT tastatÅ«ru. Kopumā Logitech produktus iesaku visiem, tie ir ļoti uzticami un var izturēt ļoti skarbus lietoÅ”anas apstākļus (un tā nekad nav reklāma).

No raķetēm līdz robotiem un kāds ar to sakars Python. GeekBrains absolventu stāsts
Logitech K810 tastatūra

Python ir ļoti labvēlÄ«gs Ŕādam darbam - ja jums ir labs redaktors. Vēl viens programmÄ“Å”anas uzlauzums: izmantojiet attālos savienojumus ar darbvirsmu vai izpildlaika vidi. Es pabeidzu vairākus uzdevumus, izmantojot droÅ”u tÄ«mekļa serveri, kurā manā mājas datorā darbojas Django. Strādāju no vilciena, izmantojot programmatÅ«ru PyDroid, DroidEdit, Maxima.

Kāpēc Python?

Nepagāja ilgs laiks, kad es mēģināju izmantot PHP kā sistēmas skriptu valodu. Sākotnēji es mācÄ«jos Python viens pats un pamazām "sev". Es nolēmu nopietni studēt pēc tam, kad uzzināju par efektÄ«va savienojuma esamÄ«bu starp Python un C++ moduļu lÄ«menÄ« ā€“ Ŕķita interesanti dalÄ«ties ar optimizētiem algoritmiem un datu sagatavoÅ”anas procedÅ«rām vienas valodas ietvaros.

VienkārŔākais piemērs: ir nestandarta jaudÄ«ga diska vadÄ«bas sistēma, kas ieviesta iegultā maŔīnā ar RISC procesoru, C++ valodā. PārvaldÄ«ba notiek, izmantojot ārēju no maŔīnas atkarÄ«gu API, kas atbalsta, piemēram, saziņu starp apakÅ”sistēmām tÄ«klā. Augstā lÄ«menÄ« piedziņas darbÄ«bas algoritms netiek atkļūdots vai nav nemainÄ«gs (nepiecieÅ”ams ielādēt dažādus algoritmus atkarÄ«bā no darba procesa).

Viens no labākajiem veidiem, kā izveidot Ŕādu sistēmu, ir izmantot maŔīnai raksturÄ«go C++ apakÅ”sistēmas API kā pamatu Python klaÅ”u kopai, kas darbojas ar starpplatformu tulku. Tādējādi augstākā lÄ«meņa izstrādātājam nebÅ«s jāņem vērā iegultās maŔīnas un tās operētājsistēmas iespējas, viņŔ vienkārÅ”i strādās ar Python klasēm, kas darbojas kā zema lÄ«meņa API ā€œiesaiņotājiā€.

Man bija jāiemācās C++ un Python saistÄ«Å”ana gandrÄ«z no nulles. Ātri kļuva skaidrs, ka objektorientētas iespējas augstā lÄ«menÄ« ir daudz svarÄ«gākas nekā zemā lÄ«menÄ«. Å Ä« iemesla dēļ mums bija pilnÄ«bā jāmaina pieeja API izstrādei un ievieÅ”anai, izvēloties klases Python lÄ«menÄ« un kopÄ«gojot globālos datus C/C++. Pierodiet pie koda Ä£enerÄ“Å”anas: piemēram, ROS ietvars pats Python Ä£enerē nosaukumus un objektus, tāpēc, veidojot saskarnes, ir jāņem vērā valodu atŔķirÄ«bas, Ä«paÅ”i rakstÄ«Å”anas laikā.

Darbs tagadnē: Python un robotu vadības loģika

Tagad strādāju par Python un C++ programmētāju Maskavas Valsts tehniskās universitātes Robotikas pētniecības un izglītības centrā. Mēs īstenojam valsts departamentu pasūtītus pētniecības projektus un programmatūras rīkus: izstrādājam manipulatorus ar iebūvētām tehniskās redzes sistēmām un augsta līmeņa automātiskās vadības algoritmiem, kas ir neatkarīgi no sistēmām.

PaÅ”laik es programmēju augsta lÄ«meņa loÄ£iku robotu vadÄ«bas sistēmām Python; Ŕī valoda savieno ļoti optimizētus moduļus, kas rakstÄ«ti C++, assembler un Go.

Programmējot robotu vadÄ«bas algoritmus, tiek izmantotas divas lielas algoritmu grupas. Pirmais no tiem ir ieviests tieÅ”i iekārtās, zemā lÄ«menÄ« - tā ir iebÅ«vēta piedziņas kontrolleru, sakaru lÄ«niju koncentratoru un operatora mijiedarbÄ«bas apakÅ”sistēmu programmatÅ«ra.

Å eit minētie algoritmi ir paredzēti kontrolētam izpildes ātrumam un uzticamÄ«bai, kas pārsniedz robota veiktspēju kopumā. Pēdējais ir obligāts, jo visas sistēmas droŔība ir atkarÄ«ga no zema lÄ«meņa vadÄ«bas programmatÅ«ras.

Otrā algoritmu grupa nosaka robota darbÄ«bu kopumā. Tās ir augsta lÄ«meņa programmas, kuru izstrādē uzsvars tiek likts uz algoritma ievieÅ”anas skaidrÄ«bu un ātrumu, bieži vien diezgan sarežģītas. Turklāt iestatÄ«Å”anas un testÄ“Å”anas procesā ļoti bieži robota augsta lÄ«meņa programmatÅ«ra var tikt mainÄ«ta. Šādai attÄ«stÄ«bai ir nepiecieÅ”amas vispārējas tulkoÅ”anas valodas.

Kādas zināŔanas nepiecieŔamas Ŕādam darbam?

Obligāti būs jāizpēta C++ veidņu valoda un Python objektorientētās iespējas. Gandrīz neaizvietojama prasme ir spēja izstrādāt un dokumentēt API. Būtu ieteicams izpētīt specializēto bibliotēku, piemēram, Boost::Python, iespējas. Tiem, kas strādā ar zema līmeņa programmatūru, noteikti nāksies saskarties ar multithreading (kodola līmenī) un Linux/UNIX/QNX sistēmas izsaukumiem. Lai uzlabotu izpratni par robotikas principiem, ir ļoti noderīgi iepazīties ar robotu operētājsistēmu ietvaru.

CenÅ”os, lai bÅ«tu vismaz viena apkopota un viena interpretēta programmÄ“Å”anas valoda, kas attÄ«stās un ir pieprasÄ«ta. Å Ä« ir uzvaroÅ”a stratēģija darbam inženierzinātnēs, kur pastāvÄ«gi ir nepiecieÅ”ams izstrādāt augsti specializētus (lasi: neparastus) algoritmus un ieviest tos kompilÄ“Å”anas valodās. Šādas programmatÅ«ras datu sagatavoÅ”anas uzdevumu ir daudz patÄ«kamāk atrisināt, izmantojot interpretētās valodas. Sākotnēji manā komplektā bija C++, Pascal un BASIC, vēlāk tika pievienoti PHP un BASH.

Kā attÄ«stÄ«bas instrumenti var bÅ«t noderÄ«gi skolēnu mācÄ«Å”anai

Galvenais profesionālās pilnveides plāns Å”obrÄ«d ir mēģināt nodroÅ”ināt zinātnisku pamatojumu profesionālu programmatÅ«ras izstrādes rÄ«ku izmantoÅ”anai pedagoÄ£ijā, izstrādāt un pārbaudÄ«t mācÄ«bu metodes.

KopÅ” 2016. gada sāku lielu eksperimentu izstrādes rÄ«ku - programmÄ“Å”anas valodu, IDE, dokumentācijas Ä£eneratoru, versiju kontroles sistēmu - ievieÅ”anā augstākās izglÄ«tÄ«bas mācÄ«bu praksē. Tagad mums ir izdevies iegÅ«t rezultātus, kurus var kvalitatÄ«vi vispārināt.

Piemēram, materiālu versijas ievieÅ”ana izglÄ«tÄ«bas procesā bÅ«tiski uzlabo studentu darba kvalitāti, tomēr tikai ar obligātu nosacÄ«jumu: studenti strādā kopā pie kopÄ«giem projektiem. Tehnisko disciplÄ«nu mācÄ«Å”anas metožu izstrādi, izmantojot profesionālus programmatÅ«ras izstrādes rÄ«kus, Å”obrÄ«d aktÄ«vi veic mana pētnieku grupa, kurā ir studenti, reflektanti un MSTU papildu izglÄ«tÄ«bas programmu studenti.

Starp citu, es nepametu savu pedagoÄ£isko praksi - es izstrādāju savu padziļinātu pilna laika kursu par Linux dizainu un administrÄ“Å”anu MSTU Padziļināto studiju institÅ«tam, un es to mācu pats.

Zinātniskais darbs

Agrīnie darbi
Gaitas plānoÅ”anas problēmas, veidojot četrkājainās pastaigas sistēmas, izmantojot zirga gaitas Ä«stenoÅ”anas piemēru (2010)

Jautājumā par zirga priekŔējās kājas atbalsta elementa kinemātiku un noslogojumu atbalstam pietuvoÅ”anās stadijā kā četrkājainā kustinātāja darba cikla sastāvdaļām (2012)

No pēdējā
3D zobratu ražoŔanas simulācijas lietojumprogramma mehānismu un maŔīnu teorijas mācīŔanai (2019)

Strukturālo ŔķērŔļu atpazÄ«Å”anas metode un pielietojums reljefa objektu meklÄ“Å”anā (2018)

Citus darbus, kas indeksēti zinātnisko citātu datubāzēs, var redzēt manā profilā vietnē ResearchGate. Lielākā daļa rakstu veltÄ«ti maŔīnu kustÄ«bai, ir darbi par inženierpedagoÄ£iju un izglÄ«tÄ«bas programmatÅ«ru.

Avots: www.habr.com

Pievieno komentāru