Как приручить беспилотный транспорт
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 вопроса:
- Наибольшая точность корректировок для гольф-клуба
- Собственная станция – легкость в обслуживании
Так что мы сделали?
Чтобы позиционирование ровера стало точнее, GPS-плата на машине должна получить RTK-корректировки и просчитать разницу между координатами.
Для этого нашей командой был разработан микросервис, который получает данные с GPS-платы, и полученные корректировки посылает на уже другой узел, который реализует всю остальную бизнес-логику и переводит её в команды для парка роверов.
С этим узлом мы обеспечили нужную точность нашим роверам.
Одного источника мало
В ходе испытаний мы быстро пришли к тому, что одна GPS-плата может как просто быть отключена в непредвиденных ситуациях, так и совсем выйти из строя, как и любая техника, а точность всё ещё будет нужна. С этой мыслью мы изучили возможные альтернативы и пришли к RENEP – национальной сети GPS-станций, которая распростерта по всей стране, и которая может предоставить всем энтузиастам доступ к спутниковым данным в режиме реального времени.
Нами был разработан дополнительные микросервисы для получения данных от национальной сети GPS-станций, с определенной станции, находящейся поблизости.
Такое решение создало нам подушку безопасности: больше не приходилось волноваться об оффлайне нашей собственной GPS-платы, ведь RTK-корректировки поступали уже из 2-х источников.
Одновременно двух источников – уже много
После внедрения второго источника мы столкнулись с проблемой: RTK-корректировки своим большим объёмом данных засоряют общий эфир для всех роверов.
Для решения этого кейса мы разработали и внедрили уже 3-й микросервис. Этот узел является прокси-агентом, который выполняет разные задачи:
- Мониторинг здоровья двух источников. Основным источником для нас теперь является наша собственная GPS-плата в силу её близкой расположенности, RENEP же считаем как запасной вариант. В случае, если будет замечено “нездоровое поведение” основного источника (перестанет передавать данные), наш микросервис переключит поток данных на поток с национальной сети.
- Ограничение мощности выходного потока. 2 потока с 2-х источников объединяем в 1, а также, чтобы не захламлять общий эфир, мы искусственно управляем потоком, ограничивая его мощность настолько, насколько это потребуется.
Такой подход позволил нам в режиме реального времени иметь высокую точность позиционирования роверов и при этом не беспокоиться о выходе из строя одного из источников.