Добрый день, коллеги.

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

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

Но есть решение — использование высокоточной системы навигации внутри помещений.
Чуть больше деталей по самой системе: Indoor «GPS» с точностью +-2см.

Демо:

Демо: Отслеживание положения шлема виртуальной реальности внутри помещения с частотой до 16Гц и точностью +-2см:



Сам шлем с установленным мобильным маяком вблизи:




Демо: Хождение в шлеме виртуальной реальности:



Демо: Отслеживание положения коптера внутри помещения:
— На коптер установлен мобильный маяк весом 25 грамм
— 4 стационарных маяка висят на стенах



Еще одно демо коптера. Летать мы еще не умеем толком, но положение отслеживаем точно :-)



Демо малого робота по доставки грузов на сборочных производствах:
— Робот движется между «тремя рабочими местами» полностью автономно и перевозит груз весом до 2 кг. Демо показывает, как робот может быть использован на сборочном производстве, складах, фабриках
— Голубые точки — координаты робота, измеренные в системе навигации. Робот их получает от системы навигации и использует для корректировки своего движения
— Желтые точки — координаты робота в его собственной инерциальной системе координат
— Желтые тонкие линии на карте — заданный по трем точкам путь для робота. Точек может быть сколь угодно много и путь может быть сколь угодно сложный. И робот его будет проходить с точность в несколько сантиметров, выполняя поставленные перед ним задачи



Отслеживание множества объектов одновременно:
— Так как система использует time division multiple access, то скорость обновления координат для каждого отслеживаемого объекта падает пропорционально количеству объектов. Однако, во многих случаех, особенно, для больших объектов с большой инерцией и медленных объектов, этой скорости оказывается достаточно:

Демо: Хождение по-восьмерке с одним мобильным маяком



Демо: Хождение с двумя мобильными маяками:




Демо: Хождение с четырьмя мобильными маяками:



Заключение

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

Комментарии (15)


  1. schroeder
    23.01.2016 22:21
    +17

    Пардон, но это не тянет на статью. Т.е. вообще не тянет. Как работает система? Какой софт, какое железо? Где можно посмотреть, потрогать руками? К чему эта «статья» вообще?


    1. Marvelmind
      23.01.2016 22:30
      -1

      Чуть больше о самой системе: habrahabr.ru/post/254361
      Еще больше на: www.marvelmind.com

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

      Спасибо.


    1. Marvelmind
      24.01.2016 18:44
      +2

      Сегодня еще немного поснимали, чтобы приблизить условия к боевым. И робота поснимали в симуляционном «офисе» и коптера на улице с расстоянияем между маяками >22m (выложу чуть позже).

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

      В общем, вот свежайшее демо, где робот катается под столами и стульями:


    1. Marvelmind
      24.01.2016 19:10
      +1

      А вот видео коптера, летающего на московском морозе сегодня (-11С):
      — Расстояние между крайними стационарными маяками 22м (может быть до 50м)


  1. Quiensabe
    23.01.2016 22:31
    +8

    Это все хорошо, но все же замечу: если вы везде пишите, что точность +-2 см — то нужно эту точность и обеспечивать.

    У вас на 5-м видео координаты прыгнули сантиметров на 10 (секунда 6). А в 7-м — вообще на 30-35 как минимум… А если бы у робота в такой неудачной точке была, например, зарядная станция? Или посадочная платформа? Он бы вообще не смог на нее сесть?

    Причем, в 7-м ролике хорошо видно, что это не разовый сбой, а координата довольно плавно «уходила в сторону», а потом видимо устройство вышло и зоны отражения и резко восстановилось верное значение. Причем, все это в пустом помещении, примерно на одной высоте с маяками (сильно выше мебели), как минимум на 4 маяка и вероятно это еще не худшие записи из всех.

    Иначе говоря — задача у вас очень нужная, решение, при определенных ограничениях — хорошее.
    Но для своего уровня, цена у него (ИМХО) завышена. $300 за базовый набор, что на сегодня уже 24 т.р…


  1. Marvelmind
    23.01.2016 22:50
    -3

    Прыгает. Так бывает, несмотря на фильтрацию.

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



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

    На счет 7-го ролика посмотрю…

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

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

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


    1. Quiensabe
      23.01.2016 23:49
      +14

      Увы, не могу согласиться с вашей позицией. Написав +-2 см — вы уже приняли на себя обязательства, об определенном распределении результатов измерений. Если на 2-3 сотнях замеров в практически идеальных условиях мы уже наблюдаем пики по 30 см, то они явно не окажутся «дальше» 3?, и значит ваше стандартное отклонение уже превышает +-10 см, при нормальном распределении…
      Добавьте сюда явно идеальные условия измерений (которых в реале конечно не будет), и мы получим совсем другой класс точности устройства.

      Фразы про то «что считать центром системы?» и подобные — вообще не имеют отношения к проблеме. Подобные вопросы решаются элементарно.

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


      1. Marvelmind
        24.01.2016 00:24
        -1

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

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

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


  1. Quiensabe
    23.01.2016 23:48
    +1

    ошибся веткой


  1. MichaelBorisov
    24.01.2016 13:46
    +3

    По-моему подобные задачи, особенно для малых роботов, лучше решаются оптическими методами (Optical Flow Processing). Заодно отпадает необходимость в использовании радио.


    1. Marvelmind
      24.01.2016 15:39
      +2

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

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

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

      Да и все сильно зависит от конкретной обстановки: если есть за что «глазу зацепиться» — будет работать хорошо. А будет белый потолок, белые стены и пол серый бетонный без особых зацепок, то все станет очень сложно для визуальных систем.

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

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


  1. ProLimit
    24.01.2016 19:13
    +1

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

    Несколько мыслей: можно было б сразу «из коробки» совместить с инерциалнкой, чтобы отфильтровать выбросы. Можно задать модель динамики системы, как в некоторых GPS, по ней определять достоверность новых данных.

    Проект очень полезный, удачи в развитии! Стоимость вполне адекватная (с учетом отсутсвия каких-то вменяемых альтернатив).


    1. Marvelmind
      24.01.2016 19:27

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

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

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



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

      Спасибо за пожелания. Надеемся, что наша навигация пригодится тем, кто в ней нуждается.


  1. getId
    25.01.2016 07:01
    +1

    Вы говорите об использовании в VR, но разве это комфортно с учётом такой низкой частоты данных? Шлемы VR требуют от рендеринга 60 FPS минимум, потому что ниже — уже дискомфорт. У вас же обновления положения в разы реже.


  1. Marvelmind
    25.01.2016 10:34

    Высокую скорость непосредственной реакции должны обеспечивать гироскопы и акселерометры (IMU unit) в самой VR системе. Они быстры — десятки и сотни Герц с минимальной задержкой. Но они плывут во времени. Буквально, через доли секунды или малые секунды интеграционная ошибка по положению вырастает в большие сантиметры или десятки сантиметров. А тут мы помогаем — постоянно корректируем и обновляем данные с инерционного модуля данными с нашей системы навигации.

    Объединение данных с обоих систем — сложная задача. Но она позволяет брать лучшее из обоих систем:
    — с IMU — скорость обновления и малое время реакции. Но у них есть серьезный дрифт, который нельзя убрать внутренними средствами
    — с Marvelmind Indoor Navigation System — абсолютные координаты, которые не плывут во времени и позволяют корректировать IMU, но скорость обновления 8-16 Гц и задержки реакции в десятки миллисекунд, вместо 50-400Гц скорости обновления у IMU
    Взяв лучшее, можно получить и скорость обновления в десятки Гц и устранение дрифта координат во времени.