Путь из лагерного робототехника в создателя киборгов

image

Вряд ли кто-то будет оспаривать, что в любом совместном начинании важна команда. В Моторике собрались люди с разными экспертизами и опытом, у нас есть программисты, электронщики, производственники и дизайнеры. Тем не менее мы всегда рады новым комрадам, которые появляются в нашей лаборатории. Иногда этим «свежим мозгам» удается решить задачи, над которыми мы бились не один день, а то и не одну ночь. Сегодня как раз время такой истории о Тане.

В конце статьи важная информация для тех, кто хочет стать лагерным программистом.

Лагерь, где сбываются проекты


В июле 2015 года нашу команду пригласили прочитать лекцию в детском лагере, который организовывают наши друзья GoTo Camp. Но это не типичный лагерь, тут дети погружаются в волшебный мир анализа данных и машинного обучения, робототехники и интернета вещей, биоинформатики, виртуальной реальности, информационной безопасности и многого другого. За две недели в GoTo Camp дети успевают получить новые знания от практикующих специалистов из различных компаний: Яндекс, ABBYY, Microsoft, Biocad, Rambler&Co, Deloitte, Intel, Google и т.д., поработать над собственными проектами, а кто-то даже попадает на стажировку или работу. В общем, мечта, а не лагерь даже для взрослого).

image

image

Знания, которые получают ребята на лекциях и практических занятиях, они применяют тут же: каждый из них состоит в команде, которая работает над реализацией какой-то идеи.

image

Таня была в лагере дважды и участвовала в двух проектах, которые были успешно доведены до конца и работали.

image

«В первый раз я в команде работала над тележкой, на которую крепился телефон, и оператор с помощью джойстиков управлял самой тележкой, углами наклона и поворота телефона и освещением. Это может быть полезно для тех, кто снимает видео, мы даже успели попробовать поснимать сами. Второй раз я делала робота, запоминающего свою траекторию. Сначала вы показываете ему маршрут, по которому он в дальнейшем будет туда-сюда ездить (его всегда можно перезаписать), например, это может быть какой-то конкретный необходимый маршрут на фабрике, или маршрут для уборки у себя дома. Робот помнит его даже после выключения питания, поэтому его не нужно настраивать каждый раз заново. Оба проекта мне понравились, и за время смен я узнала много нового.»

Вернемся к знакомству «Моторики» и Тани. Одними из приехавших лекторов стали Илья Чех и Василий Хлебников. Они рассказали о том, чем занимается компания «Моторика», над чем работает, показали видео и образцы протезов рук «КИБИ».

image

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

Наш новый комрад Таня


Тане 19 лет, и она учится на втором курсе МГУ на механико-математическом факультете.

image

Первым языком программирования, которым она овладела, был Python: «Первый язык программирования был Python, мы изучали его в школе. Мне нравится на нём писать, можно быстро сделать работающую программу, кроме того, для него есть множество разных библиотек. Часть из них, например, я использую для своих научных расчётов в университете. Но в школе я занималась олимпиадным программированием, и Python для него не всегда подходит — он довольно медленно работает, поэтому я еще стала программировать на C++. Какое-то время потом я писала на RobotC, а сейчас для работы в «Моторике» программирую под Arduino.»

Силу алгоритма чувствую в тебе


У нас в лаборатории всегда найдется интересное дело для людей, у которых руки растут откуда надо. Таня помогала нам со сборкой протезов, тестированием датчиков для миоэлектрического протеза, проектировала некоторые детали.

Но самой крутой задачей, которую она решила, касалась считывания и обработки миосигналов с руки: снимать значения с emg-датчиков и, обрабатывая их, управлять нужным образом движением кисти. Другими словами, нужно, чтобы если мышцы напрягались сильно, мотор крутился быстро, а направление вращения зависело от направления сгибания.

image

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

image

Из-за такого обилия возможных ошибок в ходе разработки возникали проблемы: «Например, мы добились идеальной работы в какой-то конкретный день, подобрали все нужные константы, но не учли возможные изменения каких-то параметров в комнате вокруг. Если на следующий день мы обнаружим ошибки в работе, не всегда легко будет понять, что же именно изменилось с прошлого раза.» Из-за этого каждый раз приходилось всё настраивать заново, поэтому в начало запуска была добавлена калибровка протеза.


Именно этот алгоритм калибровки Таня и написала и тем самым значительно уменьшила диапазон поиска ошибок: «Для управления рукой нужно понимать приблизительный диапазон значений при движениях, при этой калибровке он примерно и определяется. Но в работе датчика бывают «выбросы» — поэтому, например, для поиска уровня покоя руки плохо брать просто минимум всех значений (он может случайно оказаться 0), этому противодействуют различные усреднения в алгоритме.»

image

Калибровка позволяет получить три ключевых значения (уровень минимума или покоя, уровень-максимум и уровень, когда нужно начинать двигать мотором на минимальной скорости), с которыми потом сравниваются вновь пришедшие. Такое сравнение позволяет более четко отслеживать сигнал и переводить его в действие.

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

Машинное обучение, теория всплесков и протезы


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

Таня тоже соприкоснулась с машинным обучением: «Сама я тоже немного занималась в этом году машинным обучением на митапах для ребят из GoTo с Александром Паниным в «Яндексе», и надеюсь, что с помощью них можно будет получить из наших данных что-то интересное. Кому-то может показаться неожиданным, что в таком деле, как протезы, которое скорее ассоциируется с медициной и биологией, так много теории. В машинном обучении, например, прячется большое количество весьма нетривиальной математики. Но есть и другие её разделы, имеющие отношение к управлению протезами. На мехмате я занимаюсь теорией всплесков (другое название — вейвлеты), которые не только являются интересной и глубокой частью функционального анализа, но и прикладываются в теории информации, обработке сигналов, томографии и т.д. Подробнее об этом можно почитать, например, здесь. Мне хотелось бы также попробовать и эти методы для работы с протезом.»

Больше! Больше интересных задач!


На этом задачи в нашей лаборатории для всех жаждущих приложить свои знания и умения не исчерпаны — их еще много. Так что если вы хотите присоединиться к нам — всегда вэлкам. Выражайте свое желание в комментариях или пишите на info@motorica.org.

Бонус для тех, кто дочитал до конца — грант


Ну, а самые терпеливые и любопытные (школьники и студенты 1–2 курсов) могут получить грант по направлению робототехники и отправиться в один из трех летних лагерей GoTo Camp бесплатно.

Моторика и GoTo Camp объявляют совместный конкурс. Задача перед участниками стоит лишь одна:

  • придумайте насадку на протез, которая расширит возможности человека. Для управления этой насадкой будут использоваться ЭМГ-датчики, акселерометры и гироскопы (а захотите, так и голосовое управление можно задействовать — все в ваших руках!). Подробное задание вы получите имейлом после регистрации тут.

image

Если ваша насадка будет работать и окажется удачной с точки зрения пользовательского опыта, будет круто. В лагере же вы сможете не просто довести ее до совершенства, насадка дойдет до настоящих пользователей протезов — получится полезное и доброе дело, которое прокачает вашу карму. А вы еще наберетесь опыта, знаний и свежим воздухом подышите.

© Geektimes