Для беспилотных устройств нужно геопозиционирование высочайшей точности до 1 сантиметра

Все статьи

GPS-координаты с точностью до 1 см

16 марта, 2023 8 минут
  • IoT
  • Microservices

Как приручить беспилотный транспорт

О клиенте

Royal Obidos Spa & Golf Resort, расположенный на побережье Португалии, включает в себя 5-звездочный отель, который обслуживается спа-салоном и конференц-залами, с которыми связан набор апартаментов и 18-луночное поле для гольфа. Шесть лунок поля выходят на лагуну Обидуш, а остальные 12 лунок выходят на Атлантический океан. Компания основана в 2011 и уже более десяти лет предоставляет сервис высочайшего класса для клиентов в одной из самых великолепных локаций Европы.

О проекте

О проекте Moses мы рассказали в другой статье.

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

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

Цели
  • Обеспечить точность маневрирования до миллиметров. Поля должны быть скошены равномерно, а любые столкновения – исключены.
  • Непрерывная и отказоустойчивая передача данных. Потерять хотя бы небольшую порцию передаваемой информации — недопустимо.
  • Плавность движения. Оператор должен видеть плавное движение машины на карте. Для этого координаты должны обновляться до 20 раз в секунду.
Решение

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


Об RTK

RTK (Real-Time Kinematic positioning) – это приёмы позиционирования в реальном времени с более высокой точностью. Для использования этих приёмов необходимы, во-первых, базовая GPS-станция, и, во-вторых, постоянная, непрерывная связь со спутниками. В случае, если связь оборвется или поступление данных уменьшится в объёме, точность значительно упадет.

Работа RTK, говоря просто, заключается в том, что GPS-станция получает в реальном времени данные со спутника о своем текущем положении, сравнивает это с уже хранящимися в памяти станции своими координатами, измеренными при установке, и отдаёт разницу между ними, так называемые RTK-корректировки.



Откуда получить RTK-корректировки

Источником RTK-корректировок для нас послужила базовая GPS-станция в собственном владении, которая установлена непосредственно рядом с полем. Её столь близкая расположенность к нам закрыла сразу 2 вопроса:

  1. Наибольшая точность корректировок для гольф-клуба
  2. Собственная станция — легкость в обслуживании


Так что мы сделали?

Чтобы позиционирование ровера стало точнее, GPS-плата на машине должна получить RTK-корректировки и просчитать разницу между координатами.

Для этого нашей командой был разработан микросервис, который получает данные с GPS-платы, и полученные корректировки посылает на уже другой узел, который реализует всю остальную бизнес-логику и переводит её в команды для парка роверов.

С этим узлом мы обеспечили нужную точность нашим роверам.

Вызовы

Одного источника мало

В ходе испытаний мы быстро пришли к тому, что одна GPS-плата может как просто быть отключена в непредвиденных ситуациях, так и совсем выйти из строя, как и любая техника, а точность всё ещё будет нужна. С этой мыслью мы изучили возможные альтернативы и пришли к RENEP – национальной сети GPS-станций, которая распростерта по всей стране, и которая может предоставить всем энтузиастам доступ к спутниковым данным в режиме реального времени.
Нами был разработан дополнительные микросервисы для получения данных от национальной сети GPS-станций, с определенной станции, находящейся поблизости.
Такое решение создало нам подушку безопасности: больше не приходилось волноваться об оффлайне нашей собственной GPS-платы, ведь RTK-корректировки поступали уже из 2-х источников.


Одновременно двух источников — уже много

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

  1. Мониторинг здоровья двух источников. Основным источником для нас теперь является наша собственная GPS-плата в силу её близкой расположенности, RENEP же считаем как запасной вариант. В случае, если будет замечено “нездоровое поведение” основного источника (перестанет передавать данные), наш микросервис переключит поток данных на поток с национальной сети.
  2. Ограничение мощности выходного потока. 2 потока с 2-х источников объединяем в 1, а также, чтобы не захламлять общий эфир, мы искусственно управляем потоком, ограничивая его мощность настолько, насколько это потребуется.

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

Цифры
  • 1 см Текущая точность. Ранее это значение могло доходить до целого метра.
  • 20 раз/сек Это позволяет обеспечить плавность движения ровера и оперативные корректировки курса
  • > 20 млн Столько записей с координатами в сутки получает, обрабатывает и сохраняет система.

Результат

  • Точнейшее маневрирование. Ранее газонокосилка двигалась с заметными погрешностями в несколько метров, которые теперь свелись до сантиметров.
  • Бесперебойная передача данных. Корректировки поступают на все роверы даже при потере одного из источников.
  • Лучшее качество покоса. Из-за неточных координат газонокосилка совершала много огрехов на поле – там, где линия должна быть прямой, машина проходила с отклонениями.

Технологии

  • RTK
  • GPS
  • Golang
  • Microservices
  • Docker

Сотрудничество

2022 — ∞