Вряд ли кто-то будет оспаривать, что в любом совместном начинании важна команда. В Моторике собрались люди с разной экспертизой и опытом, у нас есть программисты, электронщики, производственники и дизайнеры. Тем не менее мы всегда рады новым комрадам, которые появляются в нашей лаборатории. Иногда этим «свежим мозгам» удается решить задачи, над которыми мы бились не один день, а то и не одну ночь. Сегодня как раз время такой истории о Тане.
В конце статьи важная информация для тех, кто хочет стать лагерным программистом.
Лагерь, где сбываются проекты
В июле 2015 года нашу команду пригласили прочитать лекцию в детском лагере, который организовывают наши друзья GoTo Camp. Но это не типичный лагерь, тут дети погружаются в волшебный мир анализа данных и машинного обучения, робототехники и интернета вещей, биоинформатики, виртуальной реальности, информационной безопасности и многого другого. За две недели в GoTo Camp дети успевают получить новые знания от практикующих специалистов из различных компаний: Яндекс, ABBYY, Microsoft, Biocad, Rambler&Co, Deloitte, Intel, Google и т.д., поработать над собственными проектами, а кто-то даже попадает на стажировку или работу. В общем, мечта, а не лагерь даже для взрослого).
Знания, которые получают ребята на лекциях и практических занятиях, они применяют тут же: каждый из них состоит в команде, которая работает над реализацией какой-то идеи.
Таня была в лагере дважды и участвовала в двух проектах, которые были успешно доведены до конца и работали.
«В первый раз я в команде работала над тележкой, на которую крепился телефон, и оператор с помощью джойстиков управлял самой тележкой, углами наклона и поворота телефона и освещением. Это может быть полезно для тех, кто снимает видео, мы даже успели попробовать поснимать сами. Второй раз я делала робота, запоминающего свою траекторию. Сначала вы показываете ему маршрут, по которому он в дальнейшем будет туда-сюда ездить (его всегда можно перезаписать), например, это может быть какой-то конкретный необходимый маршрут на фабрике, или маршрут для уборки у себя дома. Робот помнит его даже после выключения питания, поэтому его не нужно настраивать каждый раз заново. Оба проекта мне понравились, и за время смен я узнала много нового.»
Вернемся к знакомству «Моторики» и Тани. Одними из приехавших лекторов стали Илья Чех и Василий Хлебников. Они рассказали о том, чем занимается компания «Моторика», над чем работает, показали видео и образцы протезов рук “КИБИ”.
В конце лекции ребята пригласили всех, кому интересно, приехать к нам в сколковскую штаб-квартиру и порешать интересные задачи. Одним из откликнувшихся стала Таня. Так она стала частью нашей команды.
Наш новый комрад Таня
Тане 19 лет, и она учится на втором курсе МГУ на механико-математическом факультете.
Первым языком программирования, которым она овладела, был Python: «Первый язык программирования был Python, мы изучали его в школе. Мне нравится на нём писать, можно быстро сделать работающую программу, кроме того, для него есть множество разных библиотек. Часть из них, например, я использую для своих научных расчётов в университете. Но в школе я занималась олимпиадным программированием, и Python для него не всегда подходит — он довольно медленно работает, поэтому я еще стала программировать на C++. Какое-то время потом я писала на RobotC, а сейчас для работы в „Моторике“ программирую под Arduino.»
Силу алгоритма чувствую в тебе
У нас в лаборатории всегда найдется интересное дело для людей, у которых руки растут откуда надо. Таня помогала нам со сборкой протезов, тестированием датчиков для миоэлектрического протеза, проектировала некоторые детали.
Но самой крутой задачей, которую она решила, касалась считывания и обработки миосигналов с руки: снимать значения с emg-датчиков и, обрабатывая их, управлять нужным образом движением кисти. Другими словами, нужно, чтобы если мышцы напрягались сильно, мотор крутился быстро, а направление вращения зависело от направления сгибания.
Считывание с датчиков осуществлялось, но то и дело возникали разные ошибки, которые мешали правильной работе протеза. Самой большой трудностью в этом было найти, где именно возникает ошибка. А вариантов возникновения этой самой ошибки предостаточно: из-за работы датчиков, их плохого прилегания к руке, тонуса мышц, статического напряжения вокруг, одного плохого контакта, ошибки в программе, доходило вплоть до того, что иногда нужно было просто перезагрузить компьютер, чтобы ошибка исчезла, или поменять электронику. Занятный момент: недавно заметили, что скачки значений происходят еще и от того, стоят ли ноги человека на полу лаборатории или подняты.
Из-за такого обилия возможных ошибок в ходе разработки возникали проблемы: «Например, мы добились идеальной работы в какой-то конкретный день, подобрали все нужные константы, но не учли возможные изменения каких-то параметров в комнате вокруг. Если на следующий день мы обнаружим ошибки в работе, не всегда легко будет понять, что же именно изменилось с прошлого раза.» Из-за этого каждый раз приходилось всё настраивать заново, поэтому в начало запуска была добавлена калибровка протеза.
Именно этот алгоритм калибровки Таня и написала и тем самым значительно уменьшила диапазон поиска ошибок: «Для управления рукой нужно понимать приблизительный диапазон значений при движениях, при этой калибровке он примерно и определяется. Но в работе датчика бывают „выбросы“ — поэтому, например, для поиска уровня покоя руки плохо брать просто минимум всех значений (он может случайно оказаться 0), этому противодействуют различные усреднения в алгоритме.»
Калибровка позволяет получить три ключевых значения (уровень минимума или покоя, уровень-максимум и уровень, когда нужно начинать двигать мотором на минимальной скорости), с которыми потом сравниваются вновь пришедшие. Такое сравнение позволяет более четко отслеживать сигнал и переводить его в действие.
Еще одна проблема, которая встречается до сих пор — это выбрать оптимальное время обработки значений, считываемых уже в процессе управления рукой. Чем лучше и точнее мы ее обрабатываем, тем больше нужно на это времени. И поэтому становится больше задержка от выполнения пользователем определенного действия до момента его реализации на руке. Сейчас время обработки составляет доли секунды. Если в будущем нужно будет усложнить алгоритм калибровки, то можно будет задуматься о том, чтобы включить в него и скорость обработки сигнала.
Машинное обучение, теория всплесков и протезы
На данном этапе Таня и курирующий ее старший моториканец сосредоточены на борьбе с проблемами с физической стороны. В частности, на это был направлен и алгоритм. В дальнейшем, конечно, многое (усреднения против помех, калибровка) можно будет автоматизировать, это сделает работу датчиков для снятия сигналов более стабильной, а значит, можно будет применить продвинутые методы анализа данных.
Таня тоже соприкоснулась с машинным обучением: “Сама я тоже немного занималась в этом году машинным обучением на митапах для ребят из GoTo с Александром Паниным в “Яндексе”, и надеюсь, что с помощью них можно будет получить из наших данных что-то интересное. Кому-то может показаться неожиданным, что в таком деле, как протезы, которое скорее ассоциируется с медициной и биологией, так много теории. В машинном обучении, например, прячется большое количество весьма нетривиальной математики. Но есть и другие её разделы, имеющие отношение к управлению протезами. На мехмате я занимаюсь теорией всплесков (другое название — вейвлеты), которые не только являются интересной и глубокой частью функционального анализа, но и прикладываются в теории информации, обработке сигналов, томографии и т.д. Подробнее об этом можно почитать, например, здесь. Мне хотелось бы также попробовать и эти методы для работы с протезом.”
Больше! Больше интересных задач!
На этом задачи в нашей лаборатории для всех жаждущих приложить свои знания и умения не исчерпаны — их еще много. Так что если вы хотите присоединиться к нам — всегда вэлкам. Выражайте свое желание в комментариях или пишите на info@motorica.org.
Бонус для тех, кто дочитал до конца — грант
Ну, а самые терпеливые и любопытные (школьники и студенты 1-2 курсов) могут получить грант по направлению робототехники и отправиться в один из трех летних лагерей GoTo Camp бесплатно.
Моторика и GoTo Camp объявляют совместный конкурс. Задача перед участниками стоит лишь одна:
- Придумайте насадку на протез, которая расширит возможности человека. Для управления этой насадкой будут использоваться ЭМГ-датчики, акселерометры и гироскопы (а захотите, так и голосовое управление можно задействовать — все в ваших руках!). Подробное задание вы получите имейлом после регистрации тут.
Если ваша насадка будет работать и окажется удачной с точки зрения пользовательского опыта, будет круто. В лагере же вы сможете не просто довести ее до совершенства, насадка дойдет до настоящих пользователей протезов — получится полезное и доброе дело, которое прокачает вашу карму. А вы еще наберетесь опыта, знаний и свежим воздухом подышите.
Комментарии (9)
mwambanatanga
18.05.2017 10:27+5собрались люди с разными экспертизами
Только вот лингвистической экспертизы у них нет.Motoricanka
18.05.2017 10:42Есть, просто прихрамывает. Но все поправимо. Спасибо за замечание!
mwambanatanga
18.05.2017 13:47+3Судя по исправлению, Вы меня не поняли.
Вторая попытка: русское «экспертиза» и английское «expertise» это разные вещи. Последнее переводится на русский как «опыт», «квалификация», «способности», «навыки» и т.п.
Kazancev
18.05.2017 14:52-3"Придумайте насадку"
Наверное в ваших изделиях присутствует целая батарея разных датчиков, и все мыслимые типы датчиков вами давным-давно перепробованы.
Рискну предложить насадку: пьезик крепится на протезе на подушечке пальца. При нажатии на пьезик, как мы все помним, генерируется напряжение (или ток, для объяснения эффекта это не важно).
У меня лежит без дела самописный МКЭ-код для пьезоэлектриков. Я механик (факультет приклад.математики и механики), прочнист, студент 5-го курса (1-й магистратуры) из Перми. Я точно не помню, реагируют ли пьезики на тепло, но если реагируют — в код можно зашить и его. Тензора и матрицы пьезоэлектриков думаю никого не заинтересуют, а посвящённым описывать их не потребуется, так же как и обработку сигналов, БПФ, теорию управления и прочее. Вдруг я кому-нибудь понадоблюсь, не смотря на 5-й курс — имейл alexkazancev@bk.ru, или пишите/звоните на кафедру ДПМ Пермского Политеха.
Markscheider
Открыл пост, чтобы прочитать про нелегкую судьбу Тани. Испытал невероятное облегчение, когда понял, что в заголовке и вступлении речь идет о летних подростковых лагерях. А сначала прямо перепугался…
Serge78rus
Я тоже сразу вспомнил про шаражки, Королева и нелегкий путь советского ракетостроения.
olegy
Оп, опередили
xDimus
А ещё был социалистический лагерь — все соцстраны…