Indoor «GPS» с точностью +-2см

в 7:58, , рубрики: навигация, Программирование робототехники, разработка, роботехника, роботы

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

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

Ролик ниже снят прямо на конференции Skolkovo Robotiсs 2015. Я просто установил стационарные маячки на колонны на первом этаже Гиперкуба (зеленые точки на карте), разбудил маячки, взял в руки мобильный маячок (голубая точка) и походил по этажу:

А так можно ходить с двумя маячками в руках:

Так выглядят сами маячки (и мобильные и стационарные):

image

Каждый день приносит какие-то улучшения в прошивке и софте. На данный момент максимальные расстояния между маяками — до 50 метров.

Спешу заметить, что точность — понятие очень тонкое и многозначное. Но с практической точки зрения имеет смысл отталкиваться от задач, чем мы и руководствовались. Например, роботу важно знать, где он находится; где находятся препятствия, которые он уже нашел; где путь, по которому он может пройти. Таким образом, когда скорость звука в воздухе меняется (температура, давление, влажность), изменяется измеренное расстояние и до маяков и до объектов. Карта как бы дышит. Но относительные расстояния никак не изменяются. Это позволяет роботу, как и раньше, находить препятствия, путь, двери и стены.

Почему же ультразвук?

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

  • Лидар:
    — Точно. Красиво. Дорого. Если не дорого, то не очень удобно. Нужно сканировать. А скан — это механика. Это куда сложнее и сразу менее надежно и еще дороже. Но в целом это очень хороший датчик, если он подходит для задач и если уметь им управляться. И не нужны маяки. Можно сразу отправляться в путь в неизвестность. Как вариант — простейшие измерители расстояния на ИК сенсорах. Или более сложные — с постоянными лазерами или сканирующими лазерами и камерами. Тоже варианты. Но свои ограничения, подобные ограничениям лидаров.
  • Ultra-wide band (UWB):
    — Очень круто. Скорее всего, рано или поздно будет хорошо работать. Подтянется полупроводниковая технология. Цены упадут. Как-то решится вопрос со стабильностью, фазовыми шумами, ограничением по спектральной плотности излучаемого сигнала в 41.3 dBm/MHz. Но пока как-то не очень получается заказать готовые компоненты. Они вот-вот где-то совсем близко, но как-то все еще ускользают. Но разработок много и они многообещающие. Ждем и внимаем.
  • Bluetooth and WiFi beacons
    — Потенциально очень хорошие варианты для телефонов и для точности до нескольких метров, потому что не требуют ничего дополнительно, кроме того, что уже есть в телефоне. Вкупе с инерциальными системами внутри телефонов и другими дополнительными данными, скорее всего, достигнут точности меньше метра на практике. Каждый год в Барселоне на MWC показывают разработки — и каждый год очень интересно. Для того, чтобы вести человека в торговом центре к полке с товаром — очень недурно. Для робота, пожалуй, маловато. Ему нужны сантиметры, чтобы не сшибать стены и створки дверей. Плюс чаще всего нужна предварительная калибровка помещения, размещения. И, конечно, радио не требует прямой видимости — это большой плюс. Ну а для роботов, как минимум, нужен телефон или его начинка… Но по факту целый телефон может быть дешевле.
  • Одометрия
    — Очень хорошая точность на малых расстояниях, пока нет препятствий, пока хорошее сцепление колес с полом. Один из основных источников информации для роботов. Но требует, время от времени, проверки текущего положения по дополнительному источнику данных, например, по Indoor «GPS». Без корректировки ошибка накапливается очень быстро и делает вычисление положения невозможным. Кроме того, одометрия хороша для вычисления положения робота относительно начальной точки робота. Но она ничего не говорит о положении робота в пространстве относительно прочих объектов — стен, коридоров, дверей.
  • Инерциальные системы
    — Так же, как и с одометрией, можно получать очень хорошие результаты и очень быстро — с частотой десятки Гц. Но ошибка накапливается и требуется корректировка по каким-то другим источникам информации. Также, как и одометрия, инерциальные системы хороши для измерения относительного изменения положения. Начальное положение должно быть задано каким-то другим способом.
  • Оптические системы
    — Сладкая мечта. Пока, не видел качественно работающих. Потенциал огромный. Но сложно и не надежно. А хочется просто и надежно.
  • Специальные оптические системы
    — Есть красивые специальные варианты, когда робот определяет свое положение с помощью вертикально смотрящей камеры, идентифицируя яркие объекты, например, лампы, и позиционируясь по ним, как по звездам. Выглядит красиво. Не требует маяков. В некоторых случаях — отлично будет работать.
  • GPS
    — Старый добрый GPS, к огромному сожалению, не работает, когда не видны спутники. Да и точность — метры. В общем, для роботов и помещений подходит не очень.
  • Магнитометрия
    — Что-то очень изысканное. Для особых и специальных случаев. И, возможно, скорее, в качестве дополнительного источника данных. Кроме того, требует предварительной калибровки помещения и слишком подвержена влиянию собственных магнитов на роботе, например, от моторов или спикеров.
  • Прочее
    — Есть много прочих изысканных вариантов. Например, можно оставлять невидимый след — печатать точки на полу, распылять химические вещества — оставлять метки. Это красиво. В некоторых случаях — удобно, надежно, и точно.
    — Движение по линии — ну, как бы, не совсем то, что хотелось бы. Но в специальных случаях — очень даже просто и надежно.
    — Усложненные варианты с оптическими метками, заранее установленных на стенах, потолках, объектах вокруг. Очень даже неплохой и относительно дешевый вариант для позиционирования именно в помещениях. Требует предварительной «разметки» территории. Но, если делать ее просто и автоматически или, даже, если позволить размечать территорию самому роботу, во время первых проездов территории, может оказаться очень дешевым и точным вариантом.

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

Результаты и следующие шаги

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

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

— Кроме того, по результатам Сколково, выяснилось, что «такое же, только на большее расстояние» нужно сразу нескольким другим типам роботов: чтобы парковаться на парковке; чтобы красиво убирать снег и не ломать чужие машины и стены. Так что мы поигрались немного и расширили радиус работы в ультразвуке до 50 метров и делаем вариант подходящего климатического исполнения.

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

Автор: Marvelmind

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js