Колумнисты

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

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

Разработка проведена в рамках программы стратегического академического лидерства «Приоритет 2030». Статья с результатами исследования была представлена на всероссийской студенческой научно-технической конференции «Автоматизированные системы управления и информационные технологии».

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

«В основе действующих методов отображается только последнее полученное местоположение объекта. Это влечет за собой ситуацию, при которой различие фактических данных и координат на клиенте может быть значительным. Предлагается использовать две последние точки местоположения объекта, что поможет вычислить вектор его направления и, тем самым, еще больше компенсировать задержки», — рассказывает кандидат технических наук, доцент кафедры «Информационные технологии и автоматизированные системы» ПНИПУ Александр Петренко.

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

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

Скриншот многопользовательской игры / ©Пресс-служба Пермского Политеха

Результаты показали, что модель для определения местоположения привела к увеличению средней точности на 36 процентов относительно исходных методов без сглаживания задержек, при минимальном использовании ресурсов на стороне клиента. Также рассмотрен вариант прямолинейного движения игрового персонажа, в роли которого может выступать, например трамвай. В сценарии точность координат на клиенте увеличивается до трех раз», — говорит Матвей Богданов, студент кафедры «Информационные технологии и автоматизированные системы» ПНИПУ.

Алгоритм, созданный разработчиками ПНИПУ, может быть использован в приложениях на стороне клиента, например в GPS-навигаторах, онлайн-картах с отображением автотранспорта, а также многопользовательских онлайн-играх, таких как Dota2 или Counter-Strike.