Разработка системы визуального картографирования на базе Android и Cloud Computing

4.75 (2)

Задание

Разработать клиент-серверное решения для визуального картографирования, которое будет реализовывать следующий сценарий:

  1. В системе будет зарегистрировано N Android смартфонов с установленным специальным программным обеспечением (СПО), которое должно быть разработано в рамках данного проекта. С помощью этих смартфонов сотрудники компании Заказчика производят  фотосъемку на местности. Каждый смартфон должен крепиться на специальном штативе с поворотной «головой». В процессе фотосъемки сотрудник компании вручную поворачивает «голову» штатива на угол согласно подсказкам СПО и делает серию фотоснимков.  СПО по сенсорам android смартфона «привязывает» точку, в которой проводилась схемка  к координатам местности и сохраняет эти данные вместе с координатами местности и временем съемки в памяти Android устройства. 
  2. После того как фотосъемка закончена сотрудник компании отправляем отснятый материал в облачное хранилище.  При этом надо принять меры к тому, чтобы в хранилище нельзя было отправить данные с «чужого» смартфона.
  3. Для соблюдения принципа приватности на всех фотографиях должны быть «размыты» лица людей и номера автомобилей (эта задача должна быть решена на серверной стороне).
  4. Отдельные фотографии, сделанные в одной точке должны быть «склеены» в общую панораму. Это задача должна быть решена на серверной стороне.
  5. Полученные панорамы должны быть привязаны к Google Map и выведены для предварительного просмотра через вэб-сайт. Доступ к информации на вэб-сайте в режиме предварительного просмотра должен быть ограничен с помощью авторизации по логину-паролю.
  6. Система предполагает хранение большого объема данных и поэтому должна иметь возможность масштабирования.

Реализация системы

На этапе проектирования были выделены следующие компоненты системы, подлежащие разработке:

  • мобильное приложения для android смарфтона;
  • система хранения информации;
  • система распознавания образов (номера машин, лица людей);
  • система обработки изображений (создание панорам);
  • система отображения информации на вэб сайте. 

схема компонентов системы визуального картографирования на базе android

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

клиент-серверная архитектура для облачных вычислений

Мобильное приложения для Android устройства.

Разрабатываемое приложение должно выполнять три основные функции:

  1. С помощью данных, полученных от встроенного GPS датчика Android смартфона приложение определяет координаты точки, в которой происходит съемка и привязывает к ним серию фотографий. Используя данные с Магнитометра и Гироскопа приложение определяет положение Android смартфона относительно сторон света (запад, юг, сервер, восток) и углы наклона смартфона по отношению к линии горизонта. 
  2. Приложение подсказывает оператору на какой угол надо повернуть  смартфон для следующего снимка.
  3. По окончанию съемки все данные с мобильного устройства с помощью RESTfull запросов отправляются в облачный вычислительный центр для последующей обработки и отображения на Google Map.

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

Защита данных

В соответствии с техническим заданием необходимо было принять меры, которые бы не позволили «стороннему» android устройству передать на сервер поддельные данные. Эта задача была решена с помощью Token Authentication следующим образом: перед началом работы все смартфоны получают уникальные токены, каждый токен содержит в себе информацию о владельце устройства, который  передавал информацию. Каждая сделанная фотосъемка в дальнейшем помечается данным токеном и в случае обнаружения несоответствия — данные фотосъемки блокируются, а дальнейший прием данных с  этого устройства прекращается.

авторизация rest запросов на основе Token Authentication

 Передача изображений осуществляется через Интернет канал с помощью sftp протокола. 

Серверные приложения

Для проекта был разработан набор северных компонент которые обрабатывают первичные изображения, полученные от android смартфонов. 
В качестве метода взаимодействия компонентов распределённого приложения — android смартфонов и серверов облачного вычислительного центра была выбрана REST архитектура. Для  серверной части был написан адаптер который принимает и обрабатывает запросы. Задача адаптера состоит в идентификации каждого запроса, и определении дальнейших  действий, которые должна осуществлять система при его получении. 
В соответствии с техническим заданием был разработан сервер распознавания образов. Для каждого фотоснимка он выделяет участки на которых присутствуют запрещенные признаки (в данном проекте это номера автомобилей и лица людей).  Затем программа обработки изображений производит «размытие» выделенных участков.

распознавание на изображение с помощью OpenCV номера машин и лица людей

Распознавание образов производится с помощью библиотеки OpenCV.

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

панорама местности построена при помощи android приложения cloud computing

Для обеспечения взаимодействий отдельных компонентов в системе используется протокол AMQP
Так как система предполагает хранение на серверах большого объема данных, то при разработке серверной архитектуры мы предусмотрели возможность  масштабирования за счет  использования нодной организации хранения данных. 
Для обеспечения отказоустойчивости системы на всех серверах производится репликация данных. В системе предусмотрен DataBase Coordiantor который контролирует доступ к данным и балансирует нагрузку на отдельные сервера.

Отображения данных  

Web-frontend проекта реализован на профессиональном фреймворке для создания сайтов  MarlinCMS, который имеет модуль для работы с Google Map. Этот модуль позволяет  отображать данные картографирования на вэб странице. Кроме этого MarlinCMS  обеспечивает авторизованный доступ с вэб страницам посредством авторизации по паролю.

 

система управления контентом MarlinCMS

Главный интерфейс программы для android:

интерфейс android приложения для картографирования местности

Интерфейс настройки sftp сервера приложения:

интерфейс приложения для android приложения - настройки программы

Развитие проекта

В ходе выполнения проекта нами были подготовлены предложения  по его развитию:   

  1. Мы предлагаем отказаться от ручного поворота смартфона при съемке отдельных фото, составляющих панораму. Для этого, мы готовы разработать устройство, в котором сервопривод под управлением микроконтроллера Arduino будет автоматически поворачивать Android смартфон на нужный угол и подавать сигнал на съемку очередного кадра. Таким образом работа оператора упростится, а скорость и точность съемки увеличится.
  2. В процессе запуска проекта мы обнаружили что у операторов, производящих фотосъемку местности возникают проблемы с выбором точки, из которой надо проводить фотографирование. Мы предлагаем разработать приложение для андроид смартфона, которое будет отображать на карте местности все точки в которых должна осуществляться съемка панорам. Кроме этого используя GPS сенсор смартфона это приложение будет «подсказывать» оператору правильно ли он установил смартфон.

Результат

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

 

Используемые инструменты и технологии

Linux, REST, Android, Java, C++, Php, AMQP, RebbitMQ, sftp, OpenCV, Android SDK, Qt, MySQL, GlusterFS, SqLite, Arduino, Raspberry, Apache, Nginx, Javascript, html5, JQuery, MarlinCMS v4, front-end framework Bootstrap.
    

Проект разработан в подразделении XmediaLAB Студии Интерактивного Дизайна

У Вас есть проект?
Давайте обсудим, оценим, и сделаем его!
Мы готовы!
Отправить заявку