Обзор методов и технологий отслеживания положения для виртуальной реальности

61d660b03bab0138ae5dba8e8f84c5c6.png

Отслеживание положения (positional tracking) представляет собой сочетание аппаратных средств и программного обеспечения, которое позволяет определить абсолютное положение объекта в пространстве. Данная технология является критически важной для достижения эффекта погружения в виртуальную реальность. В сочетании с отслеживанием ориентации становится возможным измерять и передавать в ВР все 6 степеней свободы (6-DoF) реального мира. В ходе работы с технологиями виртуальной реальности в нашей компании мы получили определенный опыт в данном вопросе и хотели бы им поделиться, рассказав про существующие способы отслеживания положения для виртуальной реальности, а также о плюсах и минусах того или иного решения.

Небольшая классификация


Совокупность методов и подходов к решению данной задачи можно поделить на несколько групп:

  • Акустические
  • Радиочастотные
  • Магнитные
  • Оптические
  • Инерциальные
  • Гибридные


Человеческое восприятие предъявляет высокие требования к точности (~1 мм) и задержкам (

Акустические методы


Акустические приборы слежения используют ультразвуковые (высокочастотные) звуковые волны для измерения положения и ориентации целевого объекта. Для определения положения объекта измеряется время пролёта (time-of-arrival) звуковой волны от передатчика к приёмникам, либо разность фаз синусоидальной звуковой волны при приёмо-передаче. Компания Intersense разрабатывает устройства отслеживания позиции на основе ультразвука.
Акустические трекеры, как правило, имеют низкую скорость обновления, вызванную низкой скоростью звука в воздухе. Другая проблема состоит в том, что скорость звука в воздухе зависит от таких факторов внешней среды, как температура, барометрическое давление и влажность.

Радиочастотные методы


Методов основанных на радиочастотах множество. Во многом по принципам определения положения они схожи с акустическими методами отслеживания (отличие лишь в природе волны). Наиболее перспективными на данный момент являются UWB (Ultra-Wide Band) методы, но даже в лучших решениях на основе UWB точность достигает только порядка сантиметров (DW1000 от DecaWave, Dart от Zebra Technologies, Series 7000 от Ubisense и другие). Возможно, в будущем стартапам вроде Pozyx или IndoTraq удастся достичь суб-миллиметровой точности. Однако пока UWB решения для отслеживания позиции не применимы для виртуальной реальности.
Другие методы позиционирования на радиочастотах более подробно описаны в данной статье.

Магнитные методы


Магнитный трекинг основан на измерении интенсивности магнитного поля в различных направлениях. Как правило, в таких системах есть базовая станция, которая генерирует переменное или постоянное магнитное поле. Так как сила магнитного поля уменьшается с увеличением расстояния между точкой измерения и базовой станцией, можно определить местоположение контроллера. Если точка измерения вращается, распределение магнитного поля изменяется по различным осям, что позволяет определить ориентацию. Наиболее известными продуктами на основе магнитного трекинга являются контроллер Razer Hydra и система STEM от компании Sixense.
Точность данного метода может быть достаточна высока в контролируемых условиях (в спецификациях Hydra говорится о 1 мм позиционной точности и 1 градусе точности ориентации), однако магнитное отслеживание подвержено помехам от токопроводящих материалов вблизи излучателя или датчика, от магнитных полей, создаваемых другими электронными устройствами и ферромагнитными материалами в пространстве отслеживания.

Оптические методы


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

5a5a46129cb63064e4d98818f5bfabfa.png

  • Outside-in подход подразумевает присутствие неподвижного внешнего наблюдателя (камера), определяющего положение движущегося объекта по характерным точкам. Используется в Oculus Rift (Constrellation), PSVR, OSVR и множестве Motion Capture систем.
  • Inside-out подход предполагает наличие на движущемся объекте оптического сенсора, благодаря которому возможно отслеживать движение относительно неподвижных точек в окружающем пространстве. Используется в Microsoft Hololens, Project Tango (SLAM), SteamVR Lighthouse (гибридный вариант, т.к. есть базовые станции).


Также в зависимости от наличия специальных оптических маркеров выделяют отдельно:

  • Безмаркерный трекинг как правило строится на сложных алгоритмах с использованием двух и более камер, либо стерео камер с сенсорами глубины.
  • Трекинг с использованием маркеров предполагает заранее заданную модель объекта, которую можно отслеживать даже с одной камерой. Маркерами обычно служат источники инфракрасного излучения (как активные, так и пассивные), а также видимые маркеры наподобие QR-кодов. Такой вид трекинга возможен только в пределах прямой видимости маркера.


Задача Perspective-n-Point (PnP)
При оптическом отслеживании для определения положения объекта в пространстве решается так называемая задача PnP (Perspective-n-Point), когда по перспективной проекции объекта на плоскость сенсора камеры необходимо определить положение объекта в 3D-пространстве.

69ee34a001e42b494c7c95e8c8b824da.gif

Для заданной 3D-модели объекта и 2D-проекции объекта на плоскость камеры решается система уравнений. В результате чего получается множество возможных решений. Количество решений зависит от числа точек в 3D-модели объекта. Однозначное решение для определения 6-DoF положения объекта можно получить как минимум при 4 точках. Для треугольника получается от 2 до 4 возможных решений, то есть положение не может быть определено однозначно:

98c63e2e0ada80b066e213b8a011e955.gif

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


SLAM — Simultaneous Localization and Mapping
Метод одновременной локализации и построения карты (SLAM) — это наиболее популярный способ позиционирования в робототехнике (и не только), который применяется для отслеживания положения в пространстве.

ef3851c958ae729b437738e0b7a7b9c6.png

Алгоритм состоит из двух частей: первая — составление карты неизвестного окружающего пространства на основе измерений (данные с одометра или стерео-камеры), вторая — определение своего местоположения (локализация) в пространстве на основе сравнения текущих измерений с имеющейся картой пространства. Данный цикл непрерывно перевычисляется, при этом результаты одного процесса участвуют в вычислениях другого процесса. Наиболее популярные методы решения задачи включают в себя фильтр частиц и расширенный фильтр Калмана. На самом деле SLAM — это довольно обширная тема, а не только один определенный алгоритм, и разбор всех существующих решений на данную тему тянет на отдельную статью.
SLAM удобен для мобильных решений виртуальной и дополненной реальности. Однако недостатком данного подхода является большая вычислительная сложность, что в купе с требовательными VR/AR приложениями будет сильно загружать производительные ресурсы аппарата.

Project Tango от Google и Microsoft Hololens являются наиболее известными проектами на основе SLAM для мобильных устройств. Также ожидается поддержка трекинга на основе SLAM в недавно анонсированных продуктах от Intel (Project Alloy) и Qualcomm (VR820).
Среди open-source решений можно выделить ORB-SLAM, LSD-SLAM, PTAM-GPL.

Инерциальный трекинг


Современные инерциальные измерительные системы (IMU) на основе MEMS-технологии позволяют отслеживать ориентацию (roll, pitch, yaw) в пространстве с большой точностью и минимальными задержками.

bb57c347b0b938cdf1b2a39cf3fff905.gif

Благодаря алгоритмам «sensor fusion» на основе комплементарного фильтра или фильтра Калмана данные с гироскопа и акселерометра успешно корректируют друг друга и обеспечивают точность как для кратковременных измерений, так и для длительного периода.

Однако определение координат (перемещения) за счёт двойного интегрирования линейного ускорения (dead reckoning), вычисленного из сырых данных с акселерометра, не удовлетворяет требованиям по точности на длительных периодах времени. Акселерометр сам по себе даёт сильно зашумленные данные, и при интегрировании ошибка увеличивается со временем квадратично.
Решить данную проблему помогает комбинирование инерциального подхода к трекингу с другими методами, которые периодически корректируют, так называемый, дрифт акселерометра.

Гибридные методы


Так как ни один из методов не является безупречным, и все они имеют свои слабые места, наиболее разумно комбинировать различные методы отслеживания. Так инерциальный трекинг (IMU) может обеспечить высокую частоту обновления данных (до 1000 Гц), в то время как оптические методы могут дать стабильную точность в длительные периоды времени (корректирование дрифта).

Гибридные методы отслеживания основаны на алгоритмах «Sensor Fusion», наиболее популярным из которых является расширенный фильтр Калмана (EKF — Extended Kalman Filter).

Как работает SteamVR Lighthouse?
Система трекинга HTC Vive состоит из двух базовых станций, оптических сенсоров и инерциальных измерительных блоков (IMU) в контроллерах и шлеме. Базовые станции состоят из двух вращающихся лазеров и массива инфракрасных светодиодов. Один из лазеров вращается вертикально, второй — горизонтально. Таким образом лазеры по очереди «сканируют» окружающее пространство. Базовые станции работают синхронно: в определенный момент времени только один из четырёх лазеров «сканирует» пространство трекинга. Для синхронизации работы всей системы между каждыми включением лазеров всё окружающее пространство освещается инфракрасным световым импульсом.

Сенсоры на контроллерах и шлеме фиксируют все оптические импульсы с базовых станций и измеряют время между ними. Так как частота вращения лазеров заранее известна (60 Гц), по времени между импульсами можно вычислить углы поворота каждого из лучей. Что даёт нам 2D-координаты оптического сенсора, зная взаимное расположение сенсоров на контроллере можно легко восстановить 3D-положение контроллера в пространстве (задача PnP). При одновременной видимости двух базовых станций 3D-положение контроллера может быть вычислено из пересечения двух лучей, что даёт более точные результаты и при этом требует меньше вычислений. Более наглядно процесс трекинга продемонстрирован ниже.


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

Какой из методов отслеживания позиции в пространстве наиболее перспективен для виртуальной/дополненной реальности по вашему мнению?

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

P.S. Почему нет хаба виртуальная реальность?

© Geektimes