Од ракета до робота и какве везе Питхон има с тим. ГеекБраинс Алумни прича

Од ракета до робота и какве везе Питхон има с тим. ГеекБраинс Алумни прича
Данас објављујемо причу о преласку Андреја Вуколова у ИТ. Његова страст из детињства за свемиром једном га је навела да студира ракетне науке на МСТУ. Сурова стварност ме је натерала да заборавим на сан, али је све испало још занимљивије. Проучавање Ц++ и Питхон-а омогућило ми је да радим подједнако узбудљив посао: програмирање логике система управљања роботима.

почетак

Имао сам среће што сам цело детињство бунцао о свемиру. Стога, после школе, ни на минут нисам сумњао где треба да идем да учим и ушао сам у МСТУ. Баумана, Катедри за ракетно погонско инжењерство. Међутим, грана самог курса – барутни или течни мотори свемирских ракета – уопште није морала да се бира: 2001. године посебна факултетска комисија је ипак дистрибуирала циљне групе кандидата. Био сам ухваћен у бурету барута.

У то време, „ракетни бум“ постојао је само у плановима; инжењери су примали оскудне плате и радили у посебним затвореним пројектантским бироима и истраживачким институтима, практично без изгледа за каријеру и професионални раст. Ипак, барутне ракете у Русији су искључиво војни производи.

Сада је ова област тражена, али већ током студија сам схватио да је у ракетној науци било каква самоиницијативна активност готово немогућа. У ствари, ово је војни рок. На пример, радећи у ракетној индустрији, био бих потпуно лишен могућности да самостално развијам софтвер, чак и за себе, пошто је ова делатност строго регулисана.

Сви софтверски производи се развијају искључиво по посебној наруџбини и уз одобрење комисије за тајност (сада одељење ФСТЕЦ-а). Од тамошњег програмера се тражи да региструје и лиценцира буквално сваки ред кода. Сав софтвер је у почетку тајан на нивоу задатка. Ово делимично објашњава зашто је софтвер који се сада користи за обуку студената ракетних наука развијен најкасније 90-их.

Док сам дипломирао на институту, успео сам да радим на катедри за теорију механизама и почео да развијам симулатор образовног процеса на Ц++, тако да сам имао пример за поређење и могао сам да одмерим предности и недостатке. Избор је био очигледан и постепено сам почео да се крећем према ИТ-у и роботици. Примењена механика је била много забавнија од ракетне науке: многи нерешени проблеми, отворено окружење, недостатак развојне индустрије, хитна потреба за софтвером за симулацију. У роботици постоји неуређена архитектура уобичајеног софтвера и потреба за сталном имплементацијом сложених алгоритама, укључујући фуззи логику и почетке АИ. Стога, после мојих првих програма за обраду експерименталних података, скоро се никада нисам вратио ракетама (са изузетком мог дипломског пројекта).

Као резултат тога, имао сам прилику да радим у својој специјалности само четири месеца пре него што сам дипломирао у фабрици композитних конструкција за ваздухопловну индустрију у близини Москве. По завршетку студија нисам ни морао да тражим посао – одмах сам дошао да предајем примењену механику на одсеку за роботику.

Од наставе до програмирања

Од ракета до робота и какве везе Питхон има с тим. ГеекБраинс Алумни прича
На Светском конгресу ИФТОММ са студентима члановима истраживачке групе (ја десно)

Радио сам у МСТУ у одељењу за узорковање 10 година, предавајући курс теорије механизама. Објављивао је научне радове (видети крај чланка), постепено прелазио са механике на ЦАД и роботику. И на крају је одлучио да напусти предавање. Да бих што јасније илустровао разлоге ове одлуке, рећи ћу да се за десет година курс који сам предавао није променио ни за једну децималу. Иако је примењена механика, судећи по публикацијама, напредовала веома, веома успешно.

Осим тога, посао је све више личио на бирократски посао – извештаји, програми, стандарди и тоне папира. У оваквим условима задовољство предавања је замењено извештавањем о добијању овог задовољства, а то је више него непријатно за специјалисте.

И коначно сам дошао до роботике овако: 2007-2009, заједно са професорима А. Головином и Н. Умновом, почели смо да припремамо прве научне радове. Тамо сам морао да користим алгоритме за одређивање путања објеката са стробоскопа. Од ове теме један је корак до машинског вида, ОпенЦВ-а и роботског оперативног система (иако тада нисам ни размишљао о таквој скали). Након тога сам се коначно фокусирао на примењену механику и роботику у истраживању, а развој је постао пратећа активност.

Међутим, да бих нашао нови посао у роботици, било је неопходно да унапредим и допуним своје знање програмирања. На крају крајева, никада нисам посебно студирао ИТ, осим једногодишњег универзитетског курса (ОбјецтПасцал и Борланд ВЦЛ у Ц++), и ослањао сам се на математику за теоријске аспекте развоја.

У почетку сам разматрао опције за редовне курсеве на свом родном институту. Истина, убрзо је постало јасно да би било готово немогуће комбиновати такве студије са радом на одсеку због нередовног распореда и честог рада ван сопственог распореда (замена и сл.). Тако сам постепено дошао на идеју да завршим плаћене курсеве на даљину. У ГеекБраинс сам дошао на препоруку професора из центра за обуку Маил.ру Тецхнопарк, који се налази у Бауманки, и уписао курс Питхон Программер.

Курсеви нису изазивали потешкоће, једини проблем је био што сам их стално морао комбиновати са радом на катедри, научним радовима и догађајима. Време је било толико тесно да је већина друштвених веза ван куће морала бити жртвована (на срећу, привремено).

Овако сам се носио са оптерећењем: решавао сам проблеме на путу. Ова вештина, развијена кроз бројна пословна путовања, показала се веома корисном, јер без ње не бих могао ни да урадим све своје домаће задатке (а замењује и медитацију...). Научио сам да кодирам у покрету користећи свој лаптоп, паметни телефон и бежичне тастатуре паметног телефона.

Мој лаптоп је Делл Латитуде 3470 и било који паметни телефон дијагонале од 5.5 инча или више упарен са Логитецх К 810 БТ тастатуром ће то учинити. Генерално, свима препоручујем Логитецх производе; они су веома поуздани и могу да издрже веома тешке услове коришћења (а ово никада није реклама).

Од ракета до робота и какве везе Питхон има с тим. ГеекБраинс Алумни прича
Тастатура Логитецх К810

Пајтон је веома погодан за такав рад – ако имате доброг уредника. Још један програмски хак: користите удаљене везе са радном површином или окружењем за извршавање. Завршио сам неколико задатака користећи безбедни веб сервер који је покренуо Дјанго на свом кућном рачунару. Радио сам из воза, користећи софтвер ПиДроид, ДроидЕдит, Макима.

Зашто Питхон?

Није прошло много времена пре него што сам покушао да користим ПХП као системски скриптни језик. У почетку сам учио Питхон сам и мало по мало „за себе“. Одлучио сам да озбиљно учим након што сам сазнао за постојање ефикасне везе између Питхон-а и Ц++-а на нивоу модула – чинило ми се занимљивим делити оптимизоване алгоритме и процедуре припреме података у оквиру истог језика.

Најједноставнији пример: постоји контролни систем за нестандардни моћни погон, имплементиран на уграђеној машини са РИСЦ процесором, у Ц++. Управљање се одвија преко спољног машинског АПИ-ја, који подржава, на пример, комуникацију између подсистема преко мреже. На високом нивоу, алгоритам рада погона није отклоњен или није константан (потребно је учитати различите алгоритме у зависности од процеса рада).

Један од најбољих начина да се постигне такав систем је коришћење АПИ-ја Ц++ подсистема специфичног за машину као основе за скуп Питхон класа које се покрећу на вишеплатформском тумачу. Стога, програмер највишег нивоа неће морати да узима у обзир карактеристике уграђене машине и њеног ОС-а; он ће једноставно радити са Питхон класама које делују као „омотачи“ АПИ ниског нивоа.

Морао сам да научим Ц++ и Питхон везивање скоро од нуле. Брзо је постало јасно да су објектно оријентисане способности на високом нивоу много важније него на ниском нивоу. Због тога смо морали у потпуности да променимо приступ дизајнирању и имплементацији АПИ-ја, опредељујући се за класе на Питхон нивоу и дељене глобалне податке у Ц/Ц++. Навикните се на генерисање кода: на пример, РОС оквир сам генерише имена и објекте у Питхон-у, тако да морате да узмете у обзир језичке разлике, посебно у куцању, када дизајнирате своје интерфејсе.

Рад у садашњости: Питхон и логика контроле робота

Сада радим као програмер за Питхон и Ц++ у Истраживачко-образовном центру за роботику на Московском државном техничком универзитету. Имплементирамо истраживачке пројекте и софтверске алате које су наручила владина одељења: развијамо манипулаторе са уграђеним системима техничке визије и алгоритмима аутоматске контроле високог нивоа који су независни од система.

Тренутно програмирам логику високог нивоа за системе управљања роботима у Питхон-у; овај језик повезује високо оптимизоване модуле написане у Ц++, асемблеру и Го.

У програмирању алгоритама управљања роботима користе се две велике групе алгоритама. Први од њих се имплементира директно на опрему, на ниском нивоу - ово је уграђени софтвер контролера погона, концентратора комуникационих линија и подсистема интеракције оператера.

Алгоритми овде су дизајнирани за контролисану брзину и поузданост извршавања која превазилази перформансе робота у целини. Ово последње је обавезно, јер безбедност читавог система зависи од софтвера за контролу ниског нивоа.

Друга група алгоритама одређује рад робота у целини. То су програми високог нивоа, чији је акценат у развоју на јасноћи и брзини имплементације алгоритма, често прилично сложен. Поред тога, софтвер високог нивоа на роботу је врло често подложан променама током процеса подешавања и тестирања. За такав развој неопходни су језици за тумачење опште намене.

Која знања су потребна за такав рад?

Биће обавезно проучавање језика шаблона Ц++ и објектно оријентисаних могућности Питхон-а. Готово незаменљива вештина је способност дизајнирања и документовања АПИ-ја. Било би добро истражити могућности специјализованих библиотека као што је Боост::Питхон. Они који раде са софтвером ниског нивоа дефинитивно ће морати да се позабаве мултитхреадинг (на нивоу кернела) и Линук/УНИКС/КНКС системским позивима. Да бисте побољшали своје разумевање принципа роботике, веома је корисно да се упознате са оквиром роботског оперативног система.

Трудим се да имам бар један компајлиран и један интерпретирани програмски језик који се развија и тражи. Ово је победничка стратегија за рад у инжењерингу, где постоји стална потреба за развојем високо специјализованих (читај: необичних) алгоритама и њиховом имплементацијом у језицима за компајлирање. Задатак припреме података за такав софтвер је много пријатнији за решавање коришћењем интерпретираних језика. У почетку, мој сет је укључивао Ц++, Пасцал и БАСИЦ, касније су додати ПХП и БАСХ.

Како развојни алати могу бити корисни у подучавању ученика

Главни план за професионални развој сада је покушај да се обезбеди научна основа за коришћење професионалних алата за развој софтвера у педагогији, да се развију и тестирају наставне методе.

Од 2016. године започео сам велики експеримент у увођењу развојних алата – програмских језика, ИДЕ-а, генератора документације, система контроле верзија – у наставну праксу у високом образовању. Сада смо успели да добијемо резултате који се могу квалитативно генерализовати.

На пример, увођење верзионисања материјала у образовни процес значајно побољшава квалитет студентског рада, али само под обавезним условом: студенти раде заједно на заједничким пројектима. Развој метода за наставу техничких дисциплина коришћењем професионалних алата за развој софтвера сада активно спроводи моја истраживачка група коју чине студенти, апликанти и студенти програма додатног образовања на МСТУ.

Иначе, нисам напустио своју наставну праксу - развио сам свој детаљни редовни курс о дизајну и администрацији Линукса за Институт за напредне студије при МСТУ, и сам га предајем.

Научни рад

Рани радови
Питања планирања хода при пројектовању система ходања на четири ноге на примеру имплементације коња (2010)

О питању кинематике и оптерећења потпорног елемента предње ноге коња у фази приближавања ослонцу као компоненти радног циклуса четвороножног покретача. (2012)

Од последњег
Примена симулације 3Д производње зупчаника за наставу механизма и теорије машина (2019)

Метода за препознавање конструктивних препрека и њена примена у тражењу рељефних објеката (2018)

Остала дела која су индексирана базама научних цитата могу се видети на мом профилу на РесеарцхГате. Већина чланака је посвећена кретању машина, постоје радови о инжењерској педагогији и образовном софтверу.

Извор: ввв.хабр.цом

Додај коментар