Gikan sa mga rocket hangtod sa mga robot ug unsa ang kalabotan sa Python niini. Istorya sa GeekBrains Alumni

Gikan sa mga rocket hangtod sa mga robot ug unsa ang kalabotan sa Python niini. Istorya sa GeekBrains Alumni
Karon among gipatik ang istorya sa pagbalhin ni Andrey Vukolov sa IT. Ang iyang kahinam sa pagkabata alang sa wanang kaniadto nagdala kaniya sa pagtuon sa rocket science sa MSTU. Ang mapintas nga kamatuoran nakapalimot kanako sa damgo, apan ang tanan nahimong mas makapaikag. Ang pagtuon sa C++ ug Python nagtugot kanako sa pagbuhat sa parehas nga makapahinam nga trabaho: pagprograma sa lohika sa mga sistema sa pagkontrol sa robot.

Начало

Swerte ko nga naghinamhinam bahin sa wanang sa tanan nakong pagkabata. Busa, pagkahuman sa klase, wala ako magduhaduha sa usa ka minuto kung asa ako moadto aron magtuon, ug misulod ako sa MSTU. Bauman, ngadto sa Departamento sa Rocket Propulsion Engineering. Bisan pa, ang sanga sa kurso mismo - powder o likido nga mga makina sa mga rocket sa wanang - dili kinahanglan nga pilion: kaniadtong 2001, usa ka espesyal nga komisyon sa faculty ang nag-apod-apod gihapon sa mga target nga grupo sa mga aplikante. Nasakpan ko sa tabil sa pulbura.

Nianang panahona, ang "rocket boom" anaa lamang sa mga plano; ang mga inhenyero nakadawat og gamay nga sweldo ug nagtrabaho sa espesyal nga closed design bureaus ug research institute nga halos walay mga palaaboton alang sa karera ug propesyonal nga pagtubo. Bisan pa, ang mga powder rocket sa Russia pulos mga produkto sa militar.

Karon kini nga lugar gipangayo, apan sa panahon sa akong pagtuon akong naamgohan nga sa rocket science ang bisan unsang kalihokan sa kaugalingon nga inisyatiba hapit imposible. Sa pagkatinuod, serbisyo militar kini. Pananglitan, nga nagtrabaho sa industriya sa rocket, ako hingpit nga gihikawan sa oportunidad nga independente nga pagpalambo sa software, bisan alang sa akong kaugalingon, tungod kay kini nga kalihokan hugot nga gi-regulate.

Ang tanan nga mga produkto sa software gihimo nga eksklusibo sa espesyal nga order ug uban ang pagtugot sa secrecy commission (karon usa ka dibisyon sa FSTEC). Ang developer didto gikinahanglan nga magparehistro ug maglisensya sa matag linya sa code. Ang tanan nga software sa sinugdan sekreto sa lebel sa buluhaton. Kini nga bahin nagpatin-aw ngano nga ang software nga gigamit karon sa pagbansay sa mga estudyante sa rocket science naugmad kaniadtong 90s sa labing bag-o.

Sa panahon nga ako migraduwar gikan sa institute, nakahimo ako sa pagtrabaho sa departamento sa mekanismo sa teorya ug nagsugod sa pagpalambo sa usa ka edukasyonal nga proseso simulator sa C ++, mao nga ako adunay usa ka panig-ingnan alang sa pagtandi ug makatimbang sa mga pros ug cons. Dayag ang pagpili, ug anam-anam ako nga nagsugod sa pag-anod sa IT ug robotics. Ang gipadapat nga mga mekaniko mas makalingaw kay sa rocket science: daghang wala masulbad nga mga problema, usa ka bukas nga palibot, kakulang sa industriya sa kalamboan, usa ka dinalian nga panginahanglan alang sa simulation software. Sa robotics, adunay usa ka wala masulbad nga arkitektura sa komon nga software ug ang panginahanglan sa balik-balik nga pagpatuman sa komplikado nga mga algorithm, lakip na ang fuzzy logic ug ang sinugdanan sa AI. Busa, pagkahuman sa akong una nga mga programa alang sa pagproseso sa datos sa eksperimento, halos wala na ako mobalik sa mga rocket (gawas sa akong proyekto sa pagtapos).

Ingon usa ka sangputanan, nakahigayon ako nga magtrabaho sa akong espesyalidad sulod lamang sa upat ka bulan sa wala pa mograduwar sa usa ka planta duol sa Moscow alang sa mga komposit nga istruktura alang sa industriya sa aerospace. Human makahuman sa akong pagtuon, wala na ko mangitag trabahoβ€”miadto dayon ko aron sa pagtudlo sa mga mekaniko nga gigamit sa departamento sa robotics.

Gikan sa pagtudlo hangtod sa programming

Gikan sa mga rocket hangtod sa mga robot ug unsa ang kalabotan sa Python niini. Istorya sa GeekBrains Alumni
Sa IFTOMM World Congress kauban ang mga miyembro sa estudyante sa grupo sa panukiduki (ako sa tuo)

Nagtrabaho ko sa MSTU sa sampling department sulod sa 10 ka tuig, nagtudlo og kurso sa theory of mechanisms. Gipatik niya ang siyentipikong mga buhat (tan-awa ang katapusan sa artikulo), hinayhinay nga mibalhin gikan sa mekaniko padulong sa CAD ug robotics. Ug sa katapusan nakahukom siya sa pagbiya sa pagtudlo. Aron sa labing tin-aw nga pag-ilustrar sa mga rason alang niini nga desisyon, ako moingon nga sa napulo ka tuig ang kurso sa pagtuon nga akong gitudlo wala mausab sa usa ka decimal nga dapit. Bisan kung ang gipadapat nga mga mekaniko, sa paghukom sa mga publikasyon, miuswag kaayo, malampuson kaayo.

Dugang pa, ang trabaho mas ug mas susama sa burukratikong trabaho - mga taho, mga programa, mga sumbanan ug toneladang papel. Sa ingon nga mga kahimtang, ang kalipay sa pagtudlo gipulihan sa pagreport sa pagkadawat niini nga kalipayan, ug kini labi pa nga dili maayo alang sa usa ka espesyalista nga nagpraktis.

Ug sa katapusan miabut ko sa robotics sama niini: sa 2007-2009, uban sa mga propesor A. Golovin ug N. Umnov, nagsugod kami sa pag-andam sa unang mga buhat sa siyensya. Didto kinahanglan kong mogamit og mga algorithm aron mahibal-an ang mga agianan sa mga butang gikan sa strobe photography. Gikan sa kini nga hilisgutan usa kini ka lakang sa panan-aw sa makina, OpenCV ug Robotic Operating System (bisan kung wala pa ako naghunahuna bahin sa ingon nga sukdanan nianang panahona). Pagkahuman niana, sa katapusan naka-focus ako sa mga gigamit nga mekaniko ug robotics sa panukiduki, ug ang pag-uswag nahimong usa ka kalihokan nga nagsuporta.

Bisan pa, aron makapangita usa ka bag-ong trabaho sa robotics, kinahanglan nga pauswagon ug madugangan ang akong kahibalo sa programming. Human sa tanan, wala gayud ako nagtuon sa IT nga espesipiko, gawas sa usa ka tuig nga kurso sa unibersidad (ObjectPascal ug Borland VCL sa C ++), ug nagsalig sa matematika alang sa teoretikal nga mga aspeto sa kalamboan.

Sa sinugdan akong gikonsiderar ang mga opsyon alang sa full-time nga mga kurso sa akong lumad nga institute. Tinuod, dali nga nahimong tin-aw nga hapit imposible nga ikombinar ang ingon nga mga pagtuon sa trabaho sa departamento tungod sa dili regular nga iskedyul ug kanunay nga trabaho sa gawas sa kaugalingon nga iskedyul (pagpuli, ug uban pa). Mao nga anam-anam ako nga nakahunahuna sa pagkompleto sa bayad nga mga kurso sa layo. Mianhi ko sa GeekBrains sa rekomendasyon sa mga propesor gikan sa Mail.ru Technopark training center, nga nahimutang sa Baumanka, ug nagpalista sa Python Programmer nga kurso.

Ang mga kurso wala magpahinabog bisan unsang mga kalisud, ang bugtong problema mao nga kinahanglan nako kanunay nga isagol kini sa trabaho sa departamento, mga buhat sa siyensya ug mga panghitabo. Ang panahon hugot kaayo nga kadaghanan sa mga sosyal nga koneksyon sa gawas sa panimalay kinahanglan nga isakripisyo (maayo na lang, temporaryo).

Ingon niini ang akong pagsagubang sa kabug-at sa trabaho: Nasulbad nako ang mga problema sa dalan. Kini nga kahanas, nga naugmad pinaagi sa daghang mga pagbiyahe sa negosyo, nahimo nga mapuslanon kaayo, tungod kay kung wala kini dili nako makompleto ang tanan nakong buluhaton sa balay (ug gipulihan usab niini ang pagpamalandong ...). Nakakat-on ko sa pag-code on the go gamit ang akong laptop, smartphone, ug wireless nga mga keyboard sa smartphone.

Ang akong laptop usa ka Dell Latitude 3470, ug ang bisan unsang smartphone nga adunay diagonal nga 5.5 ka pulgada o labaw pa nga gipares sa usa ka Logitech K 810 BT nga keyboard mahimo. Sa kinatibuk-an, girekomenda ko ang mga produkto sa Logitech sa tanan; sila kasaligan kaayo ug makasugakod sa grabe nga mga kondisyon sa paggamit (ug dili kini usa ka ad).

Gikan sa mga rocket hangtod sa mga robot ug unsa ang kalabotan sa Python niini. Istorya sa GeekBrains Alumni
Keyboard nga Logitech K810

Ang Python maayo kaayo sa ingon nga trabaho - kung ikaw adunay maayo nga editor. Laing programming hack: gamita ang hilit nga mga koneksyon sa desktop o runtime nga palibot. Nakompleto nako ang daghang mga buluhaton gamit ang usa ka luwas nga web server nga nagpadagan sa Django sa akong kompyuter sa balay. Nagtrabaho ko gikan sa tren, gamit ang software nga PyDroid, DroidEdit, Maxima.

Nganong Python?

Wala madugay gisulayan nako nga gamiton ang PHP ingon usa ka sinultian nga scripting sa sistema. Nagtuon ko sa Python sa akong kaugalingon ug sa hinay-hinay "para sa akong kaugalingon." Nakahukom ko nga magtuon nga seryoso pagkahuman nako nahibal-an ang bahin sa pagkaanaa sa usa ka epektibo nga koneksyon tali sa Python ug C ++ sa lebel sa module - ingon makapaikag nga ipaambit ang mga na-optimize nga algorithm ug mga pamaagi sa pag-andam sa datos sa parehas nga sinultian.

Ang pinakasimple nga pananglitan: adunay usa ka sistema sa pagkontrol alang sa usa ka non-standard nga gamhanan nga drive, nga gipatuman sa usa ka embedded machine nga adunay RISC processor, sa C ++. Ang pagdumala mahitabo pinaagi sa eksternal nga makina nga nagsalig sa API, nga nagsuporta, pananglitan, komunikasyon tali sa mga subsystem sa usa ka network. Sa usa ka taas nga lebel, ang algorithm sa operasyon sa drive dili debugged o dili kanunay (kinahanglan nga mag-load sa lainlaing mga algorithm depende sa proseso sa pagtrabaho).

Usa sa labing kaayo nga paagi aron makab-ot ang ingon nga sistema mao ang paggamit sa piho nga makina nga C++ subsystem API ingon sukaranan sa usa ka hugpong sa mga klase sa Python nga nagdagan sa usa ka cross-platform interpreter. Sa ingon, ang top-level developer dili kinahanglan nga tagdon ang mga bahin sa naka-embed nga makina ug ang OS niini; magtrabaho ra siya sa mga klase sa Python nga naglihok isip "mga wrapper" sa ubos nga lebel nga API.

Kinahanglan kong makat-on sa C ++ ug Python nga nagbugkos hapit gikan sa wala. Kini dali nga nahimong tin-aw nga ang object-oriented nga mga kapabilidad sa taas nga lebel labi ka hinungdanon kaysa sa ubos nga lebel. Tungod niini, kinahanglan namon nga hingpit nga usbon ang pamaagi sa pagdesinyo ug pagpatuman sa API, pagpili sa mga klase sa lebel sa Python ug gipaambit ang global nga datos sa C/C++. Naanad sa paghimo og code: pananglitan, ang ROS framework mismo ang nagmugna og mga ngalan ug mga butang sa Python, mao nga kinahanglan nimong tagdon ang mga kalainan sa pinulongan, ilabi na sa pag-type, sa dihang magdesinyo sa imong mga interface.

Pagtrabaho sa Karon: Python ug Robot Control Logic

Karon nagtrabaho ko isip Python ug C++ programmer sa Robotics Research and Education Center sa Moscow State Technical University. Nag-implementar kami og mga proyekto sa panukiduki ug mga himan sa software nga gisugo sa mga departamento sa gobyerno: naghimo kami og mga manipulator nga adunay built-in nga teknikal nga mga sistema sa panan-aw ug taas nga lebel nga awtomatikong pagkontrol sa mga algorithm nga independente sa mga sistema.

Sa pagkakaron, giprograma nako ang taas nga lebel nga lohika alang sa mga sistema sa pagkontrol sa robot sa Python; kini nga lengguwahe nagdugtong sa labing maayo nga mga module nga gisulat sa C++, assembler, ug Go.

Sa programming robot control algorithm, duha ka dagkong grupo sa mga algorithm ang gigamit. Ang una niini gipatuman direkta sa mga ekipo, sa ubos nga lebel - kini ang built-in nga software sa mga drive controller, mga concentrator sa linya sa komunikasyon, ug mga subsystem sa interaksyon sa operator.

Ang mga algorithm dinhi gidisenyo alang sa kontrolado nga katulin sa pagpatuman ug kasaligan nga labaw sa pasundayag sa robot sa kinatibuk-an. Ang ulahi gikinahanglan, tungod kay ang seguridad sa tibuok nga sistema nagdepende sa ubos nga lebel sa kontrol nga software.

Ang ikaduhang grupo sa mga algorithm nagtino sa operasyon sa robot sa kinatibuk-an. Kini ang mga high-level nga mga programa, ang gibug-aton sa pag-uswag niini naa sa katin-aw ug katulin sa pagpatuman sa algorithm, kasagaran medyo komplikado. Dugang pa, ang taas nga lebel nga software sa robot kanunay nga mabag-o sa panahon sa proseso sa pag-setup ug pagsulay. Alang sa ingon nga pag-uswag, ang kinatibuk-ang katuyoan nga gihubad nga mga pinulongan kinahanglanon.

Unsang kahibalo ang gikinahanglan alang sa maong trabaho?

Kinahanglan nga tun-an ang C++ template nga pinulongan ug ang object-oriented nga kapabilidad sa Python. Ang halos dili mapulihan nga kahanas mao ang abilidad sa pagdesinyo ug pagdokumento sa mga API. Maayo nga ideya nga susihon ang mga kapabilidad sa mga espesyal nga librarya sama sa Boost::Python. Kadtong nagtrabaho sa ubos nga lebel nga software siguradong kinahanglan nga mag-atubang sa multithreading (sa lebel sa kernel) ug mga tawag sa sistema sa Linux/UNIX/QNX. Aron mapauswag ang imong pagsabot sa mga prinsipyo sa robotics, mapuslanon kaayo nga pamilyar ka sa Robotic Operating System framework.

Gisulayan nako nga adunay labing menos usa nga gihugpong ug usa nga gihubad nga programming language nga nag-uswag ug nanginahanglan. Kini usa ka kadaugan nga estratehiya alang sa pagtrabaho sa inhenyeriya, diin adunay kanunay nga panginahanglan sa paghimo sa labi ka espesyal (basaha: dili kasagaran) nga mga algorithm ug ipatuman kini sa pagtipon sa mga sinultian. Ang tahas sa pag-andam sa datos alang sa ingon nga software labi ka makapahimuot nga sulbaron gamit ang gihubad nga mga sinultian. Sa sinugdan, ang akong set naglakip sa C++, Pascal ug BASIC, sa ulahi gidugang ang PHP ug BASH.

Sa unsang paagi ang mga himan sa pagpalambo mahimong mapuslanon sa pagtudlo sa mga estudyante

Ang nag-unang plano alang sa propesyonal nga kalamboan karon mao ang pagsulay sa paghatag sa usa ka siyentipikong basehan alang sa paggamit sa propesyonal nga software development himan sa pedagogy, sa pagpalambo ug pagsulay sa mga pamaagi sa pagtudlo.

Sukad sa 2016, nagsugod ako sa usa ka dako nga eksperimento sa pagpaila sa mga himan sa pag-uswag - mga pinulongan sa programming, mga IDE, mga generator sa dokumentasyon, mga sistema sa pagkontrol sa bersyon - ngadto sa praktis sa pagtudlo sa mas taas nga edukasyon. Nagmalampuson na kami karon sa pagkuha sa mga resulta nga mahimong qualitatively generalized.

Pananglitan, ang pagpaila sa pag-bersiyon sa mga materyales ngadto sa proseso sa edukasyon kamahinungdanon pagpalambo sa kalidad sa trabaho sa estudyante, bisan pa niana, lamang sa ilalum sa usa ka mandatory nga kondisyon: mga estudyante nga nagtrabaho sa tingub sa mga proyekto nga gipakigbahin. Ang pagpalambo sa mga pamaagi alang sa pagtudlo sa teknikal nga mga disiplina sa paggamit sa propesyonal nga software development himan karon aktibo nga gidala sa gawas sa akong research nga grupo, nga naglangkob sa mga estudyante, mga aplikante ug mga estudyante sa dugang nga mga programa sa edukasyon sa MSTU.

Sa ato pa, wala nako biyai ang akong praktis sa pagtudlo - nagpalambo ko sa akong kaugalingon nga lawom nga full-time nga kurso sa disenyo ug pagdumala sa Linux para sa Institute of Advanced Studies sa MSTU, ug ako mismo ang nagtudlo niini.

Buhat sa siyensya

Sayo nga mga buhat
Mga isyu sa pagplano sa paglakaw sa dihang nagdesinyo sa mga sistema sa paglakaw nga upat ka tiil gamit ang panig-ingnan sa pagpatuman sa gait sa kabayo (2010)

Sa isyu sa kinematics ug pagkarga sa nagsuporta nga elemento sa atubangan nga bitiis sa kabayo sa yugto sa pagduol sa suporta isip mga sangkap sa working cycle sa four-legged mover (2012)

Gikan sa kataposan
Ang aplikasyon sa simulation sa paghimo sa 3D gear alang sa mekanismo sa pagtudlo ug teorya sa makina (2019)

Pamaagi sa pag-ila sa mga babag sa estruktura ug paggamit niini sa pagpangita sa mga butang nga hinabang (2018)

Ang ubang mga buhat nga gi-index sa mga database sa siyentipikanhong citation makita sa akong profile sa ResearchGate. Kadaghanan sa mga artikulo gipahinungod sa paglihok sa mga makina, adunay mga buhat sa engineering pedagogy ug software sa edukasyon.

Source: www.habr.com

Idugang sa usa ka comment