В настоящее время все более популярными становятся автономные системы, предназначенные для решения таких задач, как патрулирование местности, оценка экологического состояния территории, исследование поверхности космических объектов и других. Для выполнения этих задач используются системы управления, способные к ориентированию на местности, следованию заданному маршруту, уклонению от препятствий. При этом могут возникнуть ситуации, когда невозможно использование активного приводного оборудования – радиомаяков, световых маяков и т.д. В таком случае основной упор делается на видеоданные и информацию с бортовых датчиков ближнего действия. Для проектирования мобильной платформы, которая могла бы функционировать в подобных условиях, и разработки сопутствующего ПО необходимы знания в областях обработки изображений, нейронных сетей и нечеткой логики [1].
В связи с этим возрастает потребность в специалистах, способных решать задачи по проектированию подобных систем. Зарубежные универси- теты предлагают курсы по подготовке специали- стов, способных пилотировать и разрабатывать беспилотные летательные аппараты [2], а также наземные автономные системы [3, 4]. Довольно часто подобные системы строятся на основе нейронных сетей [5, 6]. Важную роль в системах управления аппаратами такого типа имеют также системы нечеткой логики [7–9]. При этом следует отметить, что при изучении предметов в этой области знаний возникает довольно специфическая проблема: для выполнения полноценных практических или лабораторных работ студент должен владеть не только теорией, но и навыками программирования. Однако для различных специальностей и направлений подготовки уровень знаний и навыков в этой области может существенно отличаться, что затрудняет полноценное выполнение работ по этим дисциплинам. Также студенты должны понимать, какое влияние один из компонентов будет оказывать на другой в реальных условиях функционирования разрабатываемой мобильной платформы.
Чтобы помочь студентам понять различные ас- пекты обработки и анализа данных с мобильных платформ, была разработана учебная распределен- ная система управления мобильной колесной платформой на основе видео- и сенсорной инфор- мации. Данная система позволяет анализировать эффективность различных подходов обработки данных и методов их анализа в управлении мобильной платформой. В качестве задачи, поставленной перед автономным аппаратом, было выбрано движение к заданной точке. Точка назначения обозначается графическим маркером, в роли которого может выступать объект специфической формы либо специфического цвета. При движении к цели автономная платформа в своей системе управления использует способности к ориентированию на местности, следованию заданному маршруту и уклонению от препятствий.
Описание мобильной платформы
Данная разработка является дальнейшим развитием идей, заложенных в полуавтономную колесную платформу, ранее использовавшуюся для решения сходных задач [10].
Аппаратная платформа (рис. 1) представляет собой полиуретановое шасси в виде пластины размером 280´500´20 мм. Выбор материала обусловлен высокими прочностными и массовыми характеристиками, что позволяет увеличить полезную нагрузку системы. В качестве движетеля используются четыре колеса диаметром 115 мм, независимо приводимые в движение электрическими мотор-редукторами номинальным напряжением 12 вольт, номинальной частотой вращения 100 об./мин. и крутящим моментом 9,2 кг×см.
На платформе размещено оборудование, предназначенное для ориентирования на местности, и дополнительное оборудование для проведения исследований на местности, в частности, отбора проб грунта.
Для определения направления на точку назначения на платформе размещена IP-камера.
Управление платформой осуществляет микрокомпьютер Raspberry Pi B+ [11] в связке с мик- роконтроллером Arduino Duemilanove [12]. Для управления работой двигателей предназначен силовой модуль расширения. Связь Raspberry Pi и Arduino осуществляется через интерфейс USB. На модуле расширения для дополнительного прототипирования установлен модуль датчиков, оборудованный магнетометром и акселерометром. Кроме того, к этому модулю подключены ультразвуковые датчики расстояния, оценивающие расстояние до препятствий перед платформой слева и справа по направлению движения. В центре передней части платформы расположен инфракрасный датчик препятствий, выдающий сигнал в случае, если препятствие находится прямо перед платформой на расстоянии 800 мм и менее.
Операционной системой бортового компьютера является Raspbian (Debian Wheezy) [13].
Микроконтроллер управляется специализированным ПО, принимающим информацию от всех датчиков платформы и передающим ее на бортовой компьютер. Кроме того, ПО микроконтроллера принимает команды от компьютера и управляет работой ведущих двигателей в соответствии с этими командами, за исключением случая, когда присутствует сигнал от датчика препятствий по центру платформы и движение платформы вперед блокируется.
Питание оборудования платформы обеспечивается свинцово-кислотным аккумулятором напряжением 12 вольт, номинальной емкостью 4,5 Ач.
К разъему USB бортового компьютера подключен USB-WiFi адаптер. В процессе работы бор- товой компьютер создает программную точку доступа, что позволяет получать изображение с бортовой камеры и управлять ею, а также получать доступ к телеметрии и управлять движением платформы непосредственно, путем посылки команд Arduino с отдельного компьютера или смартфона, оснащенного модулем WiFi.
Основной частью системы является програм- мный комплекс, включающий в себя сервер обработки изображения, поступающего от набортной IP-камеры, нейронной сети, определяющей направление на целевую точку, и системы нечеткой логики, оценивающей информацию от сенсоров и нейронной сети и управляющей перемещениями модуля. Комплекс запускается на бортовом компьютере.
Одной из целей при разработке системы было обеспечение ее высокой гибкости. Так, каждый из программных продуктов может работать независимо, а непосредственное взаимодействие компонентов системы осуществляется с помощью сетевых протоколов, в частности, через сетевые сокеты и с использованием Windows Communication Foundation-технологий. Это позволяет легко заменить любой из компонентов системы, например, для определения направления движения платформы может быть применен программный модуль, использующий данные от магнетометра (компаса).
Типичное функционирование распределенной системы управления платформой (рис. 2) можно представить в виде следующих шагов.
Шаг 1. Получение изображения с IP-камеры и локализация в кадре объекта интереса.
Шаг 2. Выделение на изображении маркера, по направлению к которому должна двигаться платформа при помощи нейронной сети на основе цветовых или структурных характеристик объекта.
Шаг 3. Расчет параметров движения на основе выходов нейронной сети и показаний датчиков с использованием нечеткой логики.
Шаг 4. Формирование команд управления мобильной платформой.
Обработка графической информации и локализация в кадре объекта интереса
За подготовку изображения, поступающего с IP-камеры, к анализу нейронной сетью отвечает сервер обработки изображения, реализованный в среде RAD Studio на языке Delphi. В нем имеется возможность задания последовательности действий, необходимых для обработки изображения, и локализации объекта интереса. Поскольку сервер обработки изображения является частью учебной системы, в нем предусмотрен просмотр промежуточных этапов обработки изображения, а также возможность изменения параметров обработки изображения. Такая возможность позволяет студентам выбрать наиболее оптимальную конфигурацию цепочки методов обработки для локализации объекта интереса. В задачу студентов при работе с сервером обработки изображения входит настройка цепочки методов обработки с целью выделения объекта, к которому необходимо выполнять движение.
В связи с тем, что получаемое с камеры изображение не является идеальным (может содержать разнообразные шумы, а также иметь нарушенный цветовой баланс), в сервере обработки изображения реализованы основные фильтры, позволяющие ознакомиться с методами шумоподавления и цветовой коррекции [14]. Так, для изучения студентам доступны механизмы изменения яркости, контрастности и гаммы с возможностью применения их к выбранным компонентам цветовой модели, а также основные методы цветовой коррекции. Для шумоподавления предложены фильтр Гаусса, медианный фильтр и группа линейных фильтров с возможностью задания произвольного ядра. При добавлении фильтров в цепочку обработки в программе предусмотрена возможность настройки параметров, включая выбор цветовой модели, в которой будет осуществляться обработка (RGB, HSV, YUV). Таким образом, студенту будет проще понять различия между цветовыми моделями и их влияние на результат обработки.
Для непосредственной локализации объекта предложены набор методов бинаризации и пороговая сегментация [15,16] в цветовых моделях RGB, HSV, YUV. При реализации данных методов предусмотрена возможность настройки отображаемого результата. Так, например, результат сегментации можно задать следующим образом: фоновую часть изображения (значения, не соответствующие условию определения объекта) можно закрасить указанным цветом, в то время как сам объект будет иметь оригинальный вид.
После получения области с объектом интереса возможно применение дополнительных методов обработки, нацеленных на подготовку данных для передачи нейронной сети, в частности, изменение масштаба. После подготовки изображения оно передается в модуль нейронной сети.
Поиск объекта интереса
Для выделения в кадре объекта интереса была использована полносвязная трехслойная нейронная сеть типа персептрон. Размер входного слоя сети был выбран равным 8 100 нейронам. Это соответствует размеру изображения 60´45 пикселей, причем цвет каждого пикселя кодируется тремя 1-байтными значениями (RGB-изображение). Задачей студентов при выполнении практических работ являлось определение числа нейронов во втором слое сети и числа нейронов в выходном слое в зависимости от входных данных следующего модуля (системы нечеткой логики). Поскольку бортовой компьютер платформы не обладает достаточной вычислительной мощностью, обучение нейронной сети производилось на отдельно установленном персональном компьютере с дальнейшей передачей файла уже обученной нейронной сети в бортовой компьютер платформы. Передача осуществлялась через локальную сеть, а точнее, через точку доступа, созданную бортовым компьютером платформы.
Обучение нейронной сети производилось мето- дом роя частиц [17].
Для обеспечения переносимости кода между разными платформами (поскольку бортовой компьютер использует ветку Linux, а персональные компьютеры в учебной аудитории оснащены Windows 7) ПО нейронной сети было разработано с использованием платформы Microsoft .Net (язык разработки C#). В среде Linux приложение запускалось с использованием фреймворка Mono [18]. Разработка структуры сети (выбор количества слоев и нейронов в слое) выполнялась на персональном компьютере аудитории в графической оболочке, после чего производилось обучение нейронной сети путем предъявления ей обучающего множества. Это множество формировалось из изображений, полученных с IP-камеры платформы, и желательных значений выходов нейронной сети, заданных пользователем (студентом).
Предполагалось, что студенты используют от 2 до 3 выходов нейронной сети, что будет соответствовать ситуациям «маркер цели присутствует в кадре слева»–«маркер цели присутствует в кадре справа» или «маркер цели присутствует в кадре слева»–«маркер цели присутствует в кадре по центру»–«маркер цели присутствует в кадре справа». Значения выходов нейронной сети передавались далее в модуль нечеткой логики при помощи сетевого интерфейса между соответствующими приложениями.
Формирование команд управления
Для определения направления, в котором должна двигаться мобильная платформа в данный момент времени, использовалась система нечеткой логики. Данный модуль был реализован также на платформе Microsoft .Net на языке C#. Фактически данный модуль состоял из двух независимых приложений, использующих общую библиотеку.
Приложение для персонального компьютера использовалось для разработки правил системы нечеткой логики и оценивания их правильности путем подачи значений, заданных пользователем, на вход разработанной системы правил. Разработанная система правил передавалась в бортовой компьютер посредством сети Wi-Fi, созданной точкой доступа бортового компьютера.
Приложение для бортового компьютера получало данные из двух источников – от нейронной сети и телеметрию от микроконтроллера Arduino, в частности, дистанцию до препятствий, информацию об ускорениях платформы от акселерометра, а также данные о векторе магнитного поля, в котором находится платформа (на основании которых можно было определить направление движения платформы относительно магнитного поля Земли).
На основании сформированного пользователем набора правил система должна была выдавать значение – угол, на который необходимо изменить траекторию движения платформы.
Полученное значение посредством сетевого интерфейса передавалось в следующий компонент системы – модуль управления, задачами которого являлись обработка данных, полученных от модуля нечеткой логики, и формирование управляющих команд для микроконтроллера Arduino.
При движении платформы использовался следующий алгоритм.
1. Управляющий модуль посылает запрос на получение данных об угле поворота платформы, а также телеметрическую информацию от датчиков модулю нечеткой логики.
2. Модуль нечеткой логики посылает запрос на получение данных нейронной сети.
3. Модуль нейронной сети запрашивает изображение с IP-камеры, преобразует его в вид, пригодный для обработки нейронной сетью, и вычисляет ее отклик.
4. Полученный отклик передается модулю нечеткой логики.
5. Модуль нечеткой логики на основании данных, полученных от нейронной сети, а также от датчиков, определяет угол, на который необходимо развернуть платформу, и передает его управляющему модулю.
6. На основе данных, полученных от модуля нечеткой логики, управляющий модуль формирует команды для микроконтроллера Arduino, которые и посылает ему.
Движение осуществлялось по следующему алгоритму: вначале определялся угол, на который необходимо изменить направление движения платформы по описанному выше алгоритму, затем – поворот платформы, после чего платформа смещалась вперед на 150 мм (при условии отсутствия препятствий) и цикл повторялся.
На основании изложенного сделаем следующие выводы. Предложенная структура ПО обеспечивает высокую гибкость системы. В частности, каждый из программных продуктов способен работать независимо, с использованием универсальных сетевых протоколов. Это позволяет как создавать распределенную систему (например, для повышения общего быстродействия системы), где каждый программный продукт работает на специально выделенном компьютере, так и легко заменять любой из ее компонентов. Например, при решении ряда задач нейронная сеть, визуально определяющая необходимое направление движения, может быть заменена на модуль, определяющий направление движения с использованием GPS-технологий и сигналов от магнетометра (компаса). Также система управления на основе нечеткой логики может быть заменена на любую другую систему, например, на основе конечных автоматов.
Описываемая система была реализована в два этапа с развитием аппаратной и программной баз в период с февраля 2013 г. по август 2014 г. и исполь- зовалась при проведении в это время международ- ных летних технических школ. Система была применена для обучения по дисциплинам «Основы обработки изображений», «Нейронные сети» и «Нечеткая логика». Использование показало высокую эффективность предложенной системы и заинтересованность студентов в процессе обучения.
Предложенная система может найти применение как для проведения исследований и опытно-конструкторских работ в области обработки и анализа изображений, нейронных сетей, нечеткой логики и систем автоматического управления, так и для обучения студентов, бакалавров и магистров соответствующих направлений.
Литература
1. Зотин А.Г., Саяпин А.В. Разработка полуавтономной исследовательской системы с использованием видеоданных и сенсорных устройств // Решетневские чтения. 2013. Т. 2. № 17. С. 203–204.
2. Lewis University: Unmanned Aircraft Systems, B.S. URL: http://www.lewisu.edu/academics/unmanned-aircraft-systems/ (дата обращения: 18.08.2015).
3. Bonn-Rhein-Sieg University of Applied Science: Master of Autonomous Systems. URL: http://www.inf.fh-bonn-rhein-sieg.de/ informatik/en/MAS.html (дата обращения: 18.08.2015).
4. Oxford: Autonomous Intelligent Machines and Systems. URL: http://www.ox.ac.uk/admissions/graduate/courses/autono mous-intelligent-machines-and-systems (дата обращения: 18.08.2015).
5. Karim A., Haider N.G. Neural Network Based Low Cost Autonomous Vehicle. The 1st Intern. Conf. on Comp., Control & Communication, 2007. URL: http://citeseerx.ist.psu.edu/viewdoc/ download?rep=rep1&type=pdf&doi=10.1.1.135.661 (дата обращения: 17.08.2015).
6. Nikam D.S., Gandhe S.T., Phasale J.N. Development of MBP for AVR Based Controlled Autonomous Vehicle. Intern. Journ. of Emerging Trends & Technology in Comp. Sc., 2014, vol. 3, iss. 6, pp. 162–166.
7. Tahboub K.K., Al-Din Munaf S.N. A Neuro-Fuzzy Reasoning System for Mobile Robot Navigation. Jordan Journ. of Mechanical and Industrial Eng., 2009, vol. 3 (1), pp. 77–88.
8. Smith J.F. III, Nguyen T.H. Autonomous and cooperative robotic behavior based on fuzzy logic and genetic programming. Journ. Integrated Computer-Aided Eng., 2007, vol. 14, iss. 2, pp. 141–159.
9. Faisal M., Hedjar R., Al Sulaiman M., Al-Mutib K. Fuzzy Logic Navigation and Obstacle Avoidance by a Mobile Robot in an Unknown Dynamic Environment. Intern. Journ. of Advanced Robotic Systems, 2012. URL: http://cdn.intechopen.com/pdfs-wm/41967.pdf (дата обращения: 27.05.2015).
10. Саяпин А.В., Зотин А.Г. Автономная колесная платформа и ее использование для изучения основ обработки изображений, нейронных сетей и систем нечеткой логики // Евразийский союз ученых. 2015. № 2 (11). Ч. 3. С. 38–40.
11. Ali M., Valaskamp J., Eddin N., Falcorner B., Oram C. Technical development and socioeconomic implications of the Raspberry Pi as a learning tool in developing countries. 5th Comp. Sc. and Electronic Eng. Conf., 2013, pp. 103–108
12. Mellis D., Buechley L. Collaboration in open-source hardware: third-party variations on the arduino duemilanove. Proc. of the ACM 2012 Conf. on Comp. Supported Cooperative Work (CSCW‘12), 2012, pp. 1175–1178.
13. Raspberry Pi Operating systems. URL: http://en.wikipedia.org/wiki/Raspberry_Pi#Operating_systems (дата обращения: 20.05.2015).
14. Зотин А.Г., Пахирка А.И., Буряченко В.В. Система видеонаблюдения c возможностью улучшения визуального качества видеопотока // Программные продукты и системы. 2013. № 2. С. 191–197.
15. Al-Amri S.S., Kalyankar N.V., Khamitkar S.D. Image Segmentation by Using Thershod Techniques. Journ. of Comp., 2010, vol. 2, iss. 5, pp. 83–86.
16. Зотин А.Г., Носов А.В., Бузаев Д.В. Анализ пригодности методов сегментации для локализации объектов на основе цветовых и структурных признаков // Вестн. СибГАУ. 2012. № 1 (41). С. 23–28.
17. McCaffrey J.D. Neural Network Training Using Particle Swarm Optimizationю (2013). URL: http://visualstudiomagazine. com/articles/2013/12/01/neural-network-training-using-particle-swarm-optimization.aspx (дата обращения: 22.05.2015).
18. Mono. URL: https://ru.wikipedia.org/wiki/Mono (дата обращения: 22.05.2015).