Хроники виртуальной перчатки
Mar. 17th, 2023 10:03 pmПродолжаю пилить мелкими фракциями железячный pet-проект.
Вечер пятницы прошёл под флагом 6-осевого гироакселерометра MPU-6050.
Во-первых, внезапно выяснилось, что эта плата модуля жрёт 100 миллиампер вместо заявленных для чипа 39 в максимально неэкономном режиме. Если питать её от распберри, жутко греется стабилизатор питания, превращающий 5 вольт в штатные 3.3. Возможно, всё это из-за встроенных в плату резисторов подтяжки, надо отпаять и посмотреть. При внешнем питании от 3.3В стабилизатор почти не греется, но потребляемый ток всё равно порядка 80 mA.
Во-вторых, научился получать данные акселерометра и гироскопа по i2c на распберри из плюсов и питона, и это хорошо. Плохо то, что в чипе есть некий Digital Motion Processor (DMP), доступный только из софта производителя (InvenSence, сейчас TDK) по недокументированным портам, и, в теории, сильно облегчающий обработку данных. Но не для опенсорса.
Пишут, что сам чип довольно старый (2017) и шумный. Заказал десяток более современных сенсоров BMI160, чуть дороже, но точнее и без секретных DMP. Приедут в мае, пока обойдусь тем, что есть. В принципе, на рынке имеются более интересные чипы по $25-50 за штуку, но мы же делаем дешёвую перчатку :)
В-третьих, разобрался в принципах работы motion-трекера Vive Tracker. Высокая точность и абсолютное позиционирование. Ага. Он оптический и абсолютный за счёт настенных маяков. Т.е. для автономного трекинга в движении не годится совсем. Но некоторые идеи можно почерпнуть и оттуда. До кучи посмотрел подходы к определению положения пальцев в разных AR/VR-проектах. Где-то тензодатчики длиной во весь палец, где-то - индукционные маяки на каждой фаланге, где-то - вообще оптическое распознавание.
В-четвёртых, научился дешифровывать i2c-протокол с помощью логического анализатора DSLogic Plus. Скорее до кучи, чтобы освоить прибор. На клиентской стороне - линуксовый DSView, разбираться с ним было достаточно прикольно.
В целом, доволен, буду дальше двигаться понемногу. На очереди - полноценный сбор данных с множества IMU-датчиков через i2c-мультиплексор (приедет в апреле), станут ясны требования к производительности. А там и до ключевого момента - обучения и распознавания движений нейросеткой, глядишь, дойдёт.
Ну и просто отвлечься от софтописательства разной степени энтерпрайзности на что-тотновое - бесценно :)
Вечер пятницы прошёл под флагом 6-осевого гироакселерометра MPU-6050.
Во-первых, внезапно выяснилось, что эта плата модуля жрёт 100 миллиампер вместо заявленных для чипа 39 в максимально неэкономном режиме. Если питать её от распберри, жутко греется стабилизатор питания, превращающий 5 вольт в штатные 3.3. Возможно, всё это из-за встроенных в плату резисторов подтяжки, надо отпаять и посмотреть. При внешнем питании от 3.3В стабилизатор почти не греется, но потребляемый ток всё равно порядка 80 mA.
Во-вторых, научился получать данные акселерометра и гироскопа по i2c на распберри из плюсов и питона, и это хорошо. Плохо то, что в чипе есть некий Digital Motion Processor (DMP), доступный только из софта производителя (InvenSence, сейчас TDK) по недокументированным портам, и, в теории, сильно облегчающий обработку данных. Но не для опенсорса.
Пишут, что сам чип довольно старый (2017) и шумный. Заказал десяток более современных сенсоров BMI160, чуть дороже, но точнее и без секретных DMP. Приедут в мае, пока обойдусь тем, что есть. В принципе, на рынке имеются более интересные чипы по $25-50 за штуку, но мы же делаем дешёвую перчатку :)
В-третьих, разобрался в принципах работы motion-трекера Vive Tracker. Высокая точность и абсолютное позиционирование. Ага. Он оптический и абсолютный за счёт настенных маяков. Т.е. для автономного трекинга в движении не годится совсем. Но некоторые идеи можно почерпнуть и оттуда. До кучи посмотрел подходы к определению положения пальцев в разных AR/VR-проектах. Где-то тензодатчики длиной во весь палец, где-то - индукционные маяки на каждой фаланге, где-то - вообще оптическое распознавание.
В-четвёртых, научился дешифровывать i2c-протокол с помощью логического анализатора DSLogic Plus. Скорее до кучи, чтобы освоить прибор. На клиентской стороне - линуксовый DSView, разбираться с ним было достаточно прикольно.
В целом, доволен, буду дальше двигаться понемногу. На очереди - полноценный сбор данных с множества IMU-датчиков через i2c-мультиплексор (приедет в апреле), станут ясны требования к производительности. А там и до ключевого момента - обучения и распознавания движений нейросеткой, глядишь, дойдёт.
Ну и просто отвлечься от софтописательства разной степени энтерпрайзности на что-тотновое - бесценно :)
no subject
Date: 2023-03-17 08:11 pm (UTC)no subject
Date: 2023-03-17 09:30 pm (UTC)Во-первых, миограмму мне нечем снимать. Там нужны специфические электроды либо катушки, это не для домашнего проекта со сборкой железа "из кубиков".
Во-вторых, я пока не очень понимаю, что именно снимать мышц и как интерпретировать. И требования к АЦП непонятны.
В-третьих, миограмма будет давать такое же относительное положение пальцев в пространстве, как и модель кисти с данными акселерометров, но последнюю хотя бы понятно как считать для обучения модели.
P.S. А вообще, идея тоже интересная, имеет смысл посмотреть, как на этом принципе делают те же протезы.
no subject
Date: 2023-03-17 09:54 pm (UTC)Посмотрел что почём в мире миографии. Myo Gesture Control Armband с 8 датчиками (из вот этого проекта: https://habr.com/ru/post/437888/) — несчастные 45 тысяч рублей за штуку. АЦП ADS1299, которые в той же статье предлагали использовать — от 4 до 20 кило рублей на Али, в зависимости от модели. На массовый нейроинтерфейс не тянет просто по стоимости комплектующих.
no subject
Date: 2023-03-18 05:26 am (UTC)Для ресерча есть старинный проект OpenBCI (в разной комплектации) энцефалограф-миограф (4-16 каналов). Он есть на Али у китайцев в собранном виде от 240 уе до 500+ уе.
гироскоп в оригинале там был по моему
no subject
Date: 2023-03-18 05:35 am (UTC)"Обучение" я же описал — "стандартная распальцовка в начале работы" например по демке какой то задающей набор и последовательность движений. В этот момент система запоминает картинку временную срабатывания "двигательных единиц" и тонко настраивается.
Поскольку цель только управления, то все "помехи — артефакты движения" прекрасно заходят на вход как управляющий сигнал (главное что бы они были коррелированы с движением).
Ну и data (sensor) fusion во все поля. Отказываться от гироскопа-акселерометра совершенно не надо. Там корреляты будут закачаешься, а два источника по 0.7 это уже 0.91 на выходе.
no subject
Date: 2023-03-18 08:14 am (UTC)набора мышцчеловека на другого занимает до получаса,Ну и "своё железо", которое "пока в разработке", насколько я понимаю, так и не появилось, поскольку публикаций больше не было с 2019 года.
Вероятно, проект загнулся, выйдя по финансам за пределы хоббийного, но не найдя коммерческой перспективы. Чтобы решение было оправданным по деньгам, оно должно быть либо воспризводимым за недорого (пусть не DIY, но на уровне китайских фабрик второго эшелона), либо иметь узую нишу, в которой есть платёжеспособный спрос (вроде бионических протезов). На этом многие обламываются.
no subject
Date: 2023-03-18 08:19 am (UTC)Дык, пока это основной доступный мне инструмент.
Миографы-энцефалографы мало где можно купить, а сложность их самостоятельной сборки чуть попроще, чем MEMS :)
Я присматривался к съёму электрических сигналов с тела ещё лет 5 назад, но так и не нашёл простого инструментария с приличной точностью. Пошёл по пути оптического разпознавания стереокартинки, где быстро понял, что максимум возможного тут — уровень кинекта. Ну и забросил.
no subject
Date: 2023-03-18 09:06 am (UTC)OpenBCI — это про голову, насколько я помню. Были ещё компактные энцефалографы Muse и Emotive Epoc+ с API непонятной открытости, но точность применения "гоняем курсор силой мысли" в те времена, когда я этим интересовался, была так себе. Правда, это всё из эпохи до дешёвых нейросетей.
no subject
Date: 2023-03-18 10:52 am (UTC)Не у них в магазине собственном и универсальные электроды с кабелем и проект висит в доках EMG Scrolling.
no subject
Date: 2023-03-18 10:59 am (UTC)Проект с хабра совсем не грузит в модель "предисторию" сигналов (и странно вообще что работает при такой архитектуре :)))
По моему надо "некую 2.5D спектрограмму за последнюю секунду" запихивать на вход как минимум. Ну и писать выполнение некой последовательности жестов что бы как в речи словить словарь "биграмм" и потом решить задачу сегментации.
no subject
Date: 2023-03-18 11:02 am (UTC)> так и не нашёл простого инструментария с приличной точностью
Теоретически можно еще тензодатчики над мышцами предплечья писать. Типа "резинки для поддержки рукава рубашки" с десятком сегментов.
no subject
Date: 2023-03-22 07:49 pm (UTC)no subject
Date: 2023-03-22 08:46 pm (UTC)Типа таких. У меня тензодатчиков вообще пока не будет. Будут акселерометры-гироскопы и нейросетевая модель перемещения пальцев.