Зымырандардан роботтарға дейін және Python-ның оған қандай қатысы бар. GeekBrains түлектерінің тарихы

Зымырандардан роботтарға дейін және Python-ның оған қандай қатысы бар. GeekBrains түлектерінің тарихы
Бүгін біз Андрей Вуколовтың IT-ға ауысу тарихын жариялаймыз. Балалық шағындағы ғарышқа деген құмарлығы оны бір кездері МТУ-да зымыран ғылымын оқуға итермеледі. Ащы шындық маған арман туралы ұмыттырды, бірақ бәрі одан да қызықты болды. C++ және Python тілдерін оқу маған бірдей қызықты жұмысты орындауға мүмкіндік берді: роботты басқару жүйелерінің логикасын бағдарламалау.

Үй

Мен балалық шағымда ғарыш туралы қуанғаным үшін бақытты болдым. Сондықтан, мектептен кейін мен қайда оқуға бару керек екеніне күмәнданбадым және МТУ-ға түстім. Бауман, зымыран қозғалтқышы кафедрасына. Дегенмен, курстың өзі - ғарыштық зымырандардың ұнтақ немесе сұйық қозғалтқыштарын таңдаудың қажеті жоқ еді: 2001 жылы факультеттің арнайы комиссиясы әлі де үміткерлердің мақсатты топтарын бөлді. Мен мылтық құйылған бөшкеге түсіп қалдым.

Ол кезде «зымыран бумы» тек жоспарларда болды, инженерлер аз жалақы алды және мансап пен кәсіби өсудің перспективалары іс жүзінде жоқ арнайы жабық конструкторлық бюролар мен ғылыми-зерттеу институттарында жұмыс істеді. Дегенмен, Ресейдегі ұнтақ зымырандар таза әскери өнім болып табылады.

Қазір бұл сала сұранысқа ие, бірақ оқу барысында мен зымыран ғылымында өз бастамасымен кез келген әрекет дерлік мүмкін емес екенін түсіндім. Негізі бұл әскери қызмет. Мысалы, зымыран өнеркәсібінде жұмыс істей отырып, мен өз бетінше бағдарламалық жасақтаманы әзірлеу мүмкіндігінен мүлдем айырылар едім, өйткені бұл қызмет қатаң түрде реттеледі.

Барлық бағдарламалық өнімдер тек арнайы тапсырыс бойынша және құпиялылық комиссиясының (қазіргі FSTEC бөлімшесі) мақұлдауымен әзірленген. Ондағы әзірлеуші ​​кодтың әрбір жолын тіркеуге және лицензиялауға міндетті. Барлық бағдарламалық құрал бастапқыда тапсырма деңгейінде құпия болып табылады. Бұл ішінара неліктен зымырандық ғылым студенттерін оқыту үшін қолданылатын бағдарламалық жасақтама соңғы 90 жылдары жасалғанын түсіндіреді.

Институтты бітірген кезде мен механизм теориясы кафедрасында жұмыс істей бастадым және C++ тілінде оқу үрдісінің тренажерін жасай бастадым, сондықтан мен салыстыру үшін үлгі алдым және жақсы және жаман жақтарын таразылай алдым. Таңдау анық болды, мен бірте-бірте IT және робототехникаға бет бұра бастадым. Қолданбалы механика ракета туралы ғылымға қарағанда әлдеқайда қызықты болды: көптеген шешілмеген мәселелер, ашық орта, даму индустриясының жоқтығы, симуляциялық бағдарламалық қамтамасыз етудің шұғыл қажеттілігі. Робототехникада жалпы бағдарламалық қамтамасыз етудің тұрақсыз архитектурасы және күрделі алгоритмдерді, оның ішінде анық емес логика мен AI бастамаларын қайталап енгізу қажеттілігі бар. Сондықтан эксперименталды деректерді өңдеуге арналған алғашқы бағдарламаларымнан кейін мен ешқашан зымырандарға оралмадым (бітіру жобамды қоспағанда).

Соның нәтижесінде Мәскеу түбіндегі аэроғарыш өнеркәсібіне арналған композиттік конструкциялар зауытында оқуды бітіргенше төрт ай ғана мамандығым бойынша жұмыс істеуге мүмкіндік алдым. Оқуымды аяқтағаннан кейін маған жұмыс іздеудің қажеті болмады - мен бірден робототехника бөліміне қолданбалы механикадан сабақ беруге келдім.

Оқытудан бағдарламалауға дейін

Зымырандардан роботтарға дейін және Python-ның оған қандай қатысы бар. GeekBrains түлектерінің тарихы
IFTOMM дүниежүзілік конгресінде зерттеу тобының студент мүшелерімен (оң жақта мен)

Мен МТУ-да сынама алу бөлімінде 10 жыл жұмыс істедім, механизмдер теориясы курсынан сабақ бердім. Ол ғылыми еңбектерді жариялады (мақаланың соңын қараңыз), бірте-бірте механикадан CAD және робототехникаға көшті. Соңында ол ұстаздық қызметтен кетуге шешім қабылдады. Бұл шешімнің себептерін нақты көрсету үшін мен он жыл ішінде мен оқытқан оқу курсының бір ондық белгі өзгермегенін айтайын. Қолданбалы механика басылымдарға қарағанда, өте сәтті алға жылжыды.

Сонымен қатар, жұмыс бюрократиялық жұмысқа көбірек ұқсайды - есептер, бағдарламалар, стандарттар және тонна қағаз. Мұндай жағдайларда оқытудың ләззатын осы ләззат алғаны туралы есеп беру алмастырды және бұл тәжірибеші маман үшін жағымсыз.

Ақырында мен робототехникаға осылай келдім: 2007-2009 жылдары профессорлар А.Головин және Н.Умновпен бірге біз алғашқы ғылыми жұмыстарды дайындай бастадық. Онда мен стробофотографиядан объектілердің жолдарын анықтау үшін алгоритмдерді қолдануға тура келді. Бұл тақырыптан машиналық көру, OpenCV және роботтық операциялық жүйеге бір қадам (ол кезде мен мұндай масштаб туралы ойламаған едім). Осыдан кейін мен ғылыми зерттеулерде қолданбалы механика мен робототехникаға назар аудардым және дамыту көмекші қызметке айналды.

Дегенмен, робототехникада жаңа жұмыс табу үшін бағдарламалау білімімді жетілдіру және толықтыру қажет болды. Өйткені, мен бір жыл бойы университет курсын (C++ тіліндегі ObjectPascal және Borland VCL) қоспағанда, мен ешқашан АТ-ны арнайы зерттеген емеспін және дамудың теориялық аспектілері үшін математикаға сүйендім.

Алғашында мен туған институттағы күндізгі бөлімнің нұсқаларын қарастырдым. Рас, тұрақты емес кестеге және өз кестесінен тыс жиі жұмыс істеуге (алмастыру және т. Осылайша мен ақылы курстарды қашықтан аяқтау идеясына біртіндеп келдім. Мен GeekBrains-ке Бауманкада орналасқан Mail.ru Технопарк оқу орталығының профессорларының ұсынысымен келіп, Python Programmer курсына жазылдым.

Курстар ешқандай қиындық тудырмады, жалғыз мәселе мен оларды үнемі кафедрадағы жұмыспен, ғылыми жұмыстармен және іс-шаралармен біріктіруге тура келді. Уақыт өте тығыз болғандықтан, үйден тыс көптеген әлеуметтік байланыстарды құрбан етуге тура келді (бақытымызға орай, уақытша).

Жұмыстың ауыртпалығын осылай жеңдім: жолдағы мәселелерді шештім. Көптеген іссапарлар арқылы қалыптасқан бұл дағды өте пайдалы болды, өйткені онсыз мен барлық үй тапсырмасын орындай алмас едім (сонымен бірге ол медитацияны алмастырады...). Мен ноутбук, смартфон және сымсыз смартфон пернетақталары арқылы жолда код жазуды үйрендім.

Менің ноутбугім - Dell Latitude 3470 және Logitech K 5.5 BT пернетақтасымен жұптастырылған диагоналы 810 дюйм немесе одан жоғары кез келген смартфон мұны жасайды. Жалпы, мен Logitech өнімдерін барлығына ұсынамын, олар өте сенімді және пайдаланудың өте қатал шарттарына төтеп бере алады (және бұл ешқашан жарнама емес).

Зымырандардан роботтарға дейін және Python-ның оған қандай қатысы бар. GeekBrains түлектерінің тарихы
Logitech K810 пернетақтасы

Python мұндай жұмыс үшін өте қолайлы - егер сізде жақсы редактор болса. Бағдарламалаудың тағы бір қателігі: жұмыс үстеліне немесе жұмыс ортасына қашықтағы қосылымдарды пайдаланыңыз. Мен үйдегі компьютерде Django іске қосылған қауіпсіз веб-серверді пайдаланып бірнеше тапсырмаларды орындадым. Мен PyDroid, DroidEdit, Maxima бағдарламалық жасақтамасын пайдаланып пойыздан жұмыс істедім.

Неліктен Python?

Мен PHP-ті жүйелік сценарий тілі ретінде қолдануға тырысқаныма көп уақыт болмады. Мен бастапқыда Python-ды өз бетімше және бірте-бірте «өзім үшін» оқыдым. Мен модуль деңгейінде Python және C++ арасында тиімді байланыс бар екенін білгеннен кейін байыпты оқуды шештім - бір тілде оңтайландырылған алгоритмдер мен деректерді дайындау процедураларын бөлісу қызықты болып көрінді.

Ең қарапайым мысал: C++ тілінде RISC процессоры бар ендірілген машинада іске асырылған стандартты емес қуатты дискіні басқару жүйесі бар. Басқару, мысалы, желі арқылы ішкі жүйелер арасындағы байланысты қолдайтын сыртқы машинаға тәуелді API арқылы жүзеге асады. Жоғары деңгейде диск жұмысының алгоритмі түзетілмейді немесе тұрақты емес (жұмыс процесіне байланысты әртүрлі алгоритмдерді жүктеу қажет).

Мұндай жүйеге қол жеткізудің ең жақсы тәсілдерінің бірі - платформааралық интерпретаторда жұмыс істейтін Python сыныптарының жиынтығы үшін негіз ретінде машинаға арналған C++ ішкі жүйесінің API пайдалану. Осылайша, жоғары деңгейлі әзірлеуші ​​ендірілген машинаның және оның ОЖ мүмкіндіктерін есепке алудың қажеті жоқ, ол жай ғана төменгі деңгейлі API-нің «орауы» ретінде әрекет ететін Python сыныптарымен жұмыс істейді.

Маған C++ және Python байланыстыруды нөлден дерлік үйренуге тура келді. Жоғары деңгейдегі объектіге бағытталған мүмкіндіктер төмен деңгейге қарағанда әлдеқайда маңызды екені тез белгілі болды. Осыған байланысты бізге API жобалау және енгізу тәсілін толығымен өзгертуге, Python деңгейіндегі сыныптарды таңдауға және C/C++ тілінде ғаламдық деректерді ортақ пайдалануға тура келді. Кодты генерациялауға дағдыланыңыз: мысалы, ROS құрылымының өзі Python тілінде атаулар мен нысандарды жасайды, сондықтан интерфейстерді жобалау кезінде тіл айырмашылықтарын, әсіресе теру кезінде ескеру қажет.

Қазіргі уақытта жұмыс істеу: Python және роботтарды басқару логикасы

Қазір мен Мәскеу мемлекеттік техникалық университетінің робототехника ғылыми-білім беру орталығында Python және C++ бағдарламашысы болып жұмыс істеймін. Біз мемлекеттік органдардың тапсырысы бойынша ғылыми жобалар мен бағдарламалық құралдарды жүзеге асырамыз: біз жүйеге тәуелсіз жоғары деңгейлі автоматты басқару алгоритмдері мен кірістірілген техникалық көру жүйелері бар манипуляторларды әзірлейміз.

Қазіргі уақытта мен Python тілінде роботты басқару жүйелері үшін жоғары деңгейлі логиканы бағдарламалаймын; бұл тіл C++, ассемблер және Go тілінде жазылған жоғары оңтайландырылған модульдерді байланыстырады.

Роботты басқару алгоритмдерін бағдарламалауда алгоритмдердің екі үлкен тобы қолданылады. Олардың біріншісі тікелей жабдықта, төмен деңгейде жүзеге асырылады - бұл жетек контроллерінің, байланыс желісінің концентраторларының және оператордың өзара әрекеттесуінің ішкі жүйелерінің кірістірілген бағдарламалық жасақтамасы.

Мұндағы алгоритмдер роботтың жалпы өнімділігінен асатын басқарылатын орындау жылдамдығы мен сенімділігіне арналған. Соңғысы міндетті болып табылады, өйткені бүкіл жүйенің қауіпсіздігі төмен деңгейлі басқару бағдарламалық құралына байланысты.

Алгоритмдердің екінші тобы роботтың тұтастай жұмысын анықтайды. Бұл жоғары деңгейлі бағдарламалар, оларды әзірлеуде алгоритмді іске асырудың анықтығы мен жылдамдығына баса назар аударылады, көбінесе өте күрделі. Сонымен қатар, роботтағы жоғары деңгейлі бағдарламалық жасақтама орнату және тестілеу процесінде жиі өзгереді. Мұндай даму үшін жалпы мақсаттағы аударма тілдері өте қажет.

Мұндай жұмыс үшін қандай білім қажет?

C++ үлгі тілін және Python-ның объектіге бағытталған мүмкіндіктерін оқу міндетті болады. Ауыстырылмайтын дерлік шеберлік - API интерфейстерін жобалау және құжаттау мүмкіндігі. Boost::Python сияқты мамандандырылған кітапханалардың мүмкіндіктерін зерттеу жақсы идея болар еді. Төмен деңгейлі бағдарламалық жасақтамамен жұмыс істейтіндер міндетті түрде көп ағынмен (ядро деңгейінде) және Linux/UNIX/QNX жүйелік қоңыраулармен айналысуға мәжбүр болады. Робототехниканың принциптерін түсінуді жақсарту үшін робототикалық операциялық жүйе құрылымымен танысу өте пайдалы.

Мен дамып келе жатқан және сұранысқа ие кем дегенде бір құрастырылған және бір интерпретацияланған бағдарламалау тіліне ие болуға тырысамын. Бұл жоғары мамандандырылған (оқы: әдеттен тыс) алгоритмдерді әзірлеу және оларды компиляция тілдерінде енгізу тұрақты қажеттілік бар инженерияда жұмыс істеудің жеңімпаз стратегиясы. Мұндай бағдарламалық қамтамасыз ету үшін деректерді дайындау міндетін интерпретацияланған тілдерді пайдалану арқылы шешу әлдеқайда жағымды. Бастапқыда менің жинағыма C++, Pascal және BASIC кірді, кейінірек PHP және BASH қосылды.

Дамыту құралдары оқушыларды оқытуда қалай пайдалы болуы мүмкін

Қазіргі кездегі біліктілікті арттырудың негізгі жоспары – педагогикада кәсіби бағдарламалық жасақтама құралдарын қолданудың ғылыми негіздерін беруге тырысу, оқыту әдістемесін жасап, сынақтан өткізу.

2016 жылдан бастап мен жоғары оқу орындарында оқыту тәжірибесіне әзірлеу құралдарын – бағдарламалау тілдерін, IDE, құжаттама генераторлары, нұсқаларды басқару жүйелерін енгізу бойынша үлкен экспериментті бастадым. Біз қазір сапалы жалпылауға болатын нәтижелерге қол жеткіздік.

Мысалы, оқу процесіне материалдардың нұсқаларын енгізу студент жұмысының сапасын айтарлықтай жақсартады, бірақ міндетті шартта ғана: студенттер ортақ жобаларда бірлесіп жұмыс істейді. Кәсіби бағдарламалық қамтамасыз етуді әзірлеу құралдарын пайдалана отырып, техникалық пәндерді оқыту әдістемесін әзірлеуді қазір ММУ студенттерінен, ізденушілерінен және қосымша білім беру бағдарламаларының студенттерінен тұратын менің ғылыми-зерттеу тобым белсенді түрде жүргізіп жатыр.

Айтпақшы, мен оқытушылық тәжірибемді қалдырған жоқпын - мен МГТУ-дағы Біліктілікті арттыру институты үшін Linux-ті жобалау және басқару бойынша тереңдетілген күндізгі курсымды әзірледім және оны өзім оқытамын.

Ғылыми жұмыс

Ерте еңбектер
Жылқының жүрісін жүзеге асыру мысалында төрт аяқты жүру жүйесін жобалау кезінде жүруді жоспарлау мәселелері (2010)

Төрт аяқты қозғағыштың жұмыс циклінің құрамдас бөліктері ретінде тірекке жақындау сатысында жылқының алдыңғы аяғының тірек элементінің кинематикасы мен жүктемесі туралы (2012)

Соңғысынан
Механизм мен машина теориясын оқытуға арналған 3D тісті доңғалақ өндірісінің модельдеу қосымшасы (2019)

Құрылымдық кедергілерді тану әдісі және оны рельефтік объектілерді іздеуде қолдану (2018)

Ғылыми дәйексөздер базасы арқылы индекстелген басқа жұмыстарды менің профилімде көруге болады ResearchGate. Мақалалардың көпшілігі машиналар қозғалысына арналған, инженерлік педагогика және оқу бағдарламалық қамтамасыз ету бойынша жұмыстар бар.

Ақпарат көзі: www.habr.com

пікір қалдыру