Главное Авторские колонки Вакансии Образование
Выбор редакции:
242 0 В избр. Сохранено
Авторизуйтесь
Вход с паролем

«На одном С++ все не заканчивается» — Алексей Лысенко (SouthRoboCrew)

Robohunter узнал у руководителя SouthRoboCrew Алексея Лысенко об особенностях программирования роботов, необходимых для этого знаниях и о взаимодействии специалистов разных профилей в процессе разработки.
Мнение автора может не совпадать с мнением редакции

SouthRoboCrew (РЦР ДГТУ) в 2015 году вошел в пятерку лучших робототехнических коллективов страны по версии Всероссийского инженерного конкурса. В 2016 году награжден за создание лучших практик в сфере деятельности практико-ориентированных научно-технических клубов творческого развития студентов и школьников (5-е место из 116 вузов, проходивших отбор).

Сейчас команда SouthRoboCrew ведет работу над Биоехатронным комплексом реабилитации пациентов (грант 180 тыс. руб. на конкурсе «Донская сборка» и победа на конкурсе «Умник-2016», грант 500 тыс. руб.).

b_598c26a491ac6.jpg

SouthRoboCrew или РЦР ДГТУ?

Официальное название нашей организации – Ресурсный центр робототехники ДГТУ, но изначально мы собрались под неофициальным названием SouthRoboCrew, и оно тоже осталось с нами. Сейчас в ходу оба.

Мы работаем как со студентами, так и со школьниками. Изначально мы занимались только со студентами, но поняли, что учащиеся 1-2 курса не обладают достаточным списком компетенций и не могут сразу решать серьезные практические задачи. Мы поняли, что готовить кадры надо раньше, и начали заниматься со школьниками.

О выборе специализации

Занятия в нашем центре идут по трем ключевым направлениям: конструирование, электроника и программирование. Как происходит выбор специализации? Предположим, студент хочет заниматься робототехникой – мы даем задания, тесты, выявляем, к чему у него больше предрасположенность, но так или иначе конструирование, электроника и программирование взаимосвязаны.

Программист в области робототехники не может быть в чистом виде программистом – такие специалисты пишут, скажем, сайты. Чтобы работать с «железом», он должен разбираться в электронике. Мы формируем студентов в команды, они начинают взаимодействовать и учиться всему понемногу – а потом какой-то конкретной специализации более углубленно.

«На одном С++ все не заканчивается»

У нас есть студенты, обучающиеся чисто на программировании. Они приходят и говорят: у меня много навыков, я писал программы, изучал Java, PHP, Python и т. д. Казалось бы, готовый сформированный программист. На деле он не может запрограммировать робота, потому что не знает, как устроен контроллер, как работать с программатором и др. Он может написать код на ноутбуке, но этот код нигде и никак работать не будет.

Самый популярный язык для программирования роботов – C++. Если человек знает этот язык, у него уже есть неплохая база. Но на одном С++ все не заканчивается. В реальных условиях часто используются комбинации из различного софта.

Например, мы делали совместную разработку c московской компанией ICOM Invest и фондом Alcoa. Это телекоммуникационная компания, и она поставила задачу создания мобильного робота, который бы управлялся через протокол 4G. Там не должно было быть конкретного управляющего софта – человек должен зайти в браузер, пройти аутентификацию и получить доступ к интерфейсу управления с любого мобильного устройства. Помимо написания программы для управления мобильным роботом, понадобилось писать верхний уровень – браузерную оболочку связи команд на роботе. При этом использовались и Python, и C++, и Java.

Командная работа и множество правок

Как правило, в команде есть лидер – капитан. Он представляет проект, координирует деятельность остальных. Но без командной работы создать робота нельзя. Не бывает – или это крайне редкие случаи – когда человек одинаково хорошо разбирается и в конструировании, и в электронике, и в проектировании, и в прототипировании, и в программировании.

Допустим, человек хорошо разбирается в конструировании и придумал определенную конструкцию робота. Спроектировал его, показал команде – а специалист по электронике говорит: «Такой робот не получится, потому что в эти габариты не зайдет плата управления». Конструкцию начинают переделывать. Программист говорит: «Такой алгоритм управления не подойдет, нужно управлять роботом как-то иначе». Опять же переделывается конструкция, возможно, что-то меняется в электронике. Поэтому в любом случае командная работа необходима. Любая победа – заслуга коллектива, а не одного человека.

В коммерческой разработке (на профессиональном уровне) подход тот же: это подход, заложенный в стандарты ИСО. Жизненный цикл высокотехнологичной и наукоемкой продукции это подразумевает: создается прототип продукции, анализируются недостатки, которые проявились в альфа- и бета-версиях и так далее – до лабораторного образца и конечного результата. Не бывает такого, чтобы люди собрались, сделали проект и результат сразу получился идеальным.

Российский рынок робототехники

Если говорить о робототехнике в чистом виде, то ее на российском рынке труда в чистом виде сегодня не существует. Специальности только начинают появляться. Российских разработчиков роботов не так много – это, скорее, компании-агрегаторы, специалисты в области автоматизации производства, и роботы являются какой-то частью процесса автоматизации.

Агентство стратегических инициатив совместно со «Сколково» проводило исследование, согласно которому к 2020 году появится профессия робототехника в чистом виде. Сейчас эта компетенция только формируется.

Однако, если человек занимался робототехникой, он либо хороший программист, либо хороший конструктор, либо хороший специалист в области электроники. Компетенции, которые он получает, на сегодняшний день однозначно востребованы на рынке труда, и такие люди стопроцентно найдут себе работу.

Например, один из студентов, который у нас обучался как программист, далее нашел себя как конструктор роботов, а потом устроился работать на предприятие, которое сотрудничает с Роскосмосом. Сейчас он делает там системы управления.

Вообще, в области робототехники программирование – самая гибкая отрасль. Программист может работать удаленно, в нескольких компаниях одновременно, быть задействованным в смешанных проектах. Поэтому такие специалисты легко находят себе работу. При условии хорошего знания языка и наличии хорошего портфолио – и за границей.

Про верхний и нижний уровень программирования

Верхний уровень – максимально абстрактный. Нижний требует знания физики процесса или технических познаний того объекта, который программируется. Если есть задача запрограммировать траекторное перемещение манипулятора на производстве, нужно знать, как и что работает: какие приводы стоят на данном манипуляторе, как они работают, какие у них номинальные режимы работы. Программист высокого уровня может не слишком в это вникать: он может знать, какие на предприятии стоят роботы, и далее будет удаленно ими управлять.

На нижнем уровне нужно понимать, как работают механизмы. С точки зрения программирования программируются они, наверное, проще, но нужно углубленное понимание объекта. На верхнем уровне не нужно думать, как именно эти механизмы будут работать, но написать такую систему с точки зрения кодинга будет намного сложнее, потому что она будет иметь более сложную структуру. Обе задачи сложны, но сложны по-разному.

По какой-то странной причине с программистами в робототехнике самая большая беда: их либо меньше всего, либо меньше программистов, которые бы хотели заниматься реальными «железками», и больше тех, кто предпочитает заниматься облачными вычислениями, интернет-технологиями и пр. А те, кто называет себя программистами, не всегда справляются с практическими задачами, которые мы ставим, так хорошо, как нам бы хотелось.

Наверное, вся сложность сводится к программированию нижнего уровня. Потому что когда человек поступает в университет на программиста, он представляет себя программистом скорее верхнего уровня или разработчиком веб-сайта или веб-приложения. Возможно, это связано с тем, что этот рынок уже достаточно развит в отличие от рынка робототехники.

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.