В июле руководитель ЦСИ «Со-общество» Алексей Брызгалов встречался с учащимся и выпускниками ЛНМО (Лаборатория непрерывного математического образования). Тогда ребята рассказывали о своих достижениях и открытиях. Особый интерес вызвала разработка Александра Сердюкова, которая называлась «Мобильная платформа для изучения алгоритмов взаимодействия человека и компьютера с окружающей средой». Дождавшись, когда математик вернётся с конкурсов и олимпиад, координатор общественной организации ЦСИ «СО-ОБЩЕСТВО» Мария Гуляко взяла у него интервью.
— Почему именно разработка этой темы (Мобильная платформа для изучения алгоритмов взаимодействия человека и компьютера с окружающей средой) Вас заинтересовала?
— Так называемые «алгоритмы человеко-машинного взаимодействия» окружают нас почти каждый день. Среди них есть, например, алгоритмы компьютерного слуха (такие используются для голосового управления устройствами, в том числе, в мобильных ассистентах и для голосового поиска), алгоритмы компьютерного зрения (такие позволяют устройству искать определённые предметы на изображении и ориентироваться в ближайшем окружающем пространстве — сейчас их активно используют для реализации беспилотных аппаратов, от машин до квадрокоптеров), и многие другие. Поэтому, с уверенностью можно сказать, что область применений сложных алгоритмов и, соответственно, сложных устройств, использующих их, растёт и развивается сейчас крайне активно. Однако, когда я приступил к решению, казалось бы, простой задачки, меня удивило то, что какого-то определённого и унифицированного подхода, в общем-то, и не существует. Разные группы разработчиков совсем по-разному начинают разработку устройств, кто-то сперва выбирает «железо», а потом придумывает для него задачи (иногда в какой-то момент задачи становятся слишком сложными для этого «железа» и начинаются либо довольно странные ухищрения по оптимизации этих задач, либо отказ от части функционала устройства, либо полное его обновление). Это поразило меня больше всего, поэтому с решения подзадачи поиска шаров на изображении, я переключился на более абстрактную задачу — разработку общей концепции решений подобных задач.
— Как долго шёл процесс изучения данной темы, так сказать, подготовительный этап?
— В начале октября 2016 года в ЛНМО меня познакомили с моим научным руководителем. Он предложил на выбор целый спектр различных задач, каждая из которых так или иначе требовала создания простого прототипа устройства, с использованием которого можно было бы реализовать дальнейшие задачи. Выбор пал на устройство для построения 3D-карт помещений, но довольно быстро возникла проблема с концепцией реализации, и уже после этого я решил серьёзнее заняться именно самим подходом к разработке устройств, который, вместе с демонстрационным проектом, представлял на Балтийском Научно-Инженерном Конкурсе в 2017 году. Параллельно с этим научный руководитель читал специальный курс, посвящённый языку Java и Средам Управляемого Исполнения (MRE).
— Вы можете представить, как именно может быть освоено практическое применение этой разработки?
— Один из основных результатов работы — разработка концепции сборки таких устройств, для того, чтобы объединить разные подходы, взяв лучшее от каждого и исправив недочёты. Конкретно та платформа, которую я выставлял на Конкурсе в качестве прототипа, хоть и играла, в основном, роль демонстрации, но уже могла бы быть использована, например, для упрощения разработки на этапе сборки прототипа. Внешне она представляла из себя гусеничную платформу с креплением для смартфона. Была реализована довольно простая, на первый взгляд, программа: по голосовой команде вида «платформа, вперёд!» платформа двигалась вперёд (существовали аналоги и для других направлений), а по голосовой команде вида «платформа, найди синий шарик!» исполняла простой алгоритм поиска шариков нужного цвета на изображении, используя библиотеку OpenCV и довольно сложный с точки зрения объёма вычислений функционал. Платформа была собрана из довольно дешёвых компонентов, хотя её можно было бы сделать ещё дешевле. Это позволяет применять её, например, в образовательных целях — из такого же набора компонентов собрать готовое устройство может позволить себе подавляющее большинство детей.
— Расскажите в двух словах для тех, кто совершенно не разбирается в данной тематике, в чем суть разработки?
— Изначальной целью была разработка автономного устройства, распознающего голосовые команды и способного ориентироваться в окружающем пространстве с использованием технологий компьютерного зрения и компьютерного слуха. Но вскоре, после изучения аналогичных разработок, оказалось, что какого-либо единого подхода, единого стандарта разработки нет. Например, кто-то сначала выбирает механическое устройство, а потом пытается использовать его для решения задач, не предназначенных для него. Кто-то пытается оставить отладочную плату в готовом проекте, в его финальной реализации (отладочные платы хороши при разработке, но в финальном устройстве их функционал должен быть интегрирован в аппаратную часть платформы). К тому же, для начала реализации собственных устройств необходимо использовать максимально доступные компоненты, в качестве которых в своей реализации я использовал смартфон, arduino-подобную плату и детали от конструктора.
— Что бы вы пожелали молодым людям, которых интересует данная тема?
— Тем, кто чётко для себя решил, что хочет применить данный подход в разработке своего проекта, конечно, можно пожелать не бояться экспериментировать и не стесняться использовать для этого те компоненты, которые доступны. От идеи до готового финального устройства может пройти значительный промежуток времени и произойти большое число правок (кстати, обеих этих проблем концепт позволяет максимально избегать), но следует также осознавать, что требования к прототипам будут меняться по мере их разработки, а требования к финальному устройству будут отличаться ещё сильнее (так, если для прототипов важна структура, её понятность и возможность модификации, то главными требованиями к готовому устройству, скорее всего, будут дешевизна и простота сборки, высокий уровень интегрированности, при котором исходное разделение на «вычислительное» и «исполнительное» устройства может, фактически, отсутствовать).