Позиционирование - это один из интереснейших кейсов применения радиосвязи. Да что там кейс - это целый мир. Там своя логика, свои законы (без противоречий с физикой) и свои принципы построения. Но, главное. Там свои задачи.

В этой статье я сделаю обзор трех самых популярных технологий для indoor/outdoor позиционирования и расскажу о самом подходе к вычислению положения объекта.

Сразу договоримся - мы рассматриваем только локальные методы, такие, где все железо и софт целиком разворачивается нашими руками. Потому из этого обзора исключены GPS, ГЛОНАСС, трекинг по сотовым сетям и прочие вещи, требующие сторонней инфраструктуры. 

Ну что ж, раз-два-три-четыре-пять, мы идем искать… 

Постановка задачи

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

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

1. Наличие. В этой ситуации нам важно понимать есть или нет объект на периметре. Для примера: 

  • На складе ли конкретная коробка с товаром.

  • В серверой ли нужный набор дорогих инструментов. 

  • Прошел ли через входную рамку контейнер. 

  • Не пропала ли у нас из кабинета мастера наковальня. Несчастная наковальня по совместительству поможет нам понять разницу между задачами. 

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

2. Зональное позиционирование. В этом случае периметр разделяется на зоны и мы должны отслеживать наличие/перемещение объектов между этими зонами. Примеры: 

  • Найти контейнер на одном из нескольких складов.

  • Понять в какое помещение укатили подставку с телевизором из переговорки.

  • Самое важное! Найти наковальню мастера в кабинете завхоза.

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

3. Позиционирование с координатами. Здесь нас просят не просто обозначить зону присутствия, а отобразить точные координаты объекта. Точность - вопрос для отдельного обсуждения. Она может быть плюс-минус десять метров, а может быть до десяти сантиметров. Тут зависит от задачи и бюджета. Примеры: 

  • Позиционирование человека в шахте. 

  • Расстановка объектов по цеху. 

  • Точные координаты спрятанной наковальни в кабинете завхоза. Чтоб не отвертелся!

Дешево такое сделать сложно, но за разумные деньги еще возможно.

Скрытый текст

Почему-то при определении координат всем сразу на ум приходят x и y, но часто забывают про z. А ведь в реальных задачах объект может перемещаться не только взад-вперед/вправо-влево, но еще и вверх-вниз. Для примера, на опасных производствах важно на каком из уровней находится наш объект наблюдения.

4. Real-time tracking. Это уже высший пилотаж позиционирования. На экране мы видим перемещение объектов и историю этих перемещений. Примеры: 

  • Передвижение автоматических тележек (AGV) по складу. 

  • Точное позиционирование и перемещение сотрудников при опасных работах.

  • Весь путь наковальни от кабинета мастера до кабинета завхоза.

Такие системы еще называют RTLS (Real-Time Location System) - система определения местоположения в реальном времени.

Дешево тут не будет. Но кейсы применения все окупят.

Клиент-сервер

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

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

Реализуется два базовых подхода. Грубо их можно обозначить как:

  • Сеть из приемников-анкеров определяет, где метка.

  • Метка сама определяет, где она по сигналам от анкеров, и только сообщает результат.

Рассмотрим подходы подробнее.

Сеть определяет где метка. Метка периодически излучает пакет (blink/advertising/ranging-packet). Его одновременно принимают несколько анкеров с известными координатами.

Дальше анкеры (или вычислительный движок после них) передают данные на сервер: время прихода, RSSI, иногда фазовые/угловые параметры.

Позиция вычисляется в инфраструктуре (сервер/локальный движок), а не в метке.

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

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

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

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

Метка сама определяет, где она по сигналам от анкеров, и только сообщает результат. Анкеры (маяки) периодически передают сигналы. Метка их слушает, оценивает параметры (RSSI/ToF/AoA - зависит от технологии), сама вычисляет свои координаты и уже готовую позицию отправляет на сервер через обратный канал (BLE/Wi-Fi/LTE/LoRaWAN и т.д.). То есть инфраструктура в этом случае дает "навигационные ориентиры", а вычислитель находится в метке (или дальше на сервере).

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

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

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

Заряд метки обеспечивать регламентами: начало смены - взял из зарядника, конец смены - поставил обратно. Связь до метки - дальнобойный, но экономичный канал вроде LoRaWAN. 

И вот подход “умная метка” обретает экономический смысл.

А теперь добавим, что в некоторых случаях метка способна самостоятельно принимать решения и не просто слать координаты, а еще добавлять сигнал тревоги. “Я в опасной зоне”. “Резко изменилась высота на минус сорок метров, возможно падение”. И так далее.

Кроме того, особняком стоит кейс приватности. Бывают ситуации, когда хозяин метки должен видеть свое местоположение, а вот сеть его видеть не должна. Это реализуемо только в сценарии с “тупыми” анкерами. 

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

Я вычисляю за тобой!

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

RSSI (Received Signal Strength Indicator) - индикация уровня принятого сигнала. Простейшая идея: измеряем уровень сигнала от метки/маяка, дальше через модель затухания прикидываем расстояние. Если мы знаем расстояние до нескольких точек, раскиданных в пространстве вокруг нас, мы сможем вычислить свои координаты. Минимально потребуется три точки для определения координат на плоскости и четыре в трехмерном пространстве.

В случае, когда нам требуется только определить наличие/отсутствие объекта в рамках периметра, все еще проще. Есть сигнал - есть объект. Нет сигнала - нет объекта. 

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

Плюсы метода RSSI очевидны - это просто. Невысокая стоимость железа, легко стартовать, интуитивно понятно и результаты измерений можно оценить на глаз.

Но есть и минусы. Главное - RSSI страдает там, где уровень подвержен искажениям. Много металла (переотражения), влажно, препятствия, среда меняется динамически. В общем, для зонального позиционирования сгодится, а вот для сантиметровой точности в чистом виде уже нет.

AoA/AoD (Angle of Arrival/Angle of Departure) - угол прихода/угол ухода. Если упростить, здесь мы определяем не насколько далеко, а в каком направлении находится объект.

AoA - угол прихода сигнала на приемник с антенной решеткой.

AoD - угол ухода сигнала от передатчика с антенной решеткой.

Логика такая: одна опорная точка дает луч-направление, две и больше - пересечение лучей, то есть позицию. На практике чаще комбинируют углы с дополнительными измерениями (например, фильтрацией траектории), потому что реальная среда портит идеальную геометрию.

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

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

AoA/AoD подходит когда нужна более точная и быстрая локализация по направлению. Метод рабочий, если не экономить на инфраструктуре и калибровке.

ToF/TWR (Time of Flight/Two-Way Ranging) - время пролета сигнала от передатчика до приемника/двустороннее измерение расстояния. Здесь идея уже не про уровень и не про угол, а про время.

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

TWR - практический способ это измерить: устройства обмениваются пакетами "туда-обратно" и по суммарным задержкам считают дистанцию.

Если опорных точек несколько, дальше включается трилатерация: получили расстояния до анкеров/маяков, нашли точку пересечения окружностей (или сфер в 3D), получили координаты.

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

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

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

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

ToF/TWR нужен в случаях, когда ошибка стоит дороже серьезной сложной системы. Метод требует дисциплины в архитектуре и эксплуатации. Если сделать на коленке, он превращается в дорогой RSSI - только с более красивыми графиками.

TDoA (Time Difference of Arrival) - разница времени прихода сигнала на несколько опорных точек. Если упростить: метка просто передает пакет, а несколько анкеров принимают его и фиксируют время прихода. Дальше считаем разницу времен прихода между парами анкеров - получаем разницу расстояний до метки.

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

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

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

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

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

Принцип TDoA
Принцип TDoA

Движение - жизнь

Вопрос на засыпку. Какая картинка относительно анкеров и меток сложилась у вас в голове? Анкер - это нечто неподвижное, относительно чего метка определяет свою позицию? Метка, напротив, двигается и отследить ее движение и есть цель нашей системы?

На самом деле это не догма. Бывают обратные ситуации, когда метка может годами лежать на одном месте, а анкер ездить вокруг нее.

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

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

Важно. Это относится к кейсу наличия/отсутствия и технологии RFID. В RTLS-системах вместе с подвижным анкером поедет все позиционирование.

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

Первые выводы

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

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

Впрочем, скоро вы сами увидите как это работает в реальных системах.

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


Размещайте облачную инфраструктуру и масштабируйте сервисы с надежным облачным провайдером Beget.
Эксклюзивно для читателей Хабра мы даем бонус 10% при первом пополнении.

Воспользоваться