Scientific journal
Modern high technologies
ISSN 1812-7320
"Перечень" ВАК
ИФ РИНЦ = 0,940

DESIGN AND DEVELOPMENT OF AN IOS APPLICATION FOR TRACKING ROAD POTHOLES

Vasilev M.D. 1 Okhlopkova S.A. 1
1 North-Eastern Federal University named after M.K. Ammosov
In recent years, the development and improvement of highways has been one of the Russian Federation priority direction line. The volumes of road repair, construction of new highways and federal significance roads sections have increased within the framework of the national project “Safe Quality Roads”. According to the survey, VTsIOM in December 2022, more than half of respondents – 54% noted the improvement of roads within settlements, for regional roads this indicator amounted to 62%. Among the leaders in terms of satisfaction with the quality and accessibility of roads there were no Russian regions located in cryolithozone conditions. In permafrost conditions, the process of roadway deformation is much faster, and this is due not only to the physical processes of frozen ground, but also to compliance with construction technologies. The issue of road quality is especially relevant inside populated areas, where there are more man-made impacts on the road infrastructure. This problem is also caused by the impossibility to build high embankments for road construction inside cities. There is a need to introduce continuous monitoring of the road condition surface. One of the solutions to this issue is the development of an application capable of automatically detecting asphalt pavement irregularities using built-in smartphone sensors. The development of such a widely available solution will allow cost-effective mapping of roads condition at the city.
road surface
road monitoring
accelerometer
bump detection
dynamic map
application design
mobile application

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

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

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

Использование акселерометров и их наличие в мобильных устройствах делает такой способ для обнаружения неровностей дорожного покрытия наиболее доступным. Исследования [2–4] показали перспективные результаты относительно способности смартфона точно распознавать неровности дорожного покрытия с помощью данных акселерометра. Однако факторы, такие как размещение и ориентация мобильного устройства, могут влиять на точность измерений акселерометра.

Еще одним эффективным методом обнаружения неровностей дорожного покрытия является использование георадара. Георадар работает путем излучения электромагнитных импульсов в землю и измерения отраженных сигналов, которые отталкиваются от подповерхностных слоев. Анализируя эти отражения, можно определить наличие трещин, пустот и других неровностей [5].

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

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

Можно выделить следующие характеристики для сравнения существующих методов обнаружения неровностей дорожного покрытия: Используемая технология/методика; Необходимость в дополнительном оборудовании; Стоимость; Точность результатов; Потенциал масштабируемости.

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

Целью данной работы является разработка клиентской части iOS-приложения, использующего акселерометр и GPS мобильных устройств, для обнаружения неровностей дорожного покрытия.

Для достижения цели поставлены две основные задачи: 1) обоснование выбора инструментов разработки; 2) проектирование и тестирование приложения по обнаружению неровностей дорожного покрытия на заранее выбранных участках.

Инструменты разработки

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

Для нативной разработки программ на платформе iOS основными языками программирования являются Objective-C и Swift. Выбор Swift обусловлен его повышенной производительностью и безопасностью. Использование опционалов и вывод типов позволяет отлавливать ошибки во время компиляции. Также Swift остается актуальным и соответствует последним возможностям операционной системы iOS.

Двумя популярными вариантами интегрированных сред разработки для создания iOS-приложений, поддерживающих язык программирования Swift, являются Xcode и AppCode. Однако с выходом новой версии AppCode 2022.3 компания разработчик JetBrains сообщила в конце 2022 г. о прекращении выпуска продукта и технической поддержки до 31 декабря 2023 г. Официальная IDE Xcode предлагает необходимую функциональность и полный набор инструментов для разработки приложений на iOS.

Для построения пользовательского интерфейса существуют два фреймворка SwiftUI и UIKit. SwiftUI – относительно новый инструмент, выпущенный в 2019 г., из-за чего поддерживается начиная с iOS 13 и выше. В отличие от UIKit, который следует императивному подходу, SwiftUI предоставляет декларативный синтаксис для написания кода. При использовании UIKit есть возможность создавать интерфейсы с помощью конструктора интерфейса Storyboard или программно, без использования Storyboard. Было принято решение использовать UIKit с помощью программного подхода, так как вся логика, связанная с интерфейсом, записывается непосредственно в коде, что облегчает ее понимание, модификацию и контроль.

Тремя основными фреймворками для мобильного приложения на iOS, использующего данные акселерометра и GPS, являются Core Location, Core Motion и Combine. Core Location позволяет получать необходимые данные GPS для отслеживания местоположения и перемещения пользователя. Core Motion предназначен для сбора и обработки данных о движении, полученных с помощью акселерометра устройства. Combine обеспечивает обработку асинхронных событий. В данном случае Combine будет использован для работы с потоками данных, получаемых от Core Location и Core Motion.

При выборе подходящего картографического сервиса для приложения были рассмотрены различные варианты, включая MapKit, Google Maps SDK, Yandex MapKit и 2GIS Mobile SDK. Выбор Google Maps SDK обусловлен широким распространением среди пользователей и разработчиков.

Для установки внешних зависимостей, таких как Google Maps SDK, необходимо выбрать подходящий менеджер пакетов. При разработке iOS-приложений существует несколько популярных менеджеров пакетов, такие как Swift Package Manager (SPM), Carthage и CocoaPods. Официальная документация для Google Maps SDK рекомендует использовать CocoaPods в качестве менеджера пакетов. Соответственно, учитывая, что Google Maps SDK не поддерживает SPM и что Carthage сложен в настройке, выбор был сделан в пользу CocoaPods.

Проектирование приложения

По результатам анализа возможностей встроенных датчиков смартфонов [2] определен набор следующих функциональных требований к мобильному приложению:

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

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

3. Приложение должно работать в фоновом режиме.

4. Приложение должно предоставлять пользователю возможность просматривать карту с неровностями в режиме реального времени во время совершения поездки.

Проект в целом построен по архитектуре «клиент-сервер», где клиентской частью является разрабатываемое iOS-приложение (рис. 1). Клиентская часть приложения использует архитектурный паттерн MVC (Model-View-Controller). Данный паттерн позволяет разделить логику приложения на три ключевых компонента: Модели, Представления и Контроллеры.

Серверный компонент решает такие задачи, как обработка неровностей и их классификация в зависимости от значений и хранение информации в базе данных. Клиентская часть приложения взаимодействует с сервером, используя стандартные методы HTTP, такие как GET и POST запросы.

missing image file

Рис. 1. Шаблон архитектуры приложения

Описание общего алгоритма работы мобильного приложения представлено в работе [7]. Акселерометр измеряет ускорение мобильного устройства в трех проекциях. Когда движущийся автомобиль наезжает на неровность, то происходит сравнение текущего и предыдущего значения акселерометра с привязкой геопозиции. Неровность обнаруживается, если полученное значение больше установленного. Затем данные неровностей отправляются на сервер. В приложении составляется актуальная карта состояния автомобильных дорог. При разработке приложения было использовано 18 различных классов.

Прецедент использования (Use case) должен включать такие действия, как просмотр карты неровностей, предоставление обратной связи и изменение настроек.

Разработка приложения по обнаружению неровностей дорожного покрытия

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

Для работы с данными акселерометра мобильного устройства был создан сервис AccelerometerService, использующий фреймворки CoreMotion и Combine. После проверки доступности датчика и единственности экземпляра сервиса данные акселерометра начинают публиковаться. Интервал обновления для получения данных составляет 0,5 с.

Сервис LocationService предназначен для предоставления доступа к данным геолокации, работы с местоположением и скоростью устройства. При этом используется фреймворк CoreLocation. У сервиса есть 3 объекта-издателя: coordinatesPublisher для публикации координат геолокации, deniedLocationAccessPublisher для отправки статуса разрешения на доступ к геопозиции и speedPublisher для издания значения скорости. Скорость измеряется в метрах в секунду, для удобства следует перевести скорость в километры в час.

За обнаружения неровностей дорожного покрытия и отправки их данных на сервер отвечают два класса BumpManager и BumpWorker соответственно. Здесь реализован алгоритм распознавания выбоин на дорогах. Обработка потока данных позволяет фиксировать неровности (вычисленное значение коэффициента более 1,9) синхронизируя данные по локации и скорости (более 30 км/ч). Если неровность получена, она добавляется в массив и выводится сообщение, указывающее на обнаружение неровности. Когда количество фиксированных неровностей в одном и том же месте достигает определенного количества создается объект класса Bumps.

Для установки необходимых зависимостей проекта с Google Maps использовался менеджер пакетов CocoaPods. Использование фреймворка Google Maps требует генерации API-ключа. За отображение карты и загрузки обнаруженных неровностей из сервера отвечает класс-контроллер MapVC, импортирующий фреймворк GoogleMaps. Загрузка точек на карту и отображение их маркерами различных цветов в зависимости от типа достигается использованием нескольких функций (loadPoints, updateMarkers).

В проекте используется БД Mongo DB. Были созданы два основных вида сущности: Bumps и Points. Первые представляют собой первоначальные данные (грязные), которые после обработки преобразуются в чистые данные – Points. Для обеспечения работы приложения с сервером используются следующие URL:

1. /api/Point/GetPoints. Параметры: latitude, longitude, maxDistance, minDistance. Результат: массив JSON-объектов (список неровностей).

2. /api/Bump/InsertBumps. Параметры: массив JSON-объектов (список неровностей).

3. /api/Review/InsertReview. Параметры: email, phone, name, text.

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

missing image file

Рис. 2. Экраны при первом запуске

Перед началом использования приложения пользователю доступны следующие опции: выбор типа транспортного средства и выбор типа просмотра (водитель или наблюдатель).

На главном экране приложения есть две панели вкладок: карта и настройки. На вкладке «Карта» приложения представлена карта, на которой отображены точки неровностей с цветовой градацией. Когда пользователь наезжает на неровность во время движения, на экране появляется toast-сообщение с текстом «Найдена неровность».

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

Для оценки работоспособности и последующей наладки приложения был проведен комплекс тестов с использованием различных моделей iPhone на разных версиях iOS. Приложение было установлено на тестовые устройства через кабельное подключение c запущенной программой Xcode, при котором требовалось разрешение на доверие разработчику. Тестирование проводилось по заранее определенному маршруту в г. Якутске. Результаты показали довольно высокий уровень обнаружения (93 %) и отметки неровностей вдоль дорог, которые были задействованы на маршруте. Точки на карте с цветовой градацией отмечались на местах, принятых предварительно за явные дефекты. Разница в точности определения геолокации неровности в зависимости от модели устройства (iPhone 8 и iPhone 13 Pro) была минимальной.

Заключение

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