Pull to refresh
0

Обратная связь с пользователем на основе технологии Intel RealSense

Reading time25 min
Views5.8K
Original author: Justin Link

Программное обеспечение помогает преодолевать ограниченные возможности человека. Программы дают возможность читать людям с нарушениями зрения, программы помогли человеку высадиться на Луну и вернуться, программы позволяют обмениваться информацией в глобальном масштабе с невероятной легкостью. Еще несколько десятилетий назад все эти возможности казались фантастическими. Тем не менее, несмотря на всю мощь программ в нашей жизни, способы нашего взаимодействия с программами пока далеки от совершенства.
С появлением естественных пользовательских интерфейсов (natural user interfaces, NUI), таких как технология Intel® RealSense™, мы можем взаимодействовать с программами по-новому, более естественным образом. Интерфейсы NUI дают нам возможность работать удобнее, проще и эффективнее. Но для этих новых способов взаимодействия с программами нужно создать новый язык.
В этой статье описывается опыт компании Chronosapien Interactive по разработке естественных интерфейсов для игр с особым упором на пользовательскую обратную связь в этой среде.

Ожидания пользователей


Программное обеспечение в его современном состоянии является негибким и, если угодно, безжалостным. Оно не принимает ничего без явных действий пользователя и ожидает получения полных команд для выполнения нужных действий. Мы хорошо обучены и приспособлены к требованиям программ. Но при использовании естественных интерфейсов картина меняется. Все, что мы узнали о компьютерах и о том, как они познают окружающий мир, исчезает, когда мы говорим компьютеру «Привет!». Когда нам говорят помахать рукой перед экраном, но компьютер не реагирует на это немедленно, мы смущаемся, поскольку, с нашей точки зрения, мы сделали в точности то, что от нас попросили. Часть такого недопонимания проистекает из недостаточного знания технологии, но в основном оно обусловлено тем, что пользователей просят общаться с компьютером естественным образом, а это приводит к «очеловечиванию» компьютера. Пользователи ведут себя так, как будто они общаются с человеком, но при этом они не будут получать такие же подсказки, как в естественном общении: мимика, зрительный контакт, жесты и т. п. Необходимо возместить отсутствие таких сигналов обратной связи, создав очевидные ответы на действия пользователя, нужно выдавать пользователю ответы наподобие «Мы получили ваше сообщение», «Я не понял этого, потому что...» и «Принято, работаю над получением ответа». Кроме того, для формирования нужных ожиданий у пользователей требуется определенное обучение. Относитесь к этому как к знакомству с новым человеком из другой страны.

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

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

Аналогия с попыткой разговаривать с собеседником в шумной переполненной комнате очень хорошо подходит к работе с естественными интерфейсами. Ситуация усугубляется еще и тем, что в данном случае ваш собеседник (компьютер) обладает краткосрочной памятью новорожденного младенца, а по способности воспринимать контекст он находится на уровне плодовой мушки-дрозофилы. Ниже перечислены основные проблемы создания пользовательской обратной связи с помощью данных в приложениях Intel RealSense.
  • Зачастую вы не знаете, когда пользователь начал взаимодействовать с приложением.
  • Вы не сможете отличать ситуации, когда пользователь взаимодействует с приложением и когда пользователь делает что-то совершенно постороннее.
  • Вы не сможете без значительных усилий научить программу отличать пользователя, который взаимодействует с приложением, от другого человека, который просто оказался в поле зрения камеры.
  • В данных для взаимодействия будет много помех, иногда такие данные будут ложными.
  • Данные не имеют ограничений, связанных с реальным миром.
  • На обработку данных требуется время, из-за чего возникают неловкие паузы между получением команды и реагированием на нее.

Эти проблемы, связанные с взаимодействием с помощью рук, рассматриваются в приведенных ниже разделах на основе различных реализаций технологии Intel RealSense. Существует и ряд общих принципов, о которых следует помнить при проектировании как обратной связи, так и самого взаимодействия. В ходе своей работы мне удалось найти решение для некоторых проблем, но они по-прежнему являются серьезным препятствием на пути к естественному использованию компьютеров. При разработке с использованием естественных интерфейсов или для них будьте готовы к огромным объемам тестирования и множеству последовательных этапов. Некоторые проблемы, с которыми вы столкнетесь, будут связаны с оборудованием, другие — с SDK, а третьи — с естественными интерфейсами в целом.

Отслеживание рук в Intel RealSense SDK


Способность программ интерпретировать движения рук открывает новые возможности для создателей программ. Помимо образования интуитивной платформы, на которой можно строить взаимодействие между человеком и компьютером, использование рук предоставляет новый уровень «погружения» в приложение, недостижимый иным образом. С помощью Intel RealSense SDK разработчики могут работать со множеством отслеживаемых узлов руки, с ее текущим состоянием «открытости», с различными позами, движениями и жестами. Эти возможности, разумеется, связаны с определенными ограничениями, как и в других режимах приложений Intel RealSense, и эти ограничения придется каким-то образом обходить. Ниже я рассказываю об этих ограничениях, а также описываю разные способы управления с помощью рук, которые мы пытались использовать.

Ограничения взаимодействия с помощью рук


Объем отслеживания


Объем отслеживания приложения Intel® RealSense™ в режиме отслеживания рук конечен и может ограничивать возможности приложения

Одной из проблем взаимодействия с помощью рук в SDK является ограниченная возможностями оборудования дальность отслеживания. Поскольку диапазон движения рук у человека достаточно велик, часто руки выходят за пределы этой дальности. Выход за пределы отслеживаемого объема — наиболее частая проблема, с которой сталкиваются новые пользователи, пытающиеся взаимодействовать с приложениями Intel RealSense при помощи рук.

Наложение


Взаимное наложение рук из программы Robust Arm and Hand Tracking компании Unsupervised Context Learning

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

Размер руки по отношению к размеру экрана

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

Усталость рук

Управление цифровым миром с помощью рук — это новая степень свободы, но здесь легко переусердствовать. Одна из важнейших проблем, отмеченных и в наших, и в других приложениях: при использовании рук для работы с приложениями пользователи уже через 60–90 секунд начинают испытывать усталость. Ситуация немного упрощается, если есть стол, на который пользователь может поставить локти, но и это не решает проблему в полной мере.

Отсутствие тактильной обратной связи

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

Руки в качестве указателя



Наша реализация рук в качестве указателя в игре Space Between. Указатель — светящийся шар рядом с акулами

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

Наши задачи

Вот проблемы, которые мы обнаружили при попытке использовать руки в качестве указателя.

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

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

Руки пользователей часто выходили за пределы отслеживаемого объема
Как уже было сказано ранее, это наиболее распространенная проблема при использовании рук для взаимодействия с приложениями Intel RealSense. Даже когда видимый указатель оказывался на краю экрана, пользователи не связывали это с тем, что их руки дошли до границ отслеживаемого объема.

Указатель в Space Between

В игре Space Between мы использовали двухмерный указатель тремя способами.

Порыв ветра

Указатель в виде порыва ветра в игре Space Between

Что сработало
Из всех трех вариантов порыв ветра был наиболее абстрактным. Удачным было то, что его аморфные очертания позволяли замаскировать большую часть помех данных расположения, которые неизбежно возникают в приложениях Intel RealSense. Кроме того, использовалась озвучка, громкость которой изменялась в зависимости от скорости движения указателя. Это было удобно, поскольку пользователи знали, отслеживаются ли движения их рук, или нет (также это можно было определять по движению облаков на экране).

Что не сработало
Аморфные очертания были удобны для маскировки помех, но они не давали возможности точно определить место на экране. Из-за этого возникали затруднения при попытке, например, выбрать ту или иную игру путем наведения указателя на объекты на экране.

Светящийся шар

Еще один указатель в игре Space Between

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

Что не сработало
Основная проблема со светящимся шаром в наших играх: пользователи иногда не понимали, что они управляют именно указателем, а не самим персонажем. Еще одна проблема со светящимся шаром. Помимо управления положением персонажа мы также пытались его использовать для другой функции — отображения открытой или закрытой ладони. Для этого мы увеличивали интенсивность света и делали его ярче. В будущем мы доработаем указатель, чтобы наглядно показывать его изменение при раскрытии ладони. Кроме того, мы можем на короткое время показывать изображение руки рядом с ним, чтобы пользователи понимали, чем именно они управляют.

Указатель в виде руки

Указатель в виде руки в Space Between используется для взаимодействия с меню

Что сработало
Указатель в виде руки был самым простым и интуитивным в использовании из всех трех вариантов. Поскольку указатель имел форму руки (и правильный размер), пользователи сразу понимали, чем и как они управляют. Мы продвинулись дальше и создали анимированные изображения переходов между различными положениями руки, соответствуя текущему состоянию. Это было очень удобно, поскольку пользователь сразу видел, что система распознала изменение и реагирует на него. Даже если какое-либо действие не использовалось в текущем контексте, игроки без труда узнавали, что именно интерпретирует приложение и насколько хорошо.

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

Выводы

Наш опыт показывает, что на вопрос о том, как реализовать указатель при использовании рук, не существует однозначного ответа: все зависит от контекста и приложения. Тем не менее существует ряд универсальных правил, касающихся предоставления пользователям обратной связи.
  • Во всех возможных случаях предоставляйте пользователю зрительную и звуковую обратную связь при изменении состояния рук. Это помогает игрокам понимать, что именно отслеживается системой, а также позволяет естественно воспринимать игровые возможности.
  • Если пользователь оказывается за пределами отслеживаемого объема, сразу и четко сообщайте об этом. Этой возможности мы в данной момент не имеем в Space Between, но она решает множество проблем, связанных с удобством пользователей, например когда пользователи не понимают, почему игра больше не отслеживает их жесты или работает с задержками при возвращении рук в поле зрения камеры.

Руки и жесты



Первый этап жеста поднятия в игре The Risen

Жесты — мощное средство, чтобы выражать свои мысли и выполнять действия. Постоянство жестов позволяет устроить очень точное управление и создать ощущения, уникальные для среды, в которой жесты используются. Использование жестов помогло создать наши игры на основе технологии Intel RealSense, а именно Space Between и The Risen, и соединить игроков с выполняемыми ими действиями. Как уже было упомянуто ранее, сначала я расскажу о проблемах, с которыми мы столкнулись при использовании жестов, о том, как мы их реализовали, и о том, что, по нашему мнению, сработало, а что нет.

Наши задачи

Жесты сложнее, чем просто отслеживание положения. Вот некоторые проблемы, которые мы обнаружили при работе над управлением с помощью жестов.

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

Многие пользователи выполняют жесты правильно, но недостаточно точно для распознавания приложением
Как я уже говорил выше, программное обеспечение распознавания жестов работает весьма придирчиво. Жесты прокрутки должны проходить определенное расстояние, руки должны двигаться определенным образом, на определенном расстоянии от камеры и т. д. Все это иногда делает использование жестов весьма неудобным.

Некоторые углы рук не оптимизированы для отслеживания с помощью технологии Intel RealSense
Одним из серьезнейших недостатков алгоритмов отслеживания рук является невозможность отслеживать определенные углы. В настоящее время система отлично обнаруживает руки, если ладони развернуты в сторону камеры, но обнаружение выполняется гораздо хуже, если ладони направлены перпендикулярно. Это влияет на множество различных жестов, но в особенности на жесты со сложными движениями. Например, в игре The Risen мы создали жест для поднятия скелетов: сначала пользователь показывает камере ладони, затем опускает руки, развернув ладони вверх, а затем поднимает их. В той части этого жеста, когда ладони принимают плоское положение, приложение часто прекращает их отслеживать, что прерывает жест в самой его середине.

Жест поднятия в игре The Risen


Второй этап жеста поднятия в игре The Risen

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

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

При создании жеста мы знали, что руки пользователей с большой вероятностью не будут правильно расположены. Мы также учитывали существующие в SDK ограничения по отслеживанию рук. Для решения этой проблемы мы выбрали начальную позу жеста так, чтобы модуль отслеживания хорошо ее распознавал. Кроме того, мы предупреждаем пользователя: «Ага, сейчас будет жест поднятия». Пользователь получает зрительное и звуковое уведомление о том, что система знает о начале жеста. Это позволяет избежать ненужных повторений и сообщает игроку, что именно нужно системе.

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

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

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

Выводы

Вот о чем следует помнить при создании обратной связи для ввода с помощью жестов.
  • Правильная подготовка и объяснения крайне важны для того, чтобы пользователи понимали, как выполнять жесты. Мы использовали анимированное изображение трехмерных рук, и этот способ представляется оптимальным, так как пользователи понимают, что нужно делать.
  • Предоставление обратной связи на разных этапах сложных жестов помогает избегать раздражения. Когда пользователи привыкают к технологии, информирование их о том, что система работает (или не работает), помогает избежать вынужденных повторений жестов раз за разом.

Виртуальные руки



Использование виртуальных рук для взаимодействия со средой в игре The Risen

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

Обнаруженные проблемы

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

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

Данные не имеют ограничений, связанных с реальным миром
Помимо помех узлы (соответствующие суставам руки) иногда получают расположение, физически невозможное в реальном мире. Кроме того, иногда они прыгают по всему экрану со скоростью света в течение нескольких кадров, это происходит при недостаточной видимости части руки.

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

Виртуальные руки в игре The Risen

Игроки могут взаимодействовать с миром при помощи рук призрака-скелета в игре The Risen. С помощью рук игрок помогает скелетам различным образом, например открывает двери или включает ловушки для противников. Реализация виртуальных рук помогла нам узнать немало нового.

Что сработало

Интерфейс игры The Risen: отображение обнаруженного лица и правой руки

Первое, что следует отметить, — графический пользовательский интерфейс, который мы создали для игры The Risen. Череп в левом верхнем углу представляет игрока и отслеживаемые в данный момент элементы управления. Когда система обнаруживает руки, они отображаются на экране в анимированном виде, показывая игроку, что система их распознает. Казалось бы, это очень просто, но на самом деле полезно, если игрок может определить, что работает, а что нет. Например, если система обнаруживает голову игрока, но не определяет его руки, это означает, что они находятся за пределами отслеживаемого объема.

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

Я описываю наш первоначальный подход ко взаимодействию с объектами среды ниже в разделе «Что не сработало», но в конечном итоге мы добились желаемого: простой жест захвата, в котором использовалась вся рука, работал вполне приемлемо. Это позволило в определенной степени решить две упомянутые выше проблемы (нечеткое ощущение глубины и отсутствие тактильной обратной связи) без существенного ущерба для игры. При этом, впрочем, пришлось строже подойти к выбору объектов, с которыми можно взаимодействовать таким образом, поскольку, если в области руки находятся два или несколько объектов, при взаимодействии они будут затронуты все сразу.

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

Что не сработало
Когда мы впервые задумали использовать руки для взаимодействия со средой, мы представляли себе такие движения, как «потянуть цель», «передвинуть книгу», как будто эти объекты находились прямо перед игроком. Проблема оказалась в том, что было очень трудно выполнять эти движения в точности. Ухватить пальцами цепь, когда вы не можете правильно воспринимать глубину и не получаете тактильной обратной связи, оказалось очень трудной задачей с огромным количеством безуспешных попыток. Эту проблему можно несколько сгладить за счет более точного отслеживания, но действительно решить ее можно при использовании стереоскопического экрана и тактильной обратной связи для рук.

Выводы

Краткая сводка основных выводов, полученных при попытке использовать виртуальные руки.
  • Взаимодействие с помощью простейших жестов работает лучше всего. Возможно, когда технология будет усовершенствована (или при использовании других средств просмотра) можно использовать и мелкие жесты, но пока следует остановиться на самом простом.
  • Предоставляйте наглядную и звуковую обратную связь, когда руки находятся во «взаимодействующем» состоянии. За счет этого пользователь узнает, что система находит объекты в пределах досягаемости, а это упрощает взаимодействие.

Отслеживание головы в Intel® RealSense™ SDK



Отслеживание головы в Intel RealSense SDK показывает ориентацию головы пользователя

Предположим, приложение «знает», где находится голова пользователя. Ну и что же? Преимущества этого не всегда очевидны. В отличие от рук, пожалуй, не следует разрабатывать изощренные механизмы управления на основе отслеживания головы, иначе пользователям не обойтись без головокружения. Тем не менее ограниченное использование отслеживания положения головы поможет придать уникальную окраску приложению и глубже погрузить пользователей в виртуальный мир. В Intel RealSense SDK есть несколько ограничений при отслеживании головы. Об этих ограничениях следует помнить, особенно при создании пользовательской обратной связи в приложении.

Ограничения отслеживания головы


Объем отслеживания

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

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

Голова в качестве указателя



На этапе Twilight Zone игры Space Between для отслеживания головы пользователя использовался светящийся указатель

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

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

Наши задачи

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

Движение вверх и вниз было не настолько интуитивным, как мы ожидали.
Горизонтальное движение при боковом наклоне головы удалось реализовать довольно просто, но с вертикальным движением все оказалось сложнее. Для управления положением по вертикали поднимать и опускать голову в буквальном смысле не имело смысла, поскольку пользователям приходилось бы вставать или съеживаться, чтобы их голова двигалась вверх или вниз относительно камеры. Вместо этого мы решили использовать расстояние от камеры (пользователь должен был наклоняться либо к камере, либо от нее), но обнаружили, что этот способ был не слишком интуитивным.

Указатель в Space Between

В игре Space Between мы использовали указатель в виде головы, чтобы управлять китом на этапе, который называется Twilight Zone. На этом этапе игрок может наклоняться влево и вправо, чтобы плыть в соответствующую сторону. Наклон вперед соответствует погружению кита, а наклон назад — всплытию. Кит должен был двигаться вдоль светящегося следа, а при наклоне головы он проплывал определенное расстояние вдоль следа, давая игроку возможность набирать очки по пути.

Что сработало
С точки зрения пользовательской обратной связи отображение связи указателя с положением головы помогло понять, как отслеживается голова. При каждой загрузке игры на экран выводились инструкции и графические подсказки, показывающие, какие используются режимы ввода. Это помогало игрокам осваиваться с управлением. Как только пользователи понимали, что именно показывал указатель (положение головы), они сразу начинали интуитивно понимать и поле зрение камеры: указатель на краю экрана означал, что голова игрока находится на границе поля зрения камеры.


Фрагмент инструкций в игре Space Between, показывающий ввод, используемый из Intel RealSense SDK

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

Выводы

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

Распознавание речи в Intel RealSense SDK


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

Ограничения распознавания речи


Точность работы модуля не соответствует ожиданиям пользователей.
Многие пользователи уже имеют опыт работы с программами распознавания речи, такими как Apple Siri*, Google Now* или Кортана корпорации Майкрософт*. Во всех этих решениях программное обеспечение является облачным, работает на основе огромных объемов данных и сложных алгоритмов. Все эти возможности недоступны в локальном решении, таком как в Intel RealSense SDK. Ожидания пользователей основаны на более мощных облачных решениях, поэтому потребуется бороться с ограничениями, предоставляя пользователям обратную связь и инструкции.

Иногда возникают значительные задержки между произнесением команд и их распознаванием.
В зависимости от приложения иногда возникают значительные задержки между моментом, когда пользователь произносит команду, и моментом, когда Intel RealSense SDK распознает ее и возвращает в виде текста.

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

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

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

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

Распознавание речи в качестве контроллера ввода



Вот здесь я командую своими скелетами в игре The Risen

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

Наши задачи

Зачастую голосовые команды просто не распознаются системой.
Этот факт сам по себе является достаточным основанием, чтобы задуматься о целесообразности использования голосового управления как такового. Проектирование пользовательской обратной связи, способной преодолеть технические ограничения Intel RealSense SDK, также весьма непростая задача.

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

Играя впервые, легко забыть, какие были команды.
Мы постарались представить голосовые команды значками, но если вы видите только слова, то их легко забыть.

Распознавание речи в игре The Risen

В игре The Risen можно отдавать скелетам простые команды: вперед, назад, нападать, защищаться. Каждая из этих команд переводит скелетов в определенное состояние, что позволяет контролировать их действия на высоком уровне. Состояние скелетов отображается с помощью цветных значков в графическом пользовательском интерфейсе и влияет на самих скелетов.

Мы также придумали интерфейс для предоставления пользователям обратной связи о начале и об окончании распознавания речи, а также ползунок, управляющий громкостью микрофона. В качестве обратной связи при обнаружении команд мы воспроизводим анимацию движущегося рта у графического изображения скелета при получении оповещения LABEL_SPEECH_BEGIN и останавливаем анимацию при получении оповещения LABEL_SPEECH_END. Ползунок для регулировки громкости микрофона предназначен для повышения качества распознавания. Кроме того, цвет ползунка менялся соответствующим образом, указывая, что голос слишком громкий либо слишком тихий.


Ползунок микрофона в игре The Risen

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

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

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

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

Выводы

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


Новый друг человека


Компьютеры постепенно проникают во все области нашей жизни. По мере усовершенствования технологий мы находим новые способы использовать компьютеры и поручаем им все более ответственные задачи. Быстро приближается время, когда маленькие компьютеры будут встроены в нас самих. Наши взаимоотношения с компьютерами становятся все более естественными.
Первым этапом на этом пути является технология Intel RealSense и другие естественные пользовательские интерфейсы. Эти технологии дают нам возможность действительно по-новому подойти к взаимодействию с миром. Впрочем, здесь все еще только начинается, и мы, будучи разработчиками и создателями, отвечаем за то, чтобы технологии развивались в нужном направлении. Однажды компьютеры станут подобны нашим лучшим друзьям: они смогут предвидеть наши намерения еще до того, как мы начнем их выражать. Сейчас компьютеры ближе к уровню домашних животных: чтобы сообщить нам, что им нужно погулять, им нужна наша помощь.
Tags:
Hubs:
Total votes 7: ↑7 and ↓0+7
Comments1

Articles

Information

Website
www.intel.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
США
Representative
Анастасия Казантаева