Å 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
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).
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
No pÄdÄjÄ
Citus darbus, kas indeksÄti zinÄtnisko citÄtu datubÄzÄs, var redzÄt manÄ profilÄ vietnÄ
Avots: www.habr.com