Kutoka kwa roketi hadi roboti na Python ina uhusiano gani nayo. Hadithi ya Wahitimu wa GeekBrains

Kutoka kwa roketi hadi roboti na Python ina uhusiano gani nayo. Hadithi ya Wahitimu wa GeekBrains
Leo tunachapisha hadithi ya mabadiliko ya Andrey Vukolov kwa IT. Shauku yake ya utotoni ya anga ilimpeleka kusoma sayansi ya roketi katika MSTU. Ukweli mkali ulinifanya nisahau kuhusu ndoto, lakini kila kitu kiligeuka kuvutia zaidi. Kusoma C++ na Python kuliniruhusu kufanya kazi ya kufurahisha sawa: kupanga mantiki ya mifumo ya udhibiti wa roboti.

mwanzo

Nilikuwa na bahati ya kufurahia nafasi utoto wangu wote. Kwa hivyo, baada ya shule, sikuwa na shaka kwa dakika moja ambapo nilipaswa kwenda kusoma, na niliingia MSTU. Bauman, kwa Idara ya Uhandisi wa Uendeshaji wa Roketi. Walakini, tawi la kozi yenyewe - injini za poda au kioevu za roketi za anga - haikulazimika kuchaguliwa hata kidogo: mnamo 2001, tume maalum ya kitivo bado ilisambaza vikundi vilivyolengwa vya waombaji. Nilinaswa ndani ya dumu la baruti.

Wakati huo, "roketi boom" ilikuwepo tu katika mipango; wahandisi walipokea mishahara kidogo na walifanya kazi katika ofisi maalum za kubuni zilizofungwa na taasisi za utafiti bila matarajio yoyote ya ukuaji wa kazi na kitaaluma. Bado, roketi za poda nchini Urusi ni bidhaa za kijeshi tu.

Sasa eneo hili linahitajika, lakini tayari wakati wa masomo yangu niligundua kuwa katika sayansi ya roketi shughuli yoyote kwa hiari ya mtu mwenyewe haiwezekani. Kwa kweli, hii ni huduma ya kijeshi. Kwa mfano, nikifanya kazi katika tasnia ya roketi, ningenyimwa kabisa fursa ya kukuza programu kwa uhuru, hata kwangu, kwani shughuli hii inadhibitiwa madhubuti.

Bidhaa zote za programu zinatengenezwa kwa utaratibu maalum na kwa idhini ya tume ya usiri (sasa ni mgawanyiko wa FSTEC). Msanidi programu hapo anahitajika kusajili na kutoa leseni kihalisi kila safu ya msimbo. Programu zote hapo awali ni siri katika kiwango cha kazi. Hii inaelezea kwa nini programu inayotumika sasa kutoa mafunzo kwa wanafunzi wa sayansi ya roketi ilitengenezwa miaka ya 90 hapo awali.

Kufikia wakati nilihitimu kutoka kwa taasisi hiyo, nilifanikiwa kufanya kazi katika idara ya nadharia ya utaratibu na nikaanza kutengeneza kiigaji cha mchakato wa elimu katika C++, kwa hivyo nilikuwa na mfano wa kulinganisha na ningeweza kupima faida na hasara. Chaguo lilikuwa dhahiri, na polepole nilianza kuelekea IT na robotiki. Mitambo iliyotumika ilikuwa ya kufurahisha zaidi kuliko sayansi ya roketi: shida nyingi ambazo hazijatatuliwa, mazingira wazi, ukosefu wa tasnia ya maendeleo, hitaji la dharura la programu ya kuiga. Katika robotiki, kuna usanifu usio na utulivu wa programu ya kawaida na haja ya kutekeleza mara kwa mara algorithms ngumu, ikiwa ni pamoja na mantiki ya fuzzy na mwanzo wa AI. Kwa hivyo, baada ya programu zangu za kwanza za usindikaji wa data ya majaribio, karibu sikurudi kwenye roketi (isipokuwa mradi wangu wa kuhitimu).

Matokeo yake, nilipata fursa ya kufanya kazi katika utaalam wangu kwa muda wa miezi minne tu kabla ya kuhitimu katika kiwanda karibu na Moscow kwa ajili ya miundo ya composite kwa sekta ya anga. Baada ya kumaliza masomo yangu, sikuhitaji hata kutafuta kaziβ€”mara moja nilikuja kufundisha umekanika kwenye idara ya roboti.

Kutoka kufundisha hadi programu

Kutoka kwa roketi hadi roboti na Python ina uhusiano gani nayo. Hadithi ya Wahitimu wa GeekBrains
Katika Kongamano la Dunia la IFTOMM na wanafunzi wa kikundi cha utafiti (mimi kulia)

Nilifanya kazi katika MSTU katika idara ya sampuli kwa miaka 10, nikifundisha kozi ya nadharia ya taratibu. Alichapisha kazi za kisayansi (tazama mwisho wa kifungu), polepole alihama kutoka kwa mechanics kuelekea CAD na robotiki. Na mwisho aliamua kuacha kufundisha. Ili kuonyesha waziwazi sababu za uamuzi huu, nitasema kwamba katika miaka kumi kozi ya masomo niliyofundisha haijabadilisha nafasi moja ya decimal. Ingawa mitambo iliyotumika, kwa kuzingatia machapisho, ilisonga mbele kwa mafanikio sana.

Kwa kuongeza, kazi zaidi na zaidi ilifanana na kazi ya ukiritimba - ripoti, mipango, viwango na tani za karatasi. Katika hali kama hizi, raha ya kufundisha ilibadilishwa na kutoa taarifa juu ya kupokea raha hii, na hii ni zaidi ya mbaya kwa mtaalamu wa mazoezi.

Na mwishowe nilikuja kwa robotiki kama hii: mnamo 2007-2009, pamoja na maprofesa A. Golovin na N. Umnov, tulianza kuandaa kazi za kwanza za kisayansi. Huko ilinibidi kutumia algorithms kuamua njia za vitu kutoka kwa upigaji picha wa strobe. Kutoka kwa mada hii ni hatua moja kwa maono ya mashine, OpenCV na Mfumo wa Uendeshaji wa Robotic (ingawa wakati huo sikufikiria hata kiwango kama hicho). Baada ya hapo, hatimaye nililenga kutumia mechanics na roboti katika utafiti, na maendeleo yakawa shughuli ya kusaidia.

Hata hivyo, ili kupata kazi mpya katika robotiki, ilikuwa ni lazima kuboresha na kuongeza ujuzi wangu wa programu. Baada ya yote, sikuwahi kusoma IT hasa, isipokuwa kwa kozi ya chuo kikuu ya mwaka mzima (ObjectPascal na Borland VCL katika C ++), na nilitegemea hisabati kwa vipengele vya kinadharia vya maendeleo.

Mwanzoni nilizingatia chaguzi za kozi za wakati wote katika taasisi yangu ya asili. Ukweli, ilionekana wazi kuwa haiwezekani kuchanganya masomo kama haya na kazi katika idara kwa sababu ya ratiba isiyo ya kawaida na kazi ya mara kwa mara nje ya ratiba ya mtu mwenyewe (badala, nk). Kwa hivyo polepole nikapata wazo la kumaliza kozi zilizolipwa kwa mbali. Nilikuja kwa GeekBrains kwa pendekezo la maprofesa kutoka kituo cha mafunzo cha Mail.ru Technopark, kilichoko Baumanka, na kujiandikisha katika kozi ya Python Programmer.

Kozi hizo hazikusababisha ugumu wowote, shida pekee ilikuwa kwamba nililazimika kuchanganya kila wakati na kazi katika idara, kazi za kisayansi na hafla. Muda ulikuwa mgumu sana hivi kwamba miunganisho mingi ya kijamii nje ya nyumba ililazimika kutolewa dhabihu (kwa bahati nzuri, kwa muda).

Hivi ndivyo nilivyokabiliana na mzigo wa kazi: Nilitatua matatizo barabarani. Ustadi huu, uliokuzwa kupitia safari nyingi za biashara, uligeuka kuwa muhimu sana, kwani bila hiyo singeweza hata kukamilisha kazi yangu yote ya nyumbani (na pia inachukua nafasi ya kutafakari ...). Nilijifunza kuweka msimbo popote pale kwa kutumia kompyuta yangu ya mkononi, simu mahiri na kibodi zisizotumia waya.

Kompyuta yangu ndogo ni Dell Latitude 3470, na simu mahiri yoyote iliyo na diagonal ya inchi 5.5 au zaidi iliyooanishwa na kibodi ya Logitech K 810 BT itafanya. Kwa ujumla, ninapendekeza bidhaa za Logitech kwa kila mtu; ni za kuaminika sana na zinaweza kuhimili hali mbaya ya matumizi (na hii sio tangazo kamwe).

Kutoka kwa roketi hadi roboti na Python ina uhusiano gani nayo. Hadithi ya Wahitimu wa GeekBrains
Kibodi ya Logitech K810

Python inafaa sana kwa kazi kama hiyo - ikiwa una mhariri mzuri. Udukuzi mwingine wa programu: tumia viunganisho vya mbali kwenye eneo-kazi au mazingira ya wakati wa kukimbia. Nilikamilisha kazi kadhaa kwa kutumia seva salama ya wavuti inayoendesha Django kwenye kompyuta yangu ya nyumbani. Nilifanya kazi kutoka kwa treni, kwa kutumia programu ya PyDroid, DroidEdit, Maxima.

Kwa nini Python?

Haikupita muda mrefu kabla nilijaribu kutumia PHP kama lugha ya uandishi wa mfumo. Hapo awali nilisoma Python peke yangu na kidogo kidogo "kwangu." Niliamua kusoma kwa umakini baada ya kujifunza juu ya uwepo wa muunganisho mzuri kati ya Python na C++ katika kiwango cha moduli - ilionekana kupendeza kushiriki algorithms iliyoboreshwa na taratibu za utayarishaji wa data ndani ya lugha moja.

Mfano rahisi zaidi: kuna mfumo wa udhibiti wa gari la nguvu isiyo ya kawaida, inayotekelezwa kwenye mashine iliyoingia na processor ya RISC, katika C ++. Usimamizi hutokea kupitia API ya nje inayotegemea mashine, ambayo inasaidia, kwa mfano, mawasiliano kati ya mifumo ndogo kwenye mtandao. Kwa kiwango cha juu, algorithm ya uendeshaji wa gari haijatatuliwa au sio mara kwa mara (ni muhimu kupakia algorithms tofauti kulingana na mchakato wa kazi).

Mojawapo ya njia bora za kufikia mfumo kama huu ni kutumia API ya mfumo mdogo wa C++ kama msingi wa seti ya madarasa ya Python ambayo huendeshwa kwa mkalimani wa jukwaa-msalaba. Kwa hivyo, msanidi wa kiwango cha juu hatalazimika kuzingatia sifa za mashine iliyopachikwa na OS yake; atafanya kazi tu na madarasa ya Python ambayo hufanya kama "vifuniko" vya API ya kiwango cha chini.

Ilinibidi nijifunze C++ na Python inayofunga karibu kutoka mwanzo. Haraka ikawa wazi kuwa uwezo wa kuelekeza kitu katika kiwango cha juu ulikuwa muhimu zaidi kuliko kiwango cha chini. Kwa sababu ya hili, tulilazimika kubadilisha kabisa mbinu ya kubuni na kutekeleza API, kuchagua madarasa katika kiwango cha Python na kushiriki data ya kimataifa katika C/C++. Pata kuzoea kuunda msimbo: kwa mfano, mfumo wa ROS yenyewe hutoa majina na vitu kwenye Python, kwa hivyo lazima uzingatie tofauti za lugha, haswa katika kuandika, wakati wa kuunda miingiliano yako.

Kufanya kazi kwa Sasa: ​​Mantiki ya Udhibiti wa Python na Robot

Sasa ninafanya kazi kama Python na C++ programu katika Kituo cha Utafiti na Elimu ya Roboti katika Chuo Kikuu cha Ufundi cha Jimbo la Moscow. Tunatekeleza miradi ya utafiti na zana za programu zilizoagizwa na idara za serikali: tunatengeneza vidanganyifu vilivyo na mifumo ya maono ya kiufundi iliyojengewa ndani na algoriti za udhibiti otomatiki za kiwango cha juu ambazo hazitegemei mifumo.

Kwa sasa, ninapanga mantiki ya kiwango cha juu kwa mifumo ya udhibiti wa roboti katika Python; lugha hii inaunganisha pamoja moduli zilizoboreshwa zaidi zilizoandikwa katika C++, kikusanyaji, na Go.

Katika algorithms ya kudhibiti roboti za programu, vikundi viwili vikubwa vya algorithms hutumiwa. Ya kwanza yao inatekelezwa moja kwa moja kwenye vifaa, kwa kiwango cha chini - hii ni programu iliyojengwa ya watawala wa gari, concentrators ya mstari wa mawasiliano, na subsystems ya mwingiliano wa operator.

Kanuni hapa zimeundwa kwa kasi ya utekelezaji inayodhibitiwa na kutegemewa ambayo inazidi utendakazi wa roboti kwa ujumla. Mwisho ni wa lazima, kwani usalama wa mfumo mzima unategemea programu ya udhibiti wa kiwango cha chini.

Kundi la pili la algorithms huamua uendeshaji wa roboti kwa ujumla. Hizi ni mipango ya kiwango cha juu, msisitizo katika maendeleo ambayo ni juu ya uwazi na kasi ya utekelezaji wa algorithm, mara nyingi ni ngumu sana. Kwa kuongezea, programu ya kiwango cha juu kwenye roboti mara nyingi sana inaweza kubadilika wakati wa mchakato wa usanidi na majaribio. Kwa maendeleo kama haya, lugha zilizotafsiriwa kwa madhumuni ya jumla ni muhimu sana.

Ni ujuzi gani unaohitajika kwa kazi hiyo?

Itakuwa lazima kusoma lugha ya kiolezo cha C++ na uwezo wa Python unaolengwa na kitu. Ujuzi unaokaribia kutoweza kubadilishwa ni uwezo wa kubuni na kuweka kumbukumbu za API. Itakuwa wazo nzuri kuchunguza uwezo wa maktaba maalum kama Boost::Python. Wale wanaofanya kazi na programu ya kiwango cha chini bila shaka watalazimika kushughulika na usomaji mwingi (katika kiwango cha kernel) na simu za mfumo wa Linux/UNIX/QNX. Ili kuboresha uelewa wako wa kanuni za robotiki, ni muhimu sana kujifahamisha na mfumo wa Mfumo wa Uendeshaji wa Roboti.

Ninajaribu kuwa na angalau lugha moja iliyokusanywa na iliyotafsiriwa ya programu ambayo inakua na inahitajika. Huu ni mkakati wa kushinda wa kufanya kazi katika uhandisi, ambapo kuna haja ya mara kwa mara ya kuendeleza algoriti maalum (kusoma: isiyo ya kawaida) na kuzitekeleza katika lugha za kukusanya. Kazi ya kuandaa data kwa programu kama hiyo ni ya kupendeza zaidi kutatua kwa kutumia lugha zilizotafsiriwa. Hapo awali, seti yangu ilijumuisha C ++, Pascal na BASIC, baadaye PHP na BASH ziliongezwa.

Jinsi zana za ukuzaji zinaweza kuwa muhimu katika kufundisha wanafunzi

Mpango mkuu wa maendeleo ya kitaaluma sasa ni kujaribu kutoa msingi wa kisayansi wa matumizi ya zana za kitaaluma za maendeleo ya programu katika ufundishaji, kuendeleza na kupima mbinu za kufundisha.

Tangu 2016, nilianza jaribio kubwa la kuanzisha zana za maendeleo - lugha za programu, IDE, jenereta za nyaraka, mifumo ya udhibiti wa matoleo - katika mazoezi ya kufundisha katika elimu ya juu. Sasa tumefanikiwa kupata matokeo ambayo yanaweza kuwa ya jumla ya ubora.

Kwa mfano, kuanzishwa kwa toleo la vifaa katika mchakato wa elimu kunaboresha kwa kiasi kikubwa ubora wa kazi ya wanafunzi, hata hivyo, tu chini ya hali ya lazima: wanafunzi wanaofanya kazi pamoja kwenye miradi ya pamoja. Uundaji wa mbinu za kufundisha taaluma za kiufundi kwa kutumia zana za kitaalamu za ukuzaji programu sasa unafanywa kikamilifu na kikundi changu cha utafiti, kinachojumuisha wanafunzi, waombaji na wanafunzi wa programu za elimu ya ziada katika MSTU.

Kumbe, sikuacha mazoezi yangu ya kufundisha - nilianzisha kozi yangu ya kina ya usanifu na usimamizi wa Linux kwa Taasisi ya Mafunzo ya Juu katika MSTU, na ninaifundisha mimi mwenyewe.

Kazi ya kisayansi

Kazi za mapema
Masuala ya kupanga gait wakati wa kubuni mifumo ya kutembea kwa miguu minne kwa kutumia mfano wa utekelezaji wa gait ya farasi (2010 g.)

Juu ya suala la kinematics na upakiaji wa sehemu inayounga mkono ya mguu wa mbele wa farasi katika hatua ya kukaribia msaada kama sehemu za mzunguko wa kufanya kazi wa msongaji wa miguu-minne. (2012 g.)

Kutoka mwisho
Maombi ya uigaji wa utengenezaji wa gia za 3D kwa utaratibu wa kufundisha na nadharia ya mashine (2019 g.)

Njia ya kutambua vikwazo vya kimuundo na matumizi yake katika kutafuta vitu vya misaada (2018 g.)

Kazi zingine zilizoorodheshwa na hifadhidata za nukuu za kisayansi zinaweza kuonekana kwenye wasifu wangu ResearchGate. Nakala nyingi zimejitolea kwa harakati za mashine, kuna kazi za ufundishaji wa uhandisi na programu ya kielimu.

Chanzo: mapenzi.com

Kuongeza maoni