В прошлых статьях (раз и два) мы обсуждали, как можно реализовать управление предплечьем и кистью наклонами головы. Остановились мы на доставке запястья в необходимую точку в пространстве с последующим переключением в режим управлению кистью. В прошлый раз кисть у нас была «условная», и были продемонстрированы простейшие способы управления ею и некоторые операции, которые можно совершить с помощью ее вращения. В этой статье мы пойдем дальше — добавим к кисти полноценный механизм для захвата объектов и протестируем различные схемы управления этой конструкцией на предмет их удобства и скорости.
Часть 3 - вы здесь
В этот раз какой‑то математикой или новыми алгоритмами читателя я мучать не буду, потому что их не появилось — вся проведенная работа заключалась в добавлении пары электронных компонентов и последующим проведении UX‑исследования различных схем управления. Поэтому для начала я кратко расскажу, какие изменения были внесены в аппаратную часть, а потом перейду к демонстрациям и обсуждению того, как всем этим управлять, и насколько это удобно.
В конструкцию кисти были добавлены еще два сервомотора — один для вращения кисти вокруг продольной оси и один для смыкания и размыкания манипулятора. Таким образом кисть превратилась в 3DOF‑манипулятор, способный повернуться на любой угол и произвести захват объекта. Также я хочу отметить, что в этой итерации мотор, ответственный за вращение предплечья, был временно удален из конструкции. В предыдущей статье я рассказывал, на какие ухищрения пришлось пойти, чтобы он функционировал, и его хватило ровно настолько, чтобы записать демонстрационные видео, после чего шестерни редуктора благополучно разрушились. Новые, более мощные сервомоторы уже до меня доехали (я заказал несколько штук, предназначенных для профессиональных RC‑моделей, с вращательными моментами от 80 до 150 кг/см), но на этапе завершения текущей итерации, поэтому они будут включены в конструкцию уже в следующий раз, а пока что предплечье у нас будет статичным, зафиксированным с углом поворота в 25 градусов для симуляции среднего положения предплечья относительно плеча.
Также в конструкцию были добавлены несколько кнопок для переключения между режимами и управления смыканием пальцев. Подразумевается, что в «релизной» версии роль кнопок будут выполнять миодатчики, прикрепленные к различным мышцам (например, к бицепсу и большой грудной мышце — они находятся рядом, недалеко от самой руки, что положительно сказывается на проприоцепции, и их можно надежно напрягать раздельно друг от друга), хотя это и необязательно — существую коммерческие бионические протезы, в которых элементами управления являются обычные кнопки, нажатие на которые производят другие части тела, слабо или вообще не задействованные в текущей операции, например кнопка на большом пальце стопы.
Пальцы изготовлены из картона, пропитанного цианакрилатным клеем, что обеспечивает легкость и жесткость конструкции, на концах имеются резиновые накладки, обеспечивающие трение и минимальную адаптацию к геометрии объекта. Имеются два дискретных положения — «открыто» и «закрыто». С аппаратной частью разобрались, давайте теперь перейдем к тому, как всем этим управлять.
Схемы управления
В процессе исследования были проверены три схемы управления, каждую я обсужу в отдельности, расскажу о достоинствах, недостатках, и как можно было бы ее улучшить. Разумеется, придумать их можно намного больше, просто у меня хватило фантазии только на три. Если у кого-то из читателей возникнут какие-то идеи и предложения - с радостью почитаю и попытаюсь проверить.
Raw Input
Схема названа по аналогии с соответствующим режимом в компьютерных мышках, где движение курсора прямо повторяет движение манипулятора с минимальной или без какой-либо промежуточной обработки сигнала. В этой схеме наклон кисти повторяет наклоны головы так как это было описано в предыдущей статье. К этому добавился поворот кисти вокруг продольной оси, который повторяет поворот головы вокруг ее продольной оси. Для проверки был придуман простой тест, в котором нужно захватить три предмета и переместить их по столу, причем каждый из предметов имеет продолговатую форму и сонаправлен одной из трех осей XYZ. На демонстрации видно, что операции занимают достаточно продолжительное время. Главное неудобство данной схемы заключается в естественном смешении поворота головы в сторону и поворота вокруг продольной оси — когда мы поворачиваем голову вправо или влево, мы также слегка наклоняем ее. Приходится прикладывать усилия, чтобы разделять два этих движения. Также проблемы появляются при сильном отклонении продольной оси кисти от линии направления взгляда (то есть когда кисть становится перпендикулярной взгляду) — в таких положениях управление теряет интуитивность, становится сложно предсказывать, в какой точке окажется кисть, а также начинается путаница в том, в какую сторону манипулятор будет поворачиваться вокруг своей оси. Из достоинств данного режима — он хорошо и интуитивно работает при небольших отклонениях оси кисти от направления взгляда, возможно он подошел бы для точных работ с небольшими объектами, расположенными вблизи направления взгляда прямо перед манипулятором. Смешение различных движений головы является проблемой. Возможно, это можно решить с использованием нейронной сети, которая будет точнее распознавать намерение пользователя. Я же попытался решить эту проблему менее утонченно — разделив два движения физически, чтобы их нельзя было совершать одновременно.
Pitch-Yaw / Roll split
Эта схема отличается от предыдущей тем, что одновременно можно либо задавать угол кисти по вертикали и горизонтали, либо задавать поворот кисти вокруг ее продольной оси. Переход между двумя режимами происходит по нажатию кнопки. Здесь есть некоторая трудность, которая заключается в том, что когда манипулятор совершает один тип движения, голова продолжает совершать и другой тип движения, но оно не сообщается манипулятору. Из‑за этого, когда вы переходите к другому типу движения, манипулятор резко меняет свое положение, нагоняя потерянное движение, которое ему не сообщалось. Чтобы этого избежать в момент перехода от одного движения к другому задействуется сглаживание, которое начинает медленно приводить манипулятор в его истинную позицию, чтобы пользователь смог это заметить и скорректировать по желанию. Во всем остальном эта схема эквивалента предыдущей и обладает всеми ее достоинствами и недостатками, плюс добавляет своих. Была попытка провести такой же тест как для первой схемы, но результаты были настолько плачевными, что я решил их даже не показывать. Точность и интуитивность управления гораздо хуже чем у Raw Input. Возможно это связано с понизившейся проприоцепцией — мозг ожидает полного и неограниченного повторения движений как в Raw Input, и начинает путаться, когда оказывается, что разные части движения отрезаны в разные моменты времени. Однако, в другом тесте, где была задача просунуть манипулятор в щель и вытащить через щель продолговатый предмет, такая схема показала себя хорошо, но, по моему мнению, лишь засчет того, что сама геометрия пространства теста диктовала строгий порядок действий. В итоге, я считаю такую схему управления неудачной.
Обе вышеописанные схемы имеют еще один серьезный недостаток — сложность в том, чтобы зафиксировать кисть в определенном положении, поскольку для этого необходимо было бы полностью обездвижить голову. Для решения этой проблемы, а также некоторых других была реализована еще одна схема.
Pose mode
В этой схеме я решил почти полностью отказаться от прямого управления углом наклона кисти головой. Вместо этого с помощью движений головы мы можем переключаться между различными фиксированными позициями кисти, при этом поворот головы вокруг продольной оси по прежнему отвечает за поворот кисти вокруг продольной оси. Для переключения между режимами нужно нажать на кнопку и повернуть голову в ту сторону, где находится желаемая позиция. После этого кисть остается в этой позиции, причем ее угол относительно глобальной оси Z сохраняется ( то есть если запястье было установлено вертикально вниз или параллельно земле — оно всегда будет оставаться направленным вертикально вниз или параллельно земле вне зависимости от положения всей руки). С этой схемой было проведено несколько тестов, в которых она показала себя очень хорошо. По личным ощущениям, это единственная схема, с которой я не боролся с управлением, а делал рукой то, что задумал. Конечно, эта схема лишена свободы Raw Input, однако никто не запрещает сделать Raw Input одним из режимов, в который можно переключиться для совершения каких‑то нестандартных операций, а для более простых повседневных операций использовать фиксированные позы. Обосновать это можно тем, что окружающий нас мир и предметы в нем часто имеют строгую ортогональную ориентацию, и такого метода управления достаточно для многих задач. Также это перекликается с уже существующими системами управления в коммерческих бионических протезах, которые позволяют выбрать позу кисти (направление кисти и конфигурацию пальцев) для взаимодействия с различными объектами.
Заключение
В этой статье мы опробовали несколько схем управления бионической кистью. Вполне возможно, что можно найти гораздо больше схем, и они будут удобнее и точнее представленных здесь. По моим ощущениям, я приблизился к пределу того, что можно реализовать засчет простых сенсоров вроде гироскопов и классических детерминированных алгоритмов, поэтому дальнейшие исследования, скорее всего, я буду проводить на цифровых двойниках моего устройства с помощью VR‑шлема. Насколько я знаю, это частая практика в индустрии протезирования в том числе, потому что сокращает расходы на сложные дорогие компоненты (вроде камер для машинного зрения), время на изготовления прототипов, а также позволяет проверять вычислительно сложные модели, которые просто так не уместить на одноплатники.
Как всегда, все исходники можно найти у меня на Гитхабе. Пока что я с вами прощаюсь, всем спасибо за внимание!