O rocedi i robotiaid a beth sydd gan Python i'w wneud ag ef. Stori Alumni GeekBrains

O rocedi i robotiaid a beth sydd gan Python i'w wneud ag ef. Stori Alumni GeekBrains
Heddiw rydym yn cyhoeddi stori trawsnewidiad Andrey Vukolov i TG. Arweiniodd ei angerdd plentyndod am ofod unwaith iddo astudio gwyddoniaeth roced yn MSTU. Gwnaeth y realiti llym i mi anghofio am y freuddwyd, ond trodd popeth hyd yn oed yn fwy diddorol. Roedd astudio C++ a Python yn fy ngalluogi i wneud gwaith yr un mor gyffrous: rhaglennu rhesymeg systemau rheoli robotiaid.

Dechrau

Roeddwn yn ffodus i fod yn chwilfrydig am y gofod ar hyd fy mhlentyndod. Felly, ar ôl ysgol, doeddwn i ddim yn amau ​​​​am funud ble dylwn i fynd i astudio, ac fe es i mewn i MSTU. Bauman, i'r Adran Peirianneg Gyriant Roced. Fodd bynnag, nid oedd yn rhaid dewis cangen y cwrs ei hun - peiriannau powdr neu hylif o rocedi gofod - o gwbl: yn 2001, roedd comisiwn cyfadran arbennig yn dal i ddosbarthu'r grwpiau targed o ymgeiswyr. Cefais fy nal mewn casgen o bowdwr gwn.

Bryd hynny, dim ond mewn cynlluniau yr oedd y “ffyniant roced” yn bodoli; roedd peirianwyr yn derbyn cyflogau prin ac yn gweithio mewn canolfannau dylunio caeedig arbennig a sefydliadau ymchwil heb fawr ddim rhagolygon ar gyfer twf gyrfa a phroffesiynol. Eto i gyd, mae rocedi powdr yn Rwsia yn gynhyrchion milwrol yn unig.

Nawr mae galw am y maes hwn, ond eisoes yn ystod fy astudiaethau sylweddolais fod unrhyw weithgaredd ar eich liwt eich hun bron yn amhosibl mewn gwyddoniaeth roced. Mewn gwirionedd, gwasanaeth milwrol yw hwn. Er enghraifft, yn gweithio yn y diwydiant rocedi, byddwn yn cael fy amddifadu'n llwyr o'r cyfle i ddatblygu meddalwedd yn annibynnol, hyd yn oed i mi fy hun, gan fod y gweithgaredd hwn yn cael ei reoleiddio'n llym.

Mae'r holl gynhyrchion meddalwedd yn cael eu datblygu ar archeb arbennig yn unig a chyda chymeradwyaeth y comisiwn cyfrinachedd (sydd bellach yn is-adran o FSTEC). Mae'n ofynnol i'r datblygwr yno gofrestru a thrwyddedu'n llythrennol bob llinell o god. Mae'r holl feddalwedd yn gyfrinachol i ddechrau ar lefel y dasg. Mae hyn yn esbonio'n rhannol pam y datblygwyd y feddalwedd a ddefnyddir bellach i hyfforddi myfyrwyr gwyddoniaeth roced yn y 90au ar y cynharaf.

Erbyn i mi raddio o'r sefydliad, llwyddais i weithio yn yr adran theori mecanwaith a dechreuais ddatblygu efelychydd prosesau addysgol yn C ++, felly roedd gen i enghraifft ar gyfer cymharu a gallwn bwyso a mesur y manteision a'r anfanteision. Roedd y dewis yn amlwg, ac yn raddol dechreuais ddrifftio tuag at TG a roboteg. Roedd mecaneg gymhwysol yn llawer mwy o hwyl na gwyddoniaeth roced: llawer o broblemau heb eu datrys, amgylchedd agored, diffyg diwydiant datblygu, angen dybryd am feddalwedd efelychu. Mewn roboteg, mae pensaernïaeth ansefydlog o feddalwedd cyffredin a'r angen i weithredu algorithmau cymhleth dro ar ôl tro, gan gynnwys rhesymeg niwlog a dechreuadau AI. Felly, ar ôl fy rhaglenni cyntaf ar gyfer prosesu data arbrofol, ni wnes i bron byth ddychwelyd i rocedi (ac eithrio fy mhrosiect graddio).

O ganlyniad, cefais y cyfle i weithio yn fy arbenigedd am bedwar mis yn unig cyn graddio mewn ffatri ger Moscow ar gyfer strwythurau cyfansawdd ar gyfer y diwydiant awyrofod. Ar ôl cwblhau fy astudiaethau, nid oedd yn rhaid i mi hyd yn oed chwilio am swydd - deuthum yn syth i ddysgu mecaneg gymhwysol yn yr adran roboteg.

O addysgu i raglennu

O rocedi i robotiaid a beth sydd gan Python i'w wneud ag ef. Stori Alumni GeekBrains
Yng Nghyngres y Byd IFTOMM gydag aelodau myfyrwyr y grŵp ymchwil (fi ar y dde)

Gweithiais yn MSTU yn yr adran samplu am 10 mlynedd, gan ddysgu cwrs ar theori mecanweithiau. Cyhoeddodd weithiau gwyddonol (gweler diwedd yr erthygl), symudodd yn raddol o fecaneg tuag at CAD a roboteg. Ac yn y diwedd penderfynodd adael y ddysgeidiaeth. Er mwyn dangos yn gliriach y rhesymau dros y penderfyniad hwn, dywedaf nad yw'r cwrs astudio a ddysgais wedi newid un lle degol ymhen deng mlynedd. Er bod mecaneg gymhwysol, a barnu yn ôl y cyhoeddiadau, wedi symud ymlaen yn llwyddiannus iawn, iawn.

Yn ogystal, roedd y gwaith yn fwy a mwy yn debyg i waith biwrocrataidd - adroddiadau, rhaglenni, safonau a thunelli o bapur. Mewn amodau o'r fath, disodlwyd pleser addysgu gan adrodd ar dderbyn y pleser hwn, ac mae hyn yn fwy na annymunol i arbenigwr gweithredol.

Ac yn olaf deuthum i roboteg fel hyn: yn 2007-2009, ynghyd â'r athrawon A. Golovin a N. Umnov, dechreuwyd paratoi'r gweithiau gwyddonol cyntaf. Yno bu'n rhaid i mi ddefnyddio algorithmau i bennu llwybrau gwrthrychau o ffotograffiaeth strôb. O'r pwnc hwn mae'n un cam i weledigaeth peiriant, OpenCV a System Weithredu Robotig (er ar y pryd nid oeddwn hyd yn oed yn meddwl am raddfa o'r fath). Ar ôl hynny, canolbwyntiais o'r diwedd ar fecaneg gymhwysol a roboteg mewn ymchwil, a daeth datblygiad yn weithgaredd ategol.

Fodd bynnag, i ddod o hyd i swydd newydd mewn roboteg, roedd angen gwella ac ychwanegu at fy ngwybodaeth raglennu. Wedi'r cyfan, wnes i erioed astudio TG yn benodol, ac eithrio ar gyfer cwrs prifysgol blwyddyn o hyd (ObjectPascal a Borland VCL yn C++), ac yn dibynnu ar fathemateg ar gyfer agweddau damcaniaethol datblygiad.

I ddechrau, ystyriais opsiynau ar gyfer cyrsiau amser llawn yn fy sefydliad brodorol. Yn wir, daeth yn amlwg yn gyflym y byddai bron yn amhosibl cyfuno astudiaethau o'r fath â gwaith yn yr adran oherwydd yr amserlen afreolaidd a gwaith aml y tu allan i'ch amserlen eich hun (amnewid, ac ati). Felly yn raddol deuthum at y syniad o gwblhau cyrsiau taledig o bell. Deuthum i GeekBrains ar argymhelliad athrawon o ganolfan hyfforddi Mail.ru Technopark, a leolir yn Baumanka, a chofrestrais ar y cwrs Rhaglennydd Python.

Nid oedd y cyrsiau'n achosi unrhyw anawsterau, yr unig broblem oedd fy mod yn gorfod eu cyfuno'n gyson â gwaith yn yr adran, gwaith gwyddonol a digwyddiadau. Roedd amser mor dynn fel bod yn rhaid aberthu’r rhan fwyaf o gysylltiadau cymdeithasol y tu allan i’r cartref (yn ffodus, dros dro).

Dyma sut wnes i ymdopi â'r llwyth gwaith: datrysais broblemau ar y ffordd. Trodd y sgil hon, a ddatblygwyd trwy nifer o deithiau busnes, yn ddefnyddiol iawn, oherwydd hebddo ni fyddwn hyd yn oed yn gallu cwblhau fy holl waith cartref (ac mae hefyd yn disodli myfyrdod...). Dysgais i godio wrth fynd gan ddefnyddio fy ngliniadur, ffôn clyfar, a bysellfyrddau ffôn clyfar diwifr.

Dell Latitude 3470 yw fy ngliniadur, a bydd unrhyw ffôn clyfar sydd â chroeslin o 5.5 modfedd neu fwy wedi'i baru â bysellfwrdd Logitech K 810 BT yn gwneud hynny. Yn gyffredinol, rwy'n argymell cynhyrchion Logitech i bawb; maent yn ddibynadwy iawn a gallant wrthsefyll amodau defnydd llym iawn (ac nid yw hon byth yn hysbyseb).

O rocedi i robotiaid a beth sydd gan Python i'w wneud ag ef. Stori Alumni GeekBrains
Bysellfwrdd Logitech K810

Mae Python yn ffafriol iawn i waith o'r fath - os oes gennych chi olygydd da. Hac rhaglennu arall: defnyddiwch gysylltiadau o bell â'r amgylchedd bwrdd gwaith neu amser rhedeg. Cwblheais sawl tasg gan ddefnyddio gweinydd gwe diogel yn rhedeg Django ar fy nghyfrifiadur cartref. Gweithiais o'r trên, gan ddefnyddio'r meddalwedd PyDroid, DroidEdit, Maxima.

Pam Python?

Nid oedd yn hir cyn i mi geisio defnyddio PHP fel iaith sgriptio system. I ddechrau, astudiais Python ar fy mhen fy hun ac fesul tipyn “i fy hun.” Penderfynais astudio o ddifrif ar ôl i mi ddysgu am fodolaeth cysylltiad effeithiol rhwng Python a C++ ar lefel y modiwl - roedd yn ymddangos yn ddiddorol rhannu algorithmau optimaidd a gweithdrefnau paratoi data o fewn yr un iaith.

Yr enghraifft symlaf: mae system reoli ar gyfer gyriant pwerus ansafonol, a weithredir ar beiriant wedi'i fewnosod gyda phrosesydd RISC, yn C ++. Mae rheolaeth yn digwydd trwy API allanol sy'n dibynnu ar beiriant, sy'n cefnogi, er enghraifft, cyfathrebu rhwng is-systemau dros rwydwaith. Ar lefel uchel, nid yw'r algorithm gweithredu gyriant yn cael ei ddadfygio neu nid yw'n gyson (mae angen llwytho gwahanol algorithmau yn dibynnu ar y broses waith).

Un o'r ffyrdd gorau o gyflawni system o'r fath yw defnyddio'r API is-system C ++ peiriant-benodol fel sail ar gyfer set o ddosbarthiadau Python sy'n rhedeg ar ddehonglydd traws-lwyfan. Felly, ni fydd yn rhaid i'r datblygwr lefel uchaf ystyried nodweddion y peiriant wedi'i fewnosod a'i OS; yn syml, bydd yn gweithio gyda dosbarthiadau Python sy'n gweithredu fel “lapwyr” yr API lefel isel.

Roedd yn rhaid i mi ddysgu C++ a rhwymo Python bron o'r dechrau. Daeth yn amlwg yn gyflym fod galluoedd gwrthrych-ganolog ar lefel uchel yn llawer pwysicach nag ar lefel isel. Oherwydd hyn, bu'n rhaid i ni newid y dull o ddylunio a gweithredu'r API yn llwyr, gan ddewis dosbarthiadau ar lefel Python a rhannu data byd-eang yn C / C ++. Dewch i arfer â chynhyrchu cod: er enghraifft, mae'r fframwaith ROS ei hun yn cynhyrchu enwau a gwrthrychau yn Python, felly mae'n rhaid i chi ystyried gwahaniaethau iaith, yn enwedig wrth deipio, wrth ddylunio'ch rhyngwynebau.

Gweithio yn y Presennol: Python a Logic Rheoli Robot

Nawr rwy'n gweithio fel rhaglennydd Python a C++ yn y Ganolfan Ymchwil ac Addysg Roboteg ym Mhrifysgol Dechnegol Talaith Moscow. Rydym yn gweithredu prosiectau ymchwil ac offer meddalwedd a gomisiynir gan adrannau'r llywodraeth: rydym yn datblygu manipulators gyda systemau gweledigaeth dechnegol integredig ac algorithmau rheoli awtomatig lefel uchel sy'n annibynnol ar systemau.

Ar hyn o bryd, rwy'n rhaglennu rhesymeg lefel uchel ar gyfer systemau rheoli robotiaid yn Python; mae'r iaith hon yn cysylltu modiwlau sydd wedi'u optimeiddio'n fawr a ysgrifennwyd yn C ++, assembler, a Go.

Wrth raglennu algorithmau rheoli robotiaid, defnyddir dau grŵp mawr o algorithmau. Mae'r cyntaf ohonynt yn cael ei weithredu'n uniongyrchol ar yr offer, ar lefel isel - dyma feddalwedd adeiledig rheolwyr gyriant, crynodyddion llinell gyfathrebu, ac is-systemau rhyngweithio gweithredwr.

Mae'r algorithmau yma wedi'u cynllunio ar gyfer cyflymder gweithredu rheoledig a dibynadwyedd sy'n rhagori ar berfformiad y robot yn ei gyfanrwydd. Mae'r olaf yn orfodol, gan fod diogelwch y system gyfan yn dibynnu ar feddalwedd rheoli lefel isel.

Mae'r ail grŵp o algorithmau yn pennu gweithrediad y robot yn ei gyfanrwydd. Mae'r rhain yn rhaglenni lefel uchel, y mae'r pwyslais yn eu datblygiad ar eglurder a chyflymder gweithredu'r algorithm, yn aml yn eithaf cymhleth. Yn ogystal, mae meddalwedd lefel uchel ar y robot yn aml yn agored iawn i newid yn ystod y broses sefydlu a phrofi. Ar gyfer datblygiad o'r fath, mae ieithoedd dehongli pwrpas cyffredinol yn anhepgor.

Pa wybodaeth sydd ei hangen ar gyfer gwaith o'r fath?

Bydd yn orfodol astudio'r iaith dempled C++ a galluoedd gwrthrych-ganolog Python. Sgil na ellir ei hadnewyddu bron yw'r gallu i ddylunio a dogfennu APIs. Byddai'n syniad da archwilio galluoedd llyfrgelloedd arbenigol fel Boost::Python. Yn bendant, bydd yn rhaid i'r rhai sy'n gweithio gyda meddalwedd lefel isel ddelio â galwadau system aml-threading (ar lefel y cnewyllyn) a Linux/UNIX/QNX. Er mwyn gwella eich dealltwriaeth o egwyddorion roboteg, mae'n ddefnyddiol iawn ymgyfarwyddo â'r fframwaith System Weithredu Robotig.

Rwy'n ceisio cael o leiaf un iaith raglennu wedi'i llunio ac un wedi'i dehongli sy'n datblygu ac y mae galw amdani. Mae hon yn strategaeth fuddugol ar gyfer gweithio ym maes peirianneg, lle mae angen cyson i ddatblygu algorithmau hynod arbenigol (darllenwch: anarferol) a'u rhoi ar waith wrth lunio ieithoedd. Mae'r dasg o baratoi data ar gyfer meddalwedd o'r fath yn llawer mwy dymunol i'w datrys gan ddefnyddio ieithoedd wedi'u dehongli. I ddechrau, roedd fy set yn cynnwys C ++, Pascal a SYLFAENOL, yn ddiweddarach ychwanegwyd PHP a BASH.

Sut y gall offer datblygu fod yn ddefnyddiol wrth addysgu myfyrwyr

Y prif gynllun ar gyfer datblygiad proffesiynol nawr yw ceisio darparu sail wyddonol ar gyfer defnyddio offer datblygu meddalwedd proffesiynol mewn addysgeg, i ddatblygu a phrofi dulliau addysgu.

Ers 2016, dechreuais arbrawf mawr wrth gyflwyno offer datblygu - ieithoedd rhaglennu, DRhA, generaduron dogfennaeth, systemau rheoli fersiynau - i ymarfer addysgu mewn addysg uwch. Rydym bellach wedi llwyddo i gael canlyniadau y gellir eu cyffredinoli’n ansoddol.

Er enghraifft, mae cyflwyno fersiynau o ddeunyddiau i'r broses addysgol yn gwella ansawdd gwaith myfyrwyr yn sylweddol, fodd bynnag, dim ond o dan amod gorfodol: myfyrwyr yn cydweithio ar brosiectau a rennir. Mae datblygu dulliau ar gyfer addysgu disgyblaethau technegol gan ddefnyddio offer datblygu meddalwedd proffesiynol bellach yn cael ei wneud gan fy ngrŵp ymchwil, sy'n cynnwys myfyrwyr, ymgeiswyr a myfyrwyr rhaglenni addysg ychwanegol yn MSTU.

Gyda llaw, wnes i ddim gadael fy ymarfer dysgu - datblygais fy nghwrs llawn amser manwl fy hun ar ddylunio a gweinyddu Linux ar gyfer y Sefydliad Astudiaethau Uwch yn MSTU, ac rwy'n ei ddysgu fy hun.

Gwaith gwyddonol

Gweithiau cynnar
Materion cynllunio cerddediad wrth ddylunio systemau cerdded pedair coes gan ddefnyddio'r enghraifft o weithredu cerddediad ceffyl (2010)

Ar fater cinemateg a llwytho'r elfen gynhaliol o goes flaen y ceffyl yn y cam o agosáu at y gefnogaeth fel cydrannau o gylch gwaith y symudwr pedair coes (2012)

O'r diweddaf
Cymhwysiad efelychu gweithgynhyrchu gêr 3D ar gyfer mecanwaith addysgu a theori peiriannau (2019)

Dull ar gyfer adnabod rhwystrau strwythurol a'u cymhwysiad wrth chwilio am wrthrychau cerfwedd (2018)

Mae gweithiau eraill sydd wedi'u mynegeio gan gronfeydd data dyfynnu gwyddonol i'w gweld yn fy mhroffil ar ResearchGate. Mae'r rhan fwyaf o'r erthyglau wedi'u neilltuo i symud peiriannau, mae yna weithiau ar addysgeg peirianneg a meddalwedd addysgol.

Ffynhonnell: hab.com

Ychwanegu sylw