В апреле 2020 года Fuzzy Labs исполнился год. Это также ознаменовало начало общенационального карантина в Великобритании из-за всемирной пандемии — возможно, вы слышали об этом?

Прежде чем вы закроете эту вкладку, я обещаю, что это не очередная статья о том, как преобразовать свой бизнес в цифровую форму для корпоративных модных формулировок после COVID-19. Конечно, нам пришлось приспосабливаться, но и всем остальным тоже, так что вы все уже знаете, каково это. Вместо этого я хочу рассказать вам о нашем внутреннем научно-исследовательском проекте Wearable My Foot и рассказать о нашем пути к созданию носимых устройств на основе данных, пути, который, как оказалось, включает в себя некоторые уникальные логистические проблемы, иначе известные как новая нормальность (тьфу! ладно, я обещаю больше не использовать эти слова).

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

Предыстория

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

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

Взлом оборудования на расстоянии

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

Как команда мы никогда раньше не занимались аппаратным обеспечением, но у нас было много программных проектов, поэтому «насколько это может быть сложно?».

Первое препятствие заключается в том, что физические компоненты должны быть выбраны, закуплены и распределены среди команды. Не большая проблема, если только вы не находитесь в центре России — о, я забыл упомянуть, что один из нас находится в центре России.

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

На этом этапе мы переключились на микроконтроллер меньшего размера (Arduino Nano IoT) и макетную плату меньшего размера. Мы действительно хотели сделать это в небольшом форм-факторе, чтобы его можно было установить на верхнюю часть обуви пользователя. Аналогичные продукты на рынке, в том числе Nurvv, соединяют стельку с дискретной коробкой.

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

Сошлось во мнении, что это оборудование слишком ненадежно. Последний гвоздь в гроб был забит после просмотра обзора Nurvv и осознания того, что даже если мы преодолели аппаратные проблемы, умная стелька для бега имеет ограниченное применение. Рецензент упомянул другой продукт под названием Stryd, который измеряет мощность бега с помощью акселерометра, поэтому мы решили попробовать свои силы (ноги?) в чем-то подобном.

Стремление к власти

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

Выбранный нами микроконтроллер (Arduino Nano IoT) имеет встроенный акселерометр и гироскоп, поэтому дополнительное оборудование не требуется. Кроме того, такие модели, как EESA, предлагают некоторые многообещающие теоретические основы для расчета мощности по ускорению стопы.

За этим последовала серия экспериментов, которые включали сбор реальных данных, их анализ и опробование различных методов для характеристики шагов, частоты шагов, расстояния и, в конечном счете, мощности.

Сбор данных

Мы выбрали самого спортивного члена нашей команды, Тома, для сбора данных, и отправили его в новейшем из нашей линейки модных прототипов, прямо с паяльной станции:

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

По крайней мере, у нас есть некоторые упражнения!

Анализ и моделирование

Физика силы бега не слишком сложна, по крайней мере, с точки зрения физики. Мы начинаем с ускорения, вспоминаем наши уроки математики и переходим к подстановке чисел в формулы. И в идеальном мире мы бы закончили к обеду!

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

Подробный отчет о некоторых аналитических работах, проделанных в рамках этого проекта, см. в этом замечательном посте в блоге от Миши Яковлева (тот, что в России).

Разработка программного обеспечения

Я в основном обсуждал R (исследовательскую) часть R&D, но мы также приложили немало усилий для разработки программного обеспечения для поддержки этого проекта.

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

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

Возникла одна конкретная проблема. Не вдаваясь слишком далеко в детали, нам нужно было поддерживать актуальную оценку направления, в котором движется пользователь.

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

Это также нужно было делать в режиме реального времени, обновляя оценку с течением времени, чтобы мобильное приложение могло рассчитать актуальные показатели скорости и мощности. Поскольку ничто не соответствовало всем требованиям, мы выпустили реализацию онлайн-PCA, специально разработанную для использования в приложениях для Android.

Постоянно удаляющаяся финишная черта

Wearable My Foot — это продолжающийся научно-исследовательский проект Fuzzy Labs. Это побуждает нас как команду учиться и позволяет нам опробовать новые технологии вне работы с нашими клиентами.

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

Это открытый исходный код, поэтому, если вы хотите внести свой вклад или у вас есть новый вариант использования, загляните в репозиторий на Github.

Наконец, мы ищем талантливых людей, которые присоединятся к Fuzzy Labs и будут работать с нами над интересными проектами, подобными этому. Посмотрите здесь, чтобы узнать больше.