5. Проектировка информационной системы робота

advertisement
Informācijas sistēmu menedžmenta augstskola
Studiju programma 42481 Informācijas sistēmas
Dabaszinātņu un datortehnoloģiju katedra
Artūrs Jaskevičs
Robota modulāro operētāj un vizualas navigacijas
sistēmu analīze un izstradāšana.
Vārds, Uzvārds
Students(-te)
Diplomdarba
vadītājs,
Paraksts
Artūrs Jaskevičs
Asociētais profesors
Viktors Boicovs
amats, zinātniskais
grāds
RĪGA 2011
Datums
Институт Менеджмента Информационных Систем
Учебная
программа
42481 Информационные системы
Специализ
ация
Телекоммуникационные системы
А. Яскевич
Разработка и анализ модульной операционной
системы и визуальной навигации для робота.
БАКАЛАВРСКАЯ РАБОТА
Подпись
Имя, Фамилия
Студент
Артур Яскевич
Научный
руководитель,
должность, звание
Виктор Бойцов , доктор технических наук
РИГА 2011
2
Дата
Аннотация
В работе проанализированы современные технологии в области робототехники и современных способах
обработки цифровых изображений. Целью данной работы является создание и проектировка модульного робота с
возможностью распознавания людей и объектов, а также автономной системой ориентирования в пространстве.
На данное время в мире доступно достаточно большое количество различных технологий для разработки робота,
в данной работе будут использоваться Open Source технологии, которые позволяют использовать уже
разработанные библиотеки и модули. Данный проект также будет опубликован как Open Source и будет
содержаться под лицензией GNU GENERAL PUBLIC LICENSE ver.3.
Работа состоит из 6 частей:
1.
Обзор современного состояния рынка робототехники и средств визуального взаимодействи.
2.
Обзор практики.
3.
Используемые технологии.
4.
Проектировка технической части робота.
5.
Проектировка информационной системы робота.
6.
Анализ разработки проекта и общие заключения полученные в ходе разработки проекта.
Annotācija
Šajā darbā tiek analizēti moderni robototehnikas un vizualas informācijas apstrādes tehnoloģijas. Šī darba
mērķis ir projektēt un izveidot modulāro robotu ar objektu un cilvēku atpazīšanas tehnoloģijām. Tagad pasaulē ir pieejams
pietiekami liels skaits dažādu tehnoloģiju robotu izveidnei un attistīšanai. Tiek izmantots Open Source koncepcija lai
izmantot jau izstradātos bibliotēkas un moduļus. Šis projects arī bus pieejams kā Open Source un tiks publicēts zem GNU
GENERAL PUBLIC LICENSE ver.3.
Darbs sastāv no 6 daļām:
1.
2.
3.
4.
5.
6.
Robototehnikas un vizuālās informacijas mijiedarbības līdzeklu tirgus pārskats.
Prakses pārskats.
Izmonatotās tehnoloģijas.
Robota tehniskas daļas projektēšana.
Informacijas sistēmas projektēšana.
Projekta izstrādes analīze un vispārējie secinājumi, iegūtie projekta izstrādē.
Summary
This work covers modern technology in the field of robotics and new ways of processing digital data. The goal
of this work is to design and create a modular robot with an ability of visual object processing and an autonomous of
orientation in space. There multiple available technologies for creating robots, in this work an Open Source concept will
be used. This concept allows the use of already built libraries and modules for development. This project will be also be
available as Open Source and published under the GNU GENERAL PUBLIC LICENSE ver.3.
This work consists of 6 parts:
1.
2.
3.
4.
5.
6.
Overview of the modern robotics and visual interaction market.
Practice overview.
Used technologies
Technical robot design.
Information system design.
Analysis of the developmental process and conclusions in the course of project development.
3
Ключевые слова
Key words
Noteicošie vārdi
Робот
Robot
Robots
Визуальные алгоритмы
Visual algorithms
Vizuālie algoritmi
Модульная конструкция
Modular development
Modulāra izveidne
Компьютерное зрение
Computer vision
Dator redze
Интеллектуальная
система
Intellectual system
Intelektuālā sistēma
4
Содержание
Введение ................................................................................................................................ 7
1. Обзор современного состояния рынка робототехники и средств визуального
взаимодействия ..................................................................................................................... 8
2.
3.
4.
1.1.
Интеграция информационных систем ................................................................. 9
1.2.
Направление исследований................................................................................. 12
1.2.1.
АКТУАЛЬНОСТЬ ИССЛЕДОВАНИЯ ...................................................... 12
1.2.2.
ОБЪЕКТ ИССЛЕДОВАНИЯ ....................................................................... 13
1.2.3.
ПРЕДМЕТ ИССЛЕДОВАНИЯ ................................................................... 13
1.2.4.
ГИПОТЕЗА ИССЛЕДОВАНИЯ ................................................................. 14
1.3.
Защищаемые положения ..................................................................................... 14
1.4.
Структура работы ................................................................................................ 14
1.5.
Выводы.................................................................................................................. 15
Обзор концепций разработки робота ........................................................................ 16
2.1.
Обзор места практики.......................................................................................... 16
2.2.
Новые концепции для программирования ........................................................ 17
2.3.
Исследование Операционных Систем ............................................................... 19
2.4.
Выводы.................................................................................................................. 19
Открытые технологии ................................................................................................. 20
3.1
Open Source и Free Software ................................................................................ 21
3.2
OpenCV и его применения .................................................................................. 23
3.3
Микроконтроллеры.............................................................................................. 26
3.4
Выводы.................................................................................................................. 27
Реализация из возможных технологий...................................................................... 29
4.1
4.2
4.3
Операционная система ........................................................................................ 29
Концепции и технологии программирования ............................................... 32
Выводы.................................................................................................................. 36
5
5.
Проектировка технической части робота ................................................................. 37
5.2
Техническое устройство робота ......................................................................... 37
4.2 Управление движением ............................................................................................ 42
5.
6.
7.
4.3
Дистанционное управление ................................................................................ 43
4.4
Выводы.................................................................................................................. 44
Проектировка информационной системы робота .................................................... 45
5.1
УМЛ и устройство системы ................................................................................ 46
5.2
Система управления ............................................................................................ 49
5.3
Система распознования изображений OpenCV ................................................ 51
5.4
Система принятия решения ................................................................................ 56
5.5
Open Source проект и контрибьюторы ............................................................... 57
Hexapoda sistēmas izstradāšana.................................................................................... 58
6.1
Ievads ..................................................................................................................... 58
6.2
Robotehnika un jauno tehnoloģiju integrācija ....................................................... 58
6.3
OpenCV ................................................................................................................. 59
6.4
Mikrokontrollieri.................................................................................................... 60
6.5
Operētājsistēma ...................................................................................................... 61
6.6
Sistēmas struktūra un UML diagrammas ............................................................... 62
6.6
Secinājumi.............................................................................................................. 67
Заключение и общие выводы ..................................................................................... 68
7.1 Анализ разработки проекта и общие заключения, полученные в ходе
разработки проекта. ........................................................................................................ 68
Литература........................................................................................................................... 70
6
Введение
Автоматизация и оцифрование окружающей среды достигают своих пиков и
выходят на новый уровень, в магазинах появляются коды, сфотографировав которые
вы тут же перейдёте на сайт этого сайта, открываются новые способы
взаимодействия пользователей. Концепция расширенной реальности уже давно
победила концепцию виртуального мира, и индустрия технологий ищет всё новые и
новые способы взаимодействия с цифровыми устройствами. Появились различные
устройства для кинестетического ввода информации, но самые интересные и
успешные работы производятся в области компьютерного зрения. На данный момент
существуют достаточно много институтов серьезно занимающихся этой
проблематикой, и сами технологии уже выходят в широкую массу.
Робототехника и мехатроника одни из самых интригующих технических
дисциплин современности, индустрия ещё молодая и нету широко известных
лидеров, но робототехника начинает выходить из узкого применения в
технологических процессах, где необходима сверх точность, и начинает всё больше
входить в жизнь человека. В Латвии уже достаточно хорошо известна такая фирма
как iRobot, выпускающая роботов-пылесосов и роботов-газонокосилок. Так как
робототехника ещё только на пороге своего развития, у Латвии есть хороший шанс
найти свою нисшу в данной индустрии.
7
1. Обзор современного состояния рынка робототехники и
средств визуального взаимодействия
На рынке робототехники началась революция, появляются рабочие модели
роботов убирающих помещения, роботов для слежения и роботов для помощи в
экстренных ситуациях. Основная часть выпускаемых роботов всё ещё остаётся в
секторах автомобильной сборки, промышленных систем и сельском хозяйстве.
Международная федерация робототехники провела анализ и сделала вывод, согласно
которому робототехническая промышленность делает большие успехи, начиная с
2010 г., и к 2020 г. оборот рынка оценивается в 500 млрд. $.
Но все же, индустрия разработки и продажи интеллектуальных роботов на
сегодня находится ещё на своём начальном этапе развития
«Индустрия разработки и продажи интеллектуальных роботов на сегодня находится
на начальном этапе развития на рынке, оцениваемом в 8,5 млрд. $», — говорят в
Panasonic.[1]
Одна из самых актуальных задач робототехники – автономность робота и
групп роботов. Под автономностью подразумевается, что робот должен уметь
взаимодействовать с окружающей средой и находить пути продвижения без помощи
человека. В настоящее время в гражданской робототехнике широко используются
такие устройства, как дальномеры (ультразвуковой, лазерный), видеокамеры с
механической обратной связью, стерео видеокамеры. Кроме этих специфических
задач навигации программное обеспечение робота должно выполнять и общие задачи
управления и параллельное функционирования всех устройств, входящих в состав
робота (двигатели, шасси, датчики, видеокамера и т.д), конфигурация должна тоже
меняться. Следственно роботехнические компании стремятся к модульной
архитектуре роботов и использования уже созданных технических решений для
программирования. Например один из удачнейших решений для компании Texas
Instruments, было выпускание микроконтроллеров с поддержкой всем известного
языка программирования C. Появляются новые компании и коллективы работающие
над целыми платформами для роботов, суть их заключается в предоставлении
продукта позволяющего обращаться к различными интерфейсам устройств и
поддерживать основные протоколы передачи данных. На таких платформах
8
возможна
быстрая
сборка
прототипа
и
лёгкая
замена
частей.
Актуальность
роботов на производстве и в быту получает огромное
признание в современном мире. Автоматизированные фабрики сегодня развиваются
в
сторону
увеличения
универсальности,
уже
появляются
прототипы
самопроизводящихся машин, как например 3D принтер, который может создать сам
себя. Развитие производственных технологий уже в ближайшем десятилетии
приведёт к появлению самовоспроизводящихся систем, то есть машин, способным
производить собственные копии.
Уже производятся микророботы и нанороботы, они используются в медицине,
в сельском хозяйстве как сенсоры и во многих других областях. Нанороботы могут
выполнять строительство нужных структур из молекул и атомов, что открывает
ранее не возможные манипуляции в микромире. Наномашины смогут не только
производить, но и чинить, в том числе и клетки человеческого организма.
Нанороботы смогут легко создавать любые, самые сложные и совершенные
материалы и продукты с абсолютной точностью.
1.1. Интеграция информационных систем
Крупные разработчики программного и железного обеспечения пытаются
ввести всё новые способы общения человека с компьютером, появляются новые
устройства для игровых приставок и разрабатывают новые концепции расширенной
реальности. К примеру Nintendo Wii[4], его отличие от других игровых приставок –
Wii Remote, которые позволяет контролировать персонажей игры и предметами
движениями руки, указывая на объекты, отображаемые на экране. Данный
контроллер способен воспринимать в трёх измерениях и оснащён оптическим
датчиком.
Корпорация Майкософт также массивно финансирует разработки в области
изменённой реальности. Совсем недавно, новый проект в данной области - “Natal”
нашёл своё место под название “Kinect” [2] в дополнении к игровой приставке Xbox
360 от Microsoft. По сути данная продолжение приставки, представляет собою
компьютер обнаруживающий положение человека, распознавание голоса, глубину и
RGB изображения. Данный продукт не требует ни каких других посторонних
котроллеров, человек и является котроллером, управляя жестами и телодвижениями,
персонаж на экране делает те же телодвижения.
9
Также всё больше распространяется Smart Phone концепт, по сути устройство
содержащее в себе множество различных приспособлений - акселерометр, камера,
гироскоп, инфракрасные датчики, Bluetooth, WiFi, подключение к мобильной сети,
GPS, большой объём памяти, процессоры уже под 1Ghz с обильным снабжением
кэша и оперативной памяти. Такие технические достижения помещающиеся на
ладоне позволяют разрабатывать инновационные приложения и программные
решения, как например, большим хитом стала концепция GPS + Google Maps – с
подключением к интернету и GPS позволяет определить ваше местоположение,
например в iPhone, данное приложение идёт по умолчанию. Новые типа игр для
Smart Phone позволяет использовать телефон в качестве джойстика или скажем руля,
наклоняя телефон, соответствующие действия производятся в игре. Компания Google
также представил отличную концепцию QR кодов + Google Maps, по сути человек
фотографирует данный код и может перейти по ссылке указанной в QR коде, где
можно найти информацию про данное место, но данная технология, не успев развить
свой полный потенциал, уже замещается Near Field Communication (NFC)[3]. NFC
(Near Field Communication) - коммуникации ближнего поля, высокочастотная связь
малого радиуса действия. Она позволяющая обмениваться данными на расстоянии
10см между устройствами и нацелена в первую очередь на мобильные телефоны.
Алгоритмы и способы обработки изображений используются повсеместно и
используются в приложениях для расширенной реальности, разрабатываются новые
способы коммуникации и обработки информации. Программное обеспечение и
библиотеки компьютерного зрения уже давно общедоступны и имплементированы в
большинстве языков программирования, применение компьютерного зрения всё
расширяется, особенно в инновационных приложениях. Так недавно американская
компания “Ebelin Group” вместе с openFrameworks разработали устройство с
помощью которого, человек может управлять тем что происходит на экране с
помощью глаз.Устройство собой представляет пары очков, камеры и пару
инфракрасных лампочек – Рис.1 Данное устройство стало удачным концептом для
парализованных людей, представляя собой дешёвое устройство для коммуникации.
10
Рис.1 – EyeWriter.
Одна из самых важных, но пока не широкопризнанных концепций нового
поколения – Cloud Computing. В основе Cloud Computing лежат несколько подходов –
доступность через интернет, виртуализация системных ресурсов, и факт в том что
Cloud Computing – это услуга. Самый простой пример – вы арендуете на Cloud
сервере 5Gb данных для хранения данных. Возможности Cloud Computing арендовать целые кластеры серверов, что позволяет достигать максимальной
производительности и минимальному простою серверов.
Новые способы коммуникаций также производят множество инновационных
приложений, особенно в телефонной индустрии, доступность технологий WiFi,
Bluetooth и GPRS принесло мобильной индустрии огромный успех. Множество
приложений написаны для коммуникации именно с данными протоколами и
устройствами. Существуют различные протоколы для передачи изображения и
голоса, одни из самых популярных – Voice over IP (VoIP[5]) и Session Initiation
Protocol (SIP[6]). VoIP – цифровая система связи обеспечивающая передачу речевого
сигнала по Интергенту или любым другим IP сетям. SIP – протокол
стандартизирующий
обмен
мультимедийными
содержанием
в
рамках
пользовательского интернет-сеанса. SIP уже широко используется во всевозможных
приложениях, от видео-звонков, до управления беспилотными передвигающимися
устройствами.
Огромную роль в интеграции информационных систем на данный момент
играет eXtensible Markup Language (XML) – расширяемый язык разметки,
рекомендованный W3C (World Wide Web Consortium) язык разметки. Это текстовой
формат предназначенный для иерархического отображения данных, а также является
11
основой для создания специализированных языков разметки. XML используется
практически везде в IT индустрии, от интеграции огромных систем до обмен данных
в Service Oriented Architecture (SOA), XML трансформации, типизации для форм и
для обозначений параметров HTML страниц.
1.2. Направление исследований
В данной работе исследуются новые подходы к проектированию и разработке
модульных робототехнических систем. В работе проанализированы новые способы
обработки информации и интеракции с пользователем. Большая часть исследования
была проведена в области компьютерного зрения, алгоритмов обработки цифровой
и аналоговой визуальной информации и в области нечёткой логики по определению
объектов.
Исследование проводиться в рамках общедоступных Open Source[7]
технологий. В виду своей доступности были протестированы различные алгоритмы
и подходы к обработке информации.
В работе также рассмотрена индустрия и решения для технического решения
построения модульных роботов.
1.2.1. АКТУАЛЬНОСТЬ ИССЛЕДОВАНИЯ
Новые способы обработки информации и применения робототехнических
систем вводятся повсеместно. Робототехника одна из самых быстро растущих
индустрий мира и в будущем, при любом состоянии рынка является перспективной.
Роботы могут заменять человека на самых нудных, трудных и опасных работах, что
на данный момент и происходит – в сельском хозяйстве уже давно
робототехнические установки доят коров, вспахивают, сажают и поливают урожай.
В больших супермаркетах кассиров заменяют полуавтоматизированые кассы.
Беспилотные и интеллектуальные средства передвижения всё больше приобретают
популярность и данной проблемой занимаются уже тысячи лабораторий по всему
миру.
12
По всему миру в индустрии информационных технологий стараются найти
новые способы взаимодействия с пользователем. Компании предлагают свои
решения, но общепринятого стандарта ещё не имеется, что говорит нахождении
данной концепции в раннем начале, и перспективы данной области предполагают
большой успех.
1.2.2. ОБЪЕКТ ИССЛЕДОВАНИЯ
Объектом исследования в данной работе выступают робототехника и
новые способы взаимодействия с информационными системами. Также в
данной работе затрагиваются темы модульного построения и шаблонизации
программного обеспечения.
1.2.3. ПРЕДМЕТ ИССЛЕДОВАНИЯ
В качестве предмета исследования в работе рассматриваются современные
средства разработки программного обеспечения, в частности программирование
микроконтроллера, объектно-ориентированное программирование, аспектноориентированное программирование и использования UML (Unified Modeling
Language) при разработки дизайна проекта.
Главным аспектов данной работы является исследование компьютерного
зрения, алгоритмов обработки цифровой визуальной информации в рамках слежения
за объектами. Построение информационной системы, использующей комбинацию
алгоритмов и технологий обработки информации для достижения автономности
передвижения в пространстве.
Исследование также рассматривает модульное построение роботехнической
системы с лёгкой заменой как железных, так и программных модулей и отладка под
другие технологии. Рассмотрены различные виды датчиков и комбинирование их с
различными способами обработки визуальной информации для лучшего
взаимодействия робота с окружающей средой.
13
1.2.4. ГИПОТЕЗА ИССЛЕДОВАНИЯ
На основе исследований, но завершению этапа разработки, пользователи
интернета смогут свободно скачать проект, размещённый на Open Source хостинге
http://aj31337.googlecode.com, содержащий открытый код для дальнейшей разработки
системы , UML диаграммы для высокоуровнего и модульного понимания системы и
основную документацию по проекту, поясняющую некоторые решения принятые в
имплементации кода.
Данная система будет содержать готовую операционную систему для робота,
скомпилированную и отлаженную под систему Linux и использование с
микроконтроллерами типа Atmega. Система будет содержать модуль для
передвижения с помощью ног и модуль компьютерного зрения, которые будут
связаны в главной исполнимой программы для достижения автономности
передвижения робота.
1.3. Защищаемые положения
На защиту выносятся следующие положения:
1.) Проведены исследования в области модульного построения программного
обеспечения, в результате чего найдены лучшие способы для реализации
модульного построения информационной системы.
2.) Произведён обзор известных алгоритмов обработки визуальной информации
и разработана методика взаимодействия компьютерного зрения с основной
операционной системой робота.
3.) По результатам обзора алгоритмов и исследования в области модульного
построения, имплементированы особые Design Patterns для реализации
информационной системы.
1.4. Структура работы
Работа предоставлена на 70 страницах, содержит 1 рисунков, 0 таблиц,
1 приложение, 0 наименований литературы, ключевые слова.
14
Полное содержание работы подготовлено на электронном носителе
с названием «Diplomdarbs_Arturs_Jaskevics.pdf».
1.5. Выводы
В данной главе описаны основные положения по исследованию и разработки
робототехнической системы. Приведены примеры актуальности и широкой
применяемости исследуемых объектов в самых разных областях человеческой
деятельности. Сделаны предположения о создании полноценной информационной
системы для роботехнического модульного механизма.
15
2. Обзор концепций разработки робота
2.1. Обзор места практики
Место практики – Accenture Riga Delivery Center, отдел международной
корпорации Accenture. Технологии, использующиеся в Рижском отделе Accenture:
•
JAVA
•
.NET
•
C++
•
SAP
•
Siebel CRM
•
Oracle eBusiness Suite
Accenture – глобальная консалтинговая корпорация, занимающаяся
технологией и аутсорсингом, и насчитывает более 200 000 сотрудников в 49 странах.
Accenture является самой большой консалтинговой компанией в мире и является
одним из крупнейших представителей компьютерных услуг и компанийразработчиков в Fortune Global 500.
Клиентами Accenture в основном являются иностранные компании и, таким
образом основным языком общения является английский. Компания имеет два типа
проектов - разработка и поддержка проектов. Разработка – это создание
информационных систем от проектирования до стадии реализации, а проекты
поддержки – поддержка существующих систем, модификация, ремонт, консультации
для клиентов. В каждом проекте работает несколько сотрудников, где существует
руководитель группы, аналитики, старшие программисты и программисты.
16
2.2. Новые концепции для программирования
Во время практики в компании Accenture мне удалось познакомиться с
различными технологиями и подходами к реализации технологических концепций и
устройств.
Основная технология с которой я работал – Service Oriented Architecture (SOA) это новая парадигма проектирования распределенных интегрированных систем.
Согласно SOA любые части информационных систем имеющие функциональность
рассматриваются как службы (service providers, провайдеры служб), которые
предоставляют свою функциональность другим частям системы посредством
вызовов их функций. Службы являются компонентами, которые могут быть найдены
и вызваны через локальную сеть или Internet. При этом различные службы могут
организовываться (orchestrate) для совместного выполнения определенной задачи.
SOA обеспечивает концептуальные архитектурные шаблоны и платформы для таких
систем. Обычно архитектура таких систем и потоки данных в них близки к структуре
бизнес-подразделений, использующих их, и взаимодействий между ними. В
некоторой степени происходит соединение информационных технологий и бизнеспроцессов на концептуальном уровне. Такое слияние положительно влияет на
понимание информационных систем представителями бизнеса (концепция службы
более наглядна чем термины "репликация", или "удаленный вызов процедуры"), и на
понимание бизнес-процессов разработчиками системы. В качестве платформы для
SOA-приложений обычно используются web-службы, но SOA так же хорошо
применяется в области взаимосвязи аналоговых систем, один из примеров – среда
разработки Microsoft Robotics Developer Studio.
За время практики мне удалось посетить курсы, организованные Accenture, на
тему “Object Oriented Design Patterns”. В разработке программного обеспечения,
шаблон проектирования или паттерн - повторимая архитектурная конструкция,
представляющая собой решение проблемы проектирования в рамках некоторого
часто возникающего контекста.
Обычно шаблон не является законченным образцом, который может быть прямо
преобразован в код; это лишь пример решения задачи, который можно использовать
в различных ситуациях. Объектно-ориентированные шаблоны показывают
17
отношения и взаимодействия между классами или объектами, без определения того,
какие конечные классы или объекты приложения будут использоваться.
После данного курса я смог воплотить некоторые шаблоны в модэле дизайна робота,
что привнесло более модулярную архитектуру в дизайн, где классы меньше зависят
друг от друга и основываются только на интерфейсах
Так же на данном курсе затрагивалась тема Aspect Oriented Programming
(AOP) - новая методология программирования и новый подход к разработке
программного обеспечения. Для объяснения AOP, нужно взглянуть на концепции
OOP (Object Oriented Programming). В объектно-ориентированном подходе как на
уровне системы в целом, так и на уровне отдельных классов присутствует сквозная
функциональность (т.е. та, которая реализована понемногу в разных модулях), а так
же большое количество кода, который фактически не относится к функционалу
системы. На уровне системы это идентификация, защита, логирование, репликации,
сериализация/десериализация, сохранение настроек системы и т.д., т.е. или общий
или «сервисный» функционал, зачастую реализованный в разных частях, в связи с
чем усложняется отладка и поддержка (со временем начинается «расползание»). То
же самое на уровне классов – класс инкапсулирует в себя не только функциональную
часть, но и внутренние «сервисы», обеспечивающие корректность работы – отлов
ошибок, работа с памятью и т.д., которые загромождают код и усложняют чтение
логики – в следствии чего, опять же сложности с отладкой и длительной поддержкой.
Выделение сквозной функциональности в отдельные модули, которые называются
аспектам (aspects). Поведение аспекта в конкретном месте программы (точке
подсоединения, join point) определяет advice (собственно программная реализация
модуля). Все точки подсоединения конкретного аспекта описываются в наборе
pointcut. В результате получается: Весь код, относящийся к определенной
функциональности, собран в одном месте (аспекте), т.е. его проще отлаживать и
поддерживать. Точек подсоединения этого аспекта может быть много, но есть
единый список точек подсоединения, соответственно, это облегчает поддержку
системы. Все особенности работы аспекта в конкретной точке подсоединения
определяются, не выходя из аспекта.
Так как аспектно-ориентированный подход упрощает поддержку системы,
авторы методологии рекомендуют аспектно-ориентированный рефакторинг. Т.е.
изучение системы на предмет сквозной функциональности и вынесения ее в
отдельные аспекты.
18
2.3. Исследование Операционных Систем
Также в компании имеется отдел Embedded Development – разработка
встроенных устройств и электроники. Мне удалось узнать про операционные
системы реального времени – в частности QNX.
QNX основана на идее работы основной части своих компонентов как
небольших задач, называемых сервисами, что перекрикивается с концепциями SOA.
Это отличает её от традиционных монолитных ядер, в которых ядро операционной
системы — одна большая программа, состоящая из большого количества «частей»,
каждая со своими особенностями. Использование микроядра в QNX позволяет
пользователям (разработчикам) отключить любую ненужную им функциональность,
не изменяя ядро. Вместо этого можно просто не запускать определённый процесс.
Система достаточно небольшая, чтобы в минимальной комплектации уместиться
на одну дискету, вместе с этим она считается очень быстрой и должным образом
«законченной» (практически не содержащей ошибок).
Такие микросистемы возможно портировать на микроконтроллер, или массив
микроконтроллеров для использования в разработке электронных устройств который
требуют высокий уровень архитектуры программ.
2.4. Выводы
В данной главе рассмотрена преддипломная практика, во время практики
были приведены технологии для модульного построения программного обеспечения,
которые сильно повлияли на рассмотрение роботехнической системы,
проектирование и создание которой является целью этой работы. За время практики
были приобретены новые умения в области разработки программного обеспечения и
понимания архитектуры моделирования систем. Также после окончания практики
появилось строгое определение - какой тип операционной системы использовать для
дизайна информационной системы робота.
19
3.
Открытые технологии
Размер транзисторов и других электронных компонент с каждым годом
уменьшается, следственно электротехника также снижает свои размеры.
Портативные компьютеры, КПК (Карманные Персональные Компьютеры),
коммуникаторы, Smart Phone, уменьшение устройств идёт рука об руку с развитием
новых технических способностей и размещение большего количества компонент и
модулей на устройстве. С уменьшением размера, устройства всё меньше требуют
охлаждения и многие производители железного обеспечения стараются создавать
устройства с дизайном, учитывающим пассивное охлаждение и не требующих
дополнительных устройств для охлаждения.
Развитие компьютерной технологии поражает своей вариацией для конечного
пользователя, от наимощнейших 4 ядерных i7 процессоров от Intel, до новейших ATI
Radeon видео карт – достигающие уже одной, если не более частоты с процессором в
области доступа к памяти. Но самое главное производство более компактных, с
меньшим потреблением энергии, меньшим нагреванием и возможностью работы при
более широкой вариации температуры окружающей среды компьютерных устройств.
К примеру, компания Intel c 2007 года начала выпускать линейку компьютерных
микропроцессоров x86 и x86-64 архитектур под названием Intel Atom. Главное
преимущество микропроцессора – низкое энергопотребление, для него был
разработан специализированный чипсет - Intel NM10, состоящий из одной
микросхемы и выполняющий функции как «северного», так и «южного моста».
Благодаря такой спецификации были выпущены материнские платы низкого
энергопотребления, уже со встроенным процессором Intel Atom. Данные
материнские платы идут от стандартных размеров до Pico-ITX форм фактора,
составляющего 10 × 7.2 см. Данные виды материнских плат были построены с
учётом пассивного охлаждения и существуют микро блоки питания, которые тоже не
требуют дополнительных устройств охлаждения. Данный микропроцессор отлично
подходит как для настольных ПК, для Netbook, портативного ПК, КПК или
смартфона.
На рынке появляются новые фирмы, предоставляющие услуги по сборке
специализированных компьютеров по невысокой цене. Доступность предоставить
специализированный компьютер – большое преимущество, особенно в области
робототехники, ведь современные компьютеры имеют множество ненужных
компонент, плат и портов, которые существуют только для совместимости между
20
различными устройствами. Но если человек знает заранее, какие интерфейсы и
устройства ему нужны в компьютере – данное решение для него. Такие
специализированные компьютеры не имеют излишнего энергопотребления и стоят в
некоторых случаях дешевле, чем их полноценные аналоги.
Мир компьютерной технологии всё больше завоёвывает концепция
мобильных и карманных устройств. Карманные Персональные Компьютеры (КПК)
уже давно в обиходе, но в настоящий момент на этом рынке происходит стагнация,
так как большим спросом пользуются те же КПК, только со встроенным модулем
сотовой связи или как сейчас принято их называть Smart Phone. Первые идеи о
сочетании телефона и компьютера появились ещё в 1990 году, как только появились
портативные компьютеры, и на данный момент захватила мир. Главное
преимущество Smart Phone – достаточно развитая операционная система и по мере
развития данных технологий, функциональность больше вытисняется из области
железного обеспечения в область программного обеспечения. Одна из самых
быстрых развивающихся индустрий на данный момент – это индустрия продажи
приложений для Smart Phone. К примеру, у iPhone от корпорации Apple есть свой
интернет магазин для продажи программного обеспечения, фильмов и музыки, и вы
можете закачивать приложения прямо на своё устройство, без компьютерных
медиумов. По всему миру производители телефонов и компьютерной техники
начинают признавать важность программного обеспечения, а главное лёгкость
доступа к нему не только для клиента, но и для разработчиков. Важную роль играют
и общество программистов, участвующих в разработке программного обеспечения
для устройств.
3.1 Open Source и Free Software
Изначальная концепция программного обеспечения поддерживала его
свободное и бесплатное распространение, причём не только конечной программы, но
и программного кода для отладки возможных ошибок и возможного дополнения
программы новой функциональностью. В то время компьютерами пользовались
только академические и научные учреждения, и смысла скрывать код не было
нужды. Со временем компьютер стал более персональным устройством и на нём
начали ставить пароли, следственно и программное обеспечение стало закрытым.
21
В октябре 1985 года, Ричард Столлман основал Фонд Свободного
Программного Обуспечения (Free Software Foundation) – некоммерческая
организация, поддерживающая концепцию свободного программного обеспечения.
Позже данная организация сформулировала лицензию свободного программного
обеспечения – GNU General Public License (GPL), и следит за выполнением и
сохранностью данной лицензии по сей день.
Так как в названии организации Столлмана использовалось слово Free (рус.
Бесплатный, Свободный) у бизнес индустрии был жёсткий антагонизм к этой
концепции, пока не появился брат “Free Software” – Open Source. Термин Open Source
(англ. открытое программное обеспечение) был создан вместе с определением в 1998
году Эриком Реймондом и Брюсом Перенсом, которые утверждали, что термин free
software (свободное программное обеспечение) в английском языке неоднозначен и
смущает многих коммерческих предпринимателей. По сути Open Source представлял
собой частный случай Free Software, в виду того что поддерживал все те же
концепции открытого кода, но объявлял, что программное обеспечение не
обязательно распространять бесплатно.
На данный момент концепция Open Source превзошла своего старшего брата
Free Software и начиная с середины-конца 1990-х, свободное программное
обеспечение создаётся многими компаниями и частными лицами, поэтому
сотрудники и добровольцы Фонда работают в основном над юридическими и
организационными вопросами в области свободного ПО.
Даже самые большие корпорации по разработки программного обеспечения
признают важность открытости кода, конечно же, не всего, но это уже огромный
прорыв в мире программного обеспечения. Концепция открытого кода рождает идею
взаимодействия между разработчиками и в целом ускоряет процесс «нахождения
ошибок-отладки-выпускание новой версии». Кроме того, открытое ПО несёт в себе
энергию взаимодействия и открытости к новым людям и идеям, к примеру один их
самых успешных Open Source коллективов, по мимо FSF, является Apache Software
Foundation (ASF). В настоящий момент в ASF 538 члена работающих, восновном
бесплатно, ради свободного программного обеспечения.
Открытость кода играет огромную важность в развитии и приспособлении
программного обеспечения. Выпуская свой код под GPL или OpenSource лицензией,
вы позволяете использовать вами написанный код другими людьми, в том числе и
модифицировать его и исправлять ошибки. Вокруг проектов с открытым кодом
часто образуются сообщества, члены которых плодотворно используют и узнают
22
новые навыки в программировании и системной архитектуры. Код созданный для
этой работы также будет опубликован под GPL лицензией и уже имеет одного
контрибъютора.
3.2 OpenCV и его применения
Одна из самых распространённых библиотек компьютерного зрения, с
открытым кодом, является библиотека от Intel – OpenCV. Главным преимуществом
библиотеки является её доступность – Open Source с поддержкой на различных
языках С, С++, Java, Python, Ruby, MATLAB, и поддержкой на самых популярных
операционных системах – Linux, Windows Mac OS X и на многих JVM. OpenCV
разработана под выполнения в реальном времени, содержит широкую библиотеку
алгоритмов обработки изображений, поддержку XML интеграции, SOA и Integrated
Performance Primitives (IPP) интеграцией для бизнес-клиентов, для оптимизации на
многопроцессорную обработку, также содержит библиотеку компьютерного
обучения Machine Learning Library (MLL),включающую в себя нейронные сети и
интеллектуальные системы.
OpenCV широко применяется в научно-исследовательских работах в области
картографии, выравнивания документов при сканировании, удаление шума из
медицинских изображений, системы безопасности, анализ объектов, системы
контроля качества на производстве, автоматическое наблюдение, а также в
робототехнике и беспилотных летательных, подводных и наземных аппаратов.
Библиотека OpenCV[10] до 1-й версии разрабатывалась в Центре разработки
программного
обеспечения
Intel
(российской
командой
в
Нижнем
Новгороде). OpenCV написана на языке высокого уровня (C/C++) и содержит
алгоритмы для: интерпретации изображений, калибровки камеры по эталону,
устранение оптических искажений, определение сходства, анализ перемещения
объекта, определение формы объекта и слежение за объектом, 3D-реконструкция,
сегментация объекта, распознавание жестов. Эта библиотека очень популярна за счёт
своей открытости и возможности бесплатно использовать как в учебных, так и
коммерческих целях. Для коммерческих пользователей также доступна библиотека
для оптимизации под конкретную архитектуру и процессоры – Integrated Performance
Primitives (IPP).
23
Рис.2.Основные модули библиотеки.
Библиотека OpenCV также содержит множество алгоритмов - для работы с
памятью, обработка ошибок, калибровка камеры, распознавание объектов, анализ
движений, слежение за объектами и многие другие. Также имеются функции и
базовые структуры для создания интеллектуальных и обучающихся систем. К
примеру - нейронные сети, системы построенные по принципу организации и
функционирования биологических нейронных сетей — сетей нервных клеток живого
организма. Данные модели стали использовать в задачах прогнозирования, для
24
распознавания образов, в задачах управления и др. Также реализованы основные
такие популярные алгоритмы как :
- Алгоритм поиска ближайшего соседа (заключается в отыскании среди
множества элементов, расположенных в многомерном метрическом
пространстве, элементов близких к заданному, согласно некоторой функции
близости).
- Метод опорных векторов (набор схожих алгоритмов вида «обучение с
учителем», использующихся для задач классификации и регрессионного
анализа).
- EM-алгоритм (Expectation-maximization - алгоритм, используемый для
нахождения оценок максимального правдоподобия параметров вероятностных
моделей, в случае, когда модель зависит от некоторых скрытых переменных.
Каждая итерация алгоритма состоит из двух шагов).
- Деревья случайного поиска (дерево с убывающей иерархичной
приоритетностью, т.е. Приоритеты элементов в дереве случайного поиска
определяют их положение в дереве в соответствии с правилом: приоритет
каждого элемента в дереве не должен быть более приоритета любого из его
последователей) .
-Деревья решения являются одним из наиболее популярных подходов к
решению задач добычи данных (они создают иерархическую структуру
классифицирующих правил типа "если... то..." (if - then), имеющую вид дерева.
Для принятия решения, к какому классу отнести некоторый объект или
ситуацию).
- Алгоритмы для усиление простых классификаторов (boosters) - подход к
решению задачи классификации, путём комбинирования примитивных
«слабых» классификаторов в один «сильный»
Также имплементированы различные алгоритмы и метода для поиска и
слежения за объектами, самые популярные – цветовые метода и классификаторы
Хаара в совместимости с увеличительными алгоритмами. Далее в работе будут
рассматриваться данные алгоритма и методы, имплементированные в системе.
25
3.3 Микроконтроллеры
Микроконтроллер - микросхема, предназначенная для управления
электронными устройствами. Типичный микроконтроллер сочетает в себе функции
процессора и периферийных устройств, способный выполнять простые задачи.
Использование
в
современном
микроконтроллере
«мощного»
вычислительного устройства с широкими возможностями и внутренней
комплектацией, построенного на одной микросхеме вместо целого набора,
значительно снижает размеры, энергопотребление и стоимость устройств
построенных на его базе.
В виду своей доступности и практичности, микроконтроллеры используются
практически в любом электронном устройстве, к примеру[11]:
- Микроэлектроника в быту –различные часы и таймеры, регуляторы и
автоматы вечернего освещения, музыкальные звонки, различные автоматы.
- Охрана - Сейчас всё больше и больше приобретают популярность охранные
системы на микроконтроллерах, из-за их простоты и надёжности GSM
сигнализации, и сигнализации с ключами IButton, датчики газа и многое
другое, для обеспечения охраны дома, офиса и гаража.
- Цифровые термометры, термореле, термостаты.
- Частотомеры, осциллографы, тестеры для проверки ПДУ, измерителей LC,
пробники для проверки конденсаторов, транзисторов и импульсных
трансформаторов и определения выводов транзисторов. Генераторы
приставок для проверки телефонных аппаратов, пробников для проверки
многожильных кабелей.
- Компьютерная технология и периферийные устройства.
Но главным аспектом разработки проекта с микроконтроллером – является его
простота, практически любой программист, знающий языки Assembler или C, сможет
написать программу для микроконтроллера. Серии микроконтроллеров AVR от
Atmel имеют отличную поддержку и различные инструменты для разработки –
26
симуляторы и интегрированные студии разработки. AVR Studio 4 – одна из
профессиональных интегрированных сред разработки (Integrated Development
Environment - IDE), предназначенная для написания и отладки прикладных программ
для AVR микропроцессоров в среде Windows 9x/NT/2000. AVR Studio 4 содержит
ассемблер и симулятор. Также IDE поддерживает такие средства разработки для
AVR как: ICE50, ICE40, JTAGICE, ICE200, STK500/501/502 и AVRISP. В ближайшие
месяцы будет расширен список поддерживаемых AVR Studio 4 микроконтроллеров и
средств разработки. Обо всех обновлениях можно будет узнать на интернет сайте.
Недавно вышла новая версия AVR STUDIO 5, с новой графической оболочкой и
более автоматизированным интерфейсом, но некоторые старые микроконтроллеры
AVR больше не поддерживаются, что затрудняет переход на данную платформу.
Также имеется AVRStudio32, для разработки 32-битных микроконтроллеров, а также
имеет поддержку в Линуксе. Один из лучших решений компании Atmel, так это
инвестирование
для
разработки
своего
открытого
компилятора
avrgcc,разработанного открытым коллективом GCC, позволяющего программировать на
языке C. Также классически микроконтроллеры поддерживают язык Assembler.
Для программирования микроконтроллера необходим программатор. Все
популярные микроконтроллеры(AVR, PIC, NEC) имеют доступные и недорогие
программаторы. От самых простых, с подключением к LPT, или COM порту
компьютера, до самых сложных с USB интерфейсом, и внутрисхемным
программированием. Также есть микроконтроллера с бутлоадерами, и могут
напрямую подключаться с различными интерфейсами, например, USART, COM,
USB.
Также некоторые микроконтроллеры могут поддерживать операционную
Систему реального времени (RTOS – Real Time Operating System). Позволяющую
использовать высокоуровневую архитектуру.
3.4
Выводы
OpenSource
и
FreeSoftware
концепции
позволяют
использовать
высокоуровневые разработки без оплаты и предоставляют открытый код, который
возможно изменять под свои нужды, под условием что и далее данные технологии
будут распространятся под той же открытой лицензией. Для реализации большинства
решений по навигации роботехнической системы в пространстве будет
27
реализовывать библиотека компьютерного зрения OpenCV. Управление
электроприборами, сенсорами и средствами передвижения требует высокой
временной точности, для чего были выбран микроконтроллер фирмы Atmel. Данные
микроконтроллеры имеют широкую поддержку и разработка программ хорошо
документирована.
28
4. Реализация из возможных технологий
С распространением открытых технологий появилась возможность
использовать
высокоуровневые
концепции
и
технологии,
построение
роботехнической системы стало весьма несложным процессом. Электронные
приборы также стали широко доступны публике, и реализация некоторых частей
может даже быть из утилизированных электронных устройств. Также на рынке
появились уже готовые модули для реализации робота, но самое главное это
появляющиеся стандарты в областях информационной разработки, что позволяет
интегрировать различные технологии.
4.1
Операционная система
Функционирование робота может быть осуществлено простой однопоточной
программой, но с целью построения модульного робота необходима
многопоточность, а также поддержка различных интерфейсов устройств. Для данных
целей целесообразно использовать операционную систему, т.к. она уже имеет
реализации популярных протоколов и функций. Примеры подходящих
операционных систем для реализации робота:
- RTOS (Real-Time Operating System) - Операционная система реального
времени, тип операционной системы, в которой успешность работы любой
программы зависит не только от её логической правильности, но и от времени, за
которое она получила этот результат. Стандарт POSIX 1003.1 даёт определение:
«Реальное время в операционных системах - это способность операционной системы
обеспечить требуемый уровень сервиса в определённый промежуток времени».
- ROS (Robot Operating System) – операционная система для разработки
программного обеспечения робота. ROS первоначально была разработана в 2007
году, под названием ОРУ, в Стэндфордской лаборатории искусственного интеллекта.
В 2008 году развитие продолжается в первую очередь на Willow Garage, институт
робототехники исследований, сотрудничающих в федеративной модели развития.
ROS предоставляет стандартные инструменты и функции операционной системы,
такие как абстрактное представление аппаратных средств, низкоуровневые
29
устройства контроля, кэширование часто используемых функций, передача
сообщений между процессами, и управление пакетами. Он основан на архитектуре
графов, где обработка происходит в узлах, которые могут получать и
мультиплексировать различные сообщения между аппаратными устройствами и
операционной системой. Библиотека ориентирована на Unix-подобные системы
(Ubuntu Linux занесен в список «поддерживающихся»). ROS имеет два основных
"стороны": операционная система стороны ROS, и ROS-PKG, набор
пользовательских пакетов (организованы в наборы называются стеками), которые
осуществляют функции, такие как одновременное локализации и картографии,
планирования, восприятие, моделирование и т.д.
ROS распространяется на условиях лицензии BSD, и исходный код открыт.
ROS-PKG на условиях различных открытых лицензий. . Данная лицензия позволяет
использовать код бесплатно для коммерческих и исследовательских целях.
- Linux - общее название Unix-подобных операционных систем и собранных
для него библиотек и системных программ, разработанных в рамках проекта GNU.
Linux работает на множестве архитектур процессора, таких как Intel x86, x86-64,
PowerPC, ARM, Alpha AXP, Sun SPARC, Motorola 68000, Hitachi SuperH, IBM S/390,
MIPS, HP PA-RISC, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC
V850, Tensilica Xtensa и многих других. Главные преимущества Linux, это его
открытость и огромное количество людей, готовые разрабатывать открытое
программное обеспечение и поддерживать систему.
Ubuntu - операционная система, использующая ядро Linux и основанная на
Debian (операционная система, состоящая как из свободного программного
обеспечения с открытым исходным кодом, так и из закрытых компонентов) .
Основным разработчиком и спонсором является компания Canonical. Проект активно
развивается и поддерживается свободным сообществом . Обычная новая версия
дистрибутива выходит каждые полгода и поддерживается обновлениями
безопасности в течение полутора лет, а версия LTS(Long Time Support), выходящая
раз в 2 года, поддерживается в течение 3 лет. В моём опыте только LTS версии
имеют хорошую поддержку, поэтому для этого проекта была выбранна последняя
LTS версия – Ubuntu 10.04 LTS для 64 битного процессора. Данная версия ОС
поддерживает всё программное обеспечение, упомянутое в данной работе.
Также имеются уже готовые решения аппаратного и программного
обеспечения:
30
- LEGO Mindstorms, NXT и NXT 2.0 - это конструкторы от компании Lego для
создания программируемого робота. В комплект LEGO Mindstorms входит
стандартное ПО NXT-G и Robolab, но также сторонние компании создали свои ПО
для программирования роботов LEGO Mindstorms. Языки программирования для
LEGO Mindstorms бывают графические и текстовые. Наиболее современной средой
программирования является Microsoft Robotics Developer Studio. На Рис.3 изображён
Lego Mindstorm версии NXT, с разчлиными модулями – микрофоном, сонаром,
кнопкой, ультрафилетовым сенсором и моторчиками.
Рис.3 Lego NXT.
- Аппаратная вычислительная платформа - Arduino, основными компонентами
которой являются простая плата ввода/вывода и среда разработки на языке
Processing/Wiring. Arduino может использоваться как для создания автономных
интерактивных объектов, так и подключаться к программному обеспечению,
выполняемому на компьютере (например, Macromedia Flash, Processing, Max/MSP,
Pure Data, SuperCollider). Плата Arduino состоит из микроконтроллера Atmel AVR
(ATmega328 и ATmega168 в новых версиях и ATmega8 в старых), а также элементов
обвязки для программирования и интеграции с другими схемами. На многих платах
присутствует линейный стабилизатор напряжения +5 или +3,3 В. Тактирование
осуществляется на частоте 16 или 8 МГц кварцевым резонатором . В
микроконтроллер предварительно прошивается Bootloader, поэтому внешний
программатор не нужен. Платы Arduino позволяют использовать большую часть I/O
выводов микроконтроллера во внешних схемах. Например, в плате Diecimila
доступно 14 цифровых входов/выходов, 6 из которых могут выдавать ШИМ сигнал,
и 6 аналоговых входов. На Рис.4 пример мини платы Arduino Duemilanove имеющей
13
выходов,
УСБ
джек,
и
аналоговый
выход
31
Рис.4 Arduino Duemilanove.
Arduino также имеет свою интегрированную среду разработки, реализованное
на кроссплатформенном языке Java, включающую в себя редактор кода, компилятор
и модуль передачи прошивки в плату. Среда разработки основана на языке
программирования Processing и спроектирована для программирования новичками,
не знакомыми близко с разработкой программного обеспечения. Язык
программирования аналогичен используемому в проекте Wiring. Строго говоря, это
C++, дополненный некоторыми библиотеками. Программы обрабатываются с
помощью препроцессора, а затем компилируется с помощью AVR-GCC.
4.2
Концепции и технологии программирования
Объектно-ориентированное Программирование (ООП) – концепция
программирования, в которой система рассматривается как совокупность объектов и
классов, взаимодействующих друг с другом.
Основные понятия ООП:
32
Класс по сути представляет шаблон для создания объектов, так с одного класса
можно создать множество объектов. Класс имеет поведение и структуру данных.
Объект или инстанция, является живым представлением класса, имеет состояние, в
то время, когда класс не может иметь состояния.
Абстракция
Минимальный набор значимых характеристик для достаточного описания объекта.
Инкапсуляция
Инкапсуляция – это свойство системы, позволяющее объединить данные и методы,
работающие с ними, в классе и скрыть детали реализации от других классов.
Наследование
Наследование – это свойство системы, позволяющее описать новый класс на основе
уже
существующего,
с
частично
или
полностью
заимствующейся
функциональностью. Класс, от которого производится наследование, называется
базовым или родительским. Новый класс – потомком, наследником или производным
классом.
Полиморфизм
Полиморфизм – это свойство системы использовать объекты с одинаковым
интерфейсом без информации о типе и внутренней структуре объекта.
Объектно-ориентированное Программирование появилось как логическое
продолжение процедурного программирования. Самый популярный язык ООП –
Smalltalk, созданный Аланом Кэйем и Дэном Ингаллсом, именно он стал первым
широко распространённым объектно-ориентированным языком программирования.
В последствии с языка Smalltalk были заимствованы концепции для разработки таких
популярных современных языков как Java, созданная Джеймсом Гослингом , также
язык Objective-C, который используется корпорацией Apple практически во всех их
продукции и C++, на котором и будет вестись разработка в данной работе. Являясь
одним из самых популярных языков программирования, C++ широко используется
для разработки программного обеспечения. Область его применения включает
создание операционных систем, разнообразных прикладных программ, драйверов
устройств, приложений для встраиваемых систем, высокопроизводительных
серверов, а также развлекательных приложений (например, видеоигры). Существует
33
несколько реализаций языка C++ — как бесплатных, так и коммерческих, в данной
работе разработка будет вестись на бесплатной версии от GNU.
В разработке программного обеспечения, используя ООП, возникают
архитектурные и функциональные проблемы, для чего используют шаблоны
проектирования или паттерны (Design Pattern[13]),которые представляют собой
решение проблемы проектирования в рамках некоторого часто возникающего
контекста. Объектно-ориентированные паттерны показывают отношения и
взаимодействия между классами или объектами, без определения того, какие
конечные классы или объекты приложения будут использоваться. Паттерны хорошие решения проектирования, но решают проблемы характерные для
конкретного языка или программной платформы, и потому не универсальные. В
целом паттерны служат как рекомендация для программиста и больше заставляет
задуматься над . В 1995 году вышла известная книга «Приёмы объектноориентированного проектирования. «Паттерны проектирования» (Design Patterns:
Elements of Reusable Object-Oriented Software), написанная бандой четырёх (Gang Of
Four), авторы - Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес [14]. На
наивысшем уровне существуют архитектурные шаблоны, они охватывают собой
архитектуру всей программной системы, данная книга описывает такие шаблоны и
их применение.Главная польза каждого отдельного шаблона состоит в том, что он
описывает решение целого класса абстрактных проблем. Таким образом, за счёт
шаблонов производится унификация терминологии, названий модулей и элементов
проекта. Правильно сформулированный шаблон проектирования позволяет, отыскав
удачное решение, пользоваться им снова и снова.
Аспектно Ориентированное Программирование (АОП) — парадигма
программирования, основанная на идее разделения функциональности для
улучшения разбиения программы на модули.Методология АОП была предложена
группой инженеров исследовательского центра Xerox PARC (где также было создано
и ООП) под руководством Грегора Кичалеса . AspectJ является аспекториентированнм расширением языка Java, и на данный момент является самым
популярным языком АОП.
В ООП часто задумываются такие свойства системы, что реализовать их как
Класс невозможно, особенно данная концепция относится к реализации паттернов
ООП, где функциональность разбросана по всей системе, также её называют
сквозной функциональностью. Для программы, написанной на ООП языке, любая
функциональность, по которой не была проведена декомпозиция (разделение
функциональности), является сквозной. Код становится запутанным даже при
34
реализации нескольких общеизвестных паттернов. АОП ориентируется на вынесения
такой функциональности в отдельные Аспекты, где уже будет указываться, где и как
код будет исполняться, что значительно улучшает постройку модульной системы,
где код не перепутан и легко заменяем. Ведение лога и обработка ошибок - отличные
примеры для Аспекта.
Основные понятия АОП:
Аспект (англ. aspect) — модуль или класс, реализующий сквозную
функциональность. Аспект изменяет поведение остального кода, применяя совет в
точках соединения, определённых некоторым срезом.
Совет (англ. advice) — средство оформления кода, который должен быть вызван из
точки соединения. Совет может быть выполнен до, после или вместо точки
соединения.
Точка соединения (англ. join point) — точка в выполняемой программе, где следует
применить совет. Многие реализации АОП позволяют использовать вызовы методов
и обращения к полям объекта в качестве точек соединения.
Срез (англ. pointcut) — набор точек соединения. Срез определяет, подходит ли
данная точка соединения к данному совету. Самые удобные реализации АОП
используют для определения срезов синтаксис основного языка и позволяют их
повторное использование с помощью переименования и комбинирования.
Внедрение (англ. introduction, введение) — изменение структуры класса и/или
изменение иерархии наследования для добавления функциональности аспекта в
инородный код. Обычно реализуется с помощью некоторого метаобъектного
протокола (англ. metaobject protocol, MOP).
С популяризацией и развитием инструментов для удобной разработки AspectJ,
появилась имплементация АОП для языка C++ - AspectC++. В AspectC++
реализуется такой же подход, как и в AspectJ – набор расширений для ООП языка для
имплементации аспектно-ориентированного подхода. В данной работе будет
использоваться язык АОП AspectC++.
35
4.3
Выводы
Для разработки информационной системы были выбраны технологии более
подходящие для модульной постройки системы. Реализация на высокоуровневом
языке программирования позволяет легко изменять архитектуру систему. Создание
ООП интерфейсов позволяет создавать комплексную систему, абстрагируясь от
имплементации каждого отдельного класса. Базовая система интерфейсов будет
реализовывать основную функциональность систему, и любое добавление к системе
будет её агрегировать. Аспектно-ориентированный подход позволяет легко
имплементировать журнал действий и ошибок системы. Также с аспектноориентированный подход может реализовывать некоторые паттерны системы. Для
контейнера данных технологий была выбрана операционная система Ubuntu. К тому
же операционная система, имплементации языков программирования и
используемые библиотеки являются OpenSource и FreeSoftware проектами. Код
данных информационных систем открыт и его можно приспосабливать под любые
собственные нужды
36
5.
Проектировка технической части робота
Первый робот для данной информационной системы будет являться робот
типа Hexapod. Конструкция данного робота представляет собой шестиногово робота,
с круглым или вытянутым туловищем. Пример данного робота можно посмотреть на
Рис.5.
Рис.5 - Hexapod с вытянутым туловищем.
5.2
Техническое устройство робота
Для реализации робота была выбрана материнская плата Mini-ITX формфактора (170 на 170 мм). Особенность данной материнской платы формата mini-ITX
является наличие впаянного процессора и отсутствие вентилятора. Благодаря
относительно низкому тепловыделению на материнской плате mini-ITX используется
пассивная система охлаждения. В сочетании с SSD накопителями это позволяет
создавать бесшумные компьютеры, не содержащие движущихся механических
деталей.
37
Материнские платы формата mini-ITX за счёт своего размера используются во
встраиваемых
компьютерах,
тонких
клиентах,
нетребовательных
по
энергопотреблению, но высокопроизводительных домашних компьютерах, благодаря
современным технологиям, в основном, компании Intel.
Рис.6 - Материнская плата D525MW.
Системная плата от Intel D525MW для настольных ПК обеспечивает
оптимальную производительность новых процессоров Intel Atom D525. Набор
микросхем Intel® NM10 Express также обеспечивает высокую гибкость настройки и
дополнительные возможности для модернизации благодаря двум разъемам для
одноканальных модулей памяти DDR3 1066/800 МГц, поддерживающих емкость до 4
ГБ. Благодаря рекордно низкому энергопотреблению системную плату Intel D525MW
можно использовать с пассивной системой охлаждения с соблюдением ограничений
по условиям эксплуатации.
Характеристики системы:
-
Форм-фактор Совместимость с Mini-ITX/microATX (170 мм X 170 мм)
Идентификационная строка BIOS MWPNT10N.86A
Процессор Процессор Intel® Atom™ D525
Память
4ГБ DDR3 1066 МГц
Набор микросхем Набор микросхем Intel® NM10 Express
Поддержка локальной сети Интегрированный сетевой адаптер 10/100/1000
38
-
Интерфейсы периферийных устройств
До семи портов USB 2.0 (4 внешних порта и 3 коннектора для подключения
дополнительных портов)
Два порта SATA 3 Гбит/с
Порты PS/2 для клавиатуры и мыши
Один последовательный порт и один коннектор для последовательного порта
Один параллельный порт
Один стандартный разъем шины PCI
Один разъем для мини-карт PCI Express*
Видеоподсистема
Порт VGA
Так как операционная система, работающая на материнской плате, может
иметь достаточный промежуток задержки, а для реализации управления
сервоприводами нам нужна определённая точность данную функциональность будет
реализовать микроконтроллер. Микроконтроллер Atmega16[12] выбранный для
данного проекта является одним из самых популярных в Open Source разработке. Он
имеет два 8 битных таймера и один 16битный, что идеально подходит для
реализации коротких импульсов для управления сервоприводами.
Основные характеристики микроконтроллера ATmega16:
-
AVR RISC-архитектура - архитектура высокой производительности и малого
потребления
система команд содержит 130 инструкций, большинство которых выполняется
за один машинный цикл;
единый 16-разрядный формат команд
производительность 16 MIPS на частоте 16 Мгц
наличие аппаратного умножителя
16 Кбайт Flash ПЗУ программ, с возможностью до 1000 циклов
стирания/записи
512 байт ЭСППЗУ (EEPROM) данных, с возможностью до 100000 циклов
стирания/записи
1 Кбайт оперативной памяти (SRAM)
возможность программирования непосредственно в целевой системе через
последовательные интерфейсы SPI и JTAG
возможность самопрограммирования
39
-
-
возможность внутрисхемной отладки в соответствии со стандартом IEEE
1149.1 (JTAG)
различные способы синхронизации: встроенный RC-генератор с внутренней и
внешней задающей RC-цепочкой или с внешним резонатором
(пьезокерамическим или кварцевым)
внешний сигнал синхронизации
6 режимов пониженного энергопотребления (Idle, ADC Noise Reduction,
Power-save, Power-down, Standby и Extended Standby)
детектор снижения напряжения питания (BOD)
программное снижение частоты тактового генератора
21 источник прерываний (внутренних и внешних)
многоуровневая система прерываний, поддержка очереди прерываний
возможность защиты от несанкционированного чтения и модификации памяти
программ и данных
загрузочный сектор с независимыми битами защиты;
возможность чтения памяти программ во время ее записи;
два 8-разрядных таймера/счетчика с предварительным делителем частоты и
режимом сравнения;
16-разрядный таймер/счетчик с предварительным делителем частоты,
режимом сравнения и режимом внешнего события;
сторожевой таймер WDT;
четыре канала генерации выходных ШИМ-сигналов;
аналоговый компаратор;
8-канальный 10-разрядный АЦП как с несимметричными, так и с
дифференциальными входами;
полнодуплексный
универсальный
синхронный/асинхронный
приемопередатчик USART;
последовательный синхронный интерфейс SPI, используемый также для
программирования Flash-памяти программ;
последовательный двухпроводный интерфейс TWI (аналог I2C)
32 программируемые линии ввода/вывода с уровнями ТТЛ; на эти линии
выведена также поддержка периферийных функций;
напряжения питания 2.7 … 5.5 В.
40
Рис.7 - Atmega16.
Для мультиплексирования сигнала между сервоприводами используется
CD4017 - КМОП счётчик с декодированным выходным сигналом. При каждом
импульсе, принятом на его синхронизирующем входе, микросхема подаёт сигнал на
один из 10 выходов по порядку. При разработке обнаружилось, что данный чип легко
подвержен электромагнитным помехам и было решено установить металлический
щит поверх чипа, а также к каждому проводу, выходящему из чипа, обмотать
дополнительный провод и подключить его к земле.
Рис.8 - CD4017 счётчик.
Для реализации электронной системы на основе микроконтроллера
необходима печатная плата - пластина, выполненная из диэлектрика, на которой
печатным способом сформирована электропроводящая цепь. Печатная плата
41
предназначена для электрического и механического соединения различных
электронных компонентов или соединения отдельных электронных узлов.
Передача данных между материнской платой и печатной платой с
микроконтроллером будет реализовываться через универсальный асинхронный
приёмопередатчик (Universal Asynchronous Receiver Transmitter – UART). Данная
технология переводит данные из последовательной в параллельную форму и обратно.
В микроконтроллере уже реализована технология UART, а для материнской платы
используется USB адаптер на основе чипа PL2303, который реализует UART.
Камера робота представляет собой простую вэб-камеру, без пластмассового
корпуса. Для большего охвата кругозора при статичном положении корпуса, на
модуль камеры прикреплёны два электромотора для изменения положения камеры в
нескольких плоскастях.
В качестве вспомогательных инструментов, для принятие решения
информационной системы роботы, используются ультразвуковые сенсоры, которые
работают по принципу радара или эхолокатора. Сенсор генерирует высокочастотные
звуковые волны и принимает эхо этих волн, после чего вычисляется время, за
которое сигнал отразился в виде эхо и был получен сенсором, далее вычисляется
расстояние до объекта. Так как ультразвуковые сенсоры используют звук, а не свет,
как в инфракрасных и лазерных сенсорах, ультразвуковые сенсоры имеют более
широкое применение в различных средах, на них не влияет окружающее освещение и
цвет объекта.
4.2 Управление движением
Самая популярная реализация ног для данного робота – три моторчика на
каждую ногу, для обеспечение движения ноги в трёх плоскостях. Для реализации ног
робота выбраны сервоприводы Рис.9.
42
Рис.9 – Сервопривод.
Данные приводы управляются через отрицательную обратную связь,
позволяющую точно управлять параметрами движения. По сути, сервоприводом
является любой тип механического привода, имеющий в составе следящий датчик и
блок управления приводом, автоматически поддерживающий необходимые
параметры на датчике согласно заданному внешнему сигналу.
Микроконтроллеры серии Atmega не обладают достаточным количеством
пинов для управления 18 сервоприводами , 2 моторчиками и восприятию сигнала с
сенсора. Для реализации выхода на сервоприводы был выбран счётчик CD4017.
Периодически с материнской платы на микроконтроллер передаётся массив значений
для всех сервоприводов, он содержит количества миллисекунд для посылаемого
сигнала на каждый из серводриводов. Микроконтроллер постоянно посылает
сигналы, в соответствии с временем хранящимся в массиве, на вход счётчика.
Счётчик CD4017 выдает данные значения из своих выходов.
4.3 Дистанционное управление
В материнской плате имеется слот Mini PCI Express — формат шины PCI
Express для портативных устройств, что позволяет встроить небольшой модуль WiFi,
а также модуль Bluetooth. На операционной системе Ubuntu, при наличии WiFi карте
на материнской плате, с лёгкостью можно настроить беспроводные
самоорганизующиюся adhoc сеть. В данной сети клиентские устройства соединяются
на лету, образуя собой сеть. Каждое устройство в сети пытается переслать данные
предназначенные для других, что не является самым безопасным способом передачи
данных, но для близкого дистанционного управления робота подходит. Или при
наличии в окрестностях беспроводного рутера, создать соединение с роботом через
43
местную WiFi сеть. Подключившись к данной сети с любого другого устройства
появляется возможность подключится к серверу робота для передачи команд и
получения информации о системе.
4.4
Выводы
После анализа требований для подачи управляющих сигналов, сделано
решение использовать логический чип для увеличения количества выходов. Также
для реализации подачи сигнала выбран микроконтроллер, использование которого
ганантирует большую точность, чем использование параллельного порта
материнской платы.
Движение ногами робота будут осуществлять сервоприводы, выбрана модель
с ограниченым углом поворота и создаёт некоторые мёртвые зона движения ног, что
позволяет меньше думать о программной реализации движения робота.
Выбрана реализация дистанционного управления через несколько подходов
для возможности подключения с разных устройств и используя разные протоколы.
-возможный подход к реализации дистанционного управления.
44
5.
Проектировка информационной системы робота
В качестве мозга у робота весьма мощная двух ядерная материнская плата с
4ГБ оперативной памяти, что позволяет реализовать мощную информационную
систему с множеством модулей и высокоуровневой архитектурой. Также системных
ресурсов достаточно для асинхронного управления портами и реализации
компьютерного зрения. Информационная система будет состоять из нескольких
базовых классов и интерфейсов для реализации основной функциональности,
остальные классы будут агрегировать систему, для возможного продолжения
системы созданы интерфейсы, что позволяет легко добавлять модули к системе.
Также были разработаны дополнительные модули для системы, различные драйвера
и имплементации частных случаев базовых классов. На Рис.10 изображено общее
устройство системы. Система спроектирована в UML (Unified Modeling Language
ver.3[15]).
Рис.10 – UML диаграмма системы.
45
5.1
УМЛ и устройство системы
Рис.11 – Базовые классы и интерфейсы системы.
Для построения модульной системы используется объектно-ориентированный
подход. Реализуя части системы в виде деревьев наследования и интерфейсов легко
добиться модульной постройки. Создав несколько взаимодействующих классов, на
основе которых можно реализовать наследование, используя в основе программы
созданную базу. Рис.10 показывает некоторые основные классы, использующиеся
системы и их потомки которые имплементируют уже конкретную
функциональность.
Родительские
классы
используются
в
основной
функциональности системы и по сути представляет собой интерфейсы, которые
можно наследовать и легко добавлять новую функциональность системы, а также
используя интерфейс родительского класса мы можем легко подменять модули не
сломав при этом основную функциональность.
46
Рис.10 - Наследование базовых классов.
Для реализации модельного наследования используется агрегация базовых
родительских классов в основных модулях системы. Рис.10 показывает класс
ModuleBus, который знает только о классе Module и использует его, благодаря
наследованию от класса Module возможно из любого класса создать модуль,
подходящий для системы.
Рис.11 - Агрегация в системе для модульной постройки.
47
В данной системе также используются различные паттерны. На Рис.11 также
показан сервисно-ориентированный паттерн Bus. В данной системе ModuleBus
играет роль централизованной системы взаимодействия модулей и будет содержать
всю логику подключения между основными модулями.
Также реализован паттерн Strategy – стратегия, класс на основе агрегации
которого функциональный классы будут принимать решения как им поступать. В
классе стратегии будет реализована вся логика как системы должная себя вести при
разных комбинациях данных. На данный момент реализовано только два паттерна
стратегии – Рис.12.
Рис.12 - Реализация стратегий в системе.
Класс DecisionStrategy реализует стратегию принятия решения, и класс
CvStrategy наследует его, реализуя стратегию компьютерного зрения в системе.
Класс MovementStrategy реализует стратегию передвижения, и класс
BasicMovementStrategy имплементирует только основной интерфейс.
В задачах робототехники также важная роль отводится параллелизму, роботу
необходимо одновременно обрабатывать данные от датчиков, камеры, подавать
48
сигналы для управления ног и принимать решения. Параллелизм в системе
реализован с помощью наследования от Thread класса (Рис.13) , который реализует
функции pThread. pThread —библиотека реализующая стандарт POSIX реализации
потоков выполнения, определяющий API для создания и управления ими.
Рис.13 - Реализация pThread в ООП.
Так как класс Module наследует от класса Thread, все модули в системе будут
работать параллельно. Библиотека pThread также реализует приоретизацию потоков,
следственно возможно присваивать приоритет различным модулям и частям
системы. К примеру критические части системы, как управление движением и
получение команд должны всегда иметь достаточно ресурсов системы для
функционирования.
5.2
Система управления
Для управления ногами робота используются сервоприводы, и для того чтобы
ими управлять необходимо подавать сигнал на 1, 1.5 или 2 миллисекунды, в
соответствии сервопривод повернёт щёточку на право, на середину, или на лево.
Данное управление возможно реализовать через параллельный порт материнской
платы, но для большей точности, реализация будет на микроконтроллере. Передача
сигнала на каждый сервопривод происходит через логический чип CD4017,
микроконтроллер подаёт сигнал на синхронизирующих вход чипа, и чип выдает
49
поочерёдно сигнал из своих выходов. Значения времени длительности сигнала
передаётся на микроконтроллер через UART. Информационная система робота
рассчитывает время подачи сигнала для каждого сервопривода, в соответствии в
какую сторону и на сколько требуется повернуть сервопривод. Значения
сохраняются в массив и передаются на микроконтроллер, чип принимает значения и
сохраняет их в массив. Программа микроконтроллера постоянно выдаёт значения на
логический чип в соответствии с массивом времени.
Для дистанционного управления робота важно чтобы команды посылаемые
доходили в полном объёме, для этого созданы классы TcpServer и TcpClient (Рис.14).
Сервер и клиент основаны на TCP (Transmission Control Protocol) – протокол
предназначенный для управления передачей данных в сетях и подсетях TCP/IP, это
транспортный механизм, предоставляющий поток данных, с предварительной
установкой соединения, за счёт этого дающий уверенность в достоверности
получаемых данных, осуществляет повторный запрос данных в случае потери
данных и устраняет дублирование при получении двух копий одного пакета.
Рис.14 - TCP клиент и сервер.
На роботе также стоит OpenSSH, который предоставлен вместе с
операционной системой Ubuntu. OpenSSH — набор программ, предоставляющих
шифрование сеансов связи по компьютерным сетям с использованием протокола
SSH (Secure Shell). Сервер позволяет подключаться с любого устройства, на котором
есть SSH клиент, после чего можно запустить модуль TCP клиента и обращаться к
роботу через него.
Также в системе реализовано АОП, имплементированное на языке AspectC++.
Аспекты в данной системе используются только для разработки и ведения логов. Во
время разработки больших систем очень важно иметь журнал (лог) всех действий
происходящих в системе. В любой момент разработки программа может перестать
работать и важно отследить, где произошла ошибка. С помощью АОП такой журнал
50
ошибок и отчётов системы. Аспект следит за каждым методом и классом в системе и
пишет в журнал их активность, а также ошибки если какой-либо из потоков
неисправен или вся система не работает.
5.3
Система распознования изображений OpenCV
OpenCV реализует популярные функции и алгоритмы для обработки
изображений, первый необходимый метод для создания системы обнаружения
объектов и людей – является метод находящий определённые цвета на изображении
и его можно использовать для обнаружения достаточно больших участков кожного
цвета на изображении. С помощью метода cvThreshold() изображение сегментуется в
соответствии с HSV (англ. Hue, Saturation, Value — тон, насыщенность, значение)
цветовым пространством. В HSV канале цвет отображается одной переменной Hue,
Saturation отображает насыщенность цвета и Value его яркость, следственно намного
легче отслеживать цвет с помощью одной переменной Hue и задать некую вариацию
насыщенности и яркости изображения. Данная функция является дешёвой в плане
загрузки оперативной памяти и процессора, тем самым является хорошей
вспомогательной функцией для нахождения человека и объектов определённого
цвета на изображении. Данная функция работает хорошо при разнице в цвете фона и
объекта, за которым следят.
Алгоритмы нахождения определённого цвета действует следующим образом:
Получаем кадр.
Сегментуем кадр в соответствии с пространством HSV.
Убираем лишние объекты, меньше чем B_EXCLUDE(переменная содержащая
размеры минимальных объектов разрешенных на окончательном кадре).
Сохраняем координаты самого большого сектора Hue на изображении.
Для обнаружения цвета человеческой кожи сегментация происходит в соответствии с
предположением что вариация Hue 6-30, Saturation выше 50 и Value более 80. Данные
о Hue основываются на предположениях в работе Джейми Шерах и Шаоганг
Гонга[11] по анализу цвета кожи, в данной работе были сделаны 32 пробных
51
фотографии под различными освещениями и цветами фона. Оказалось что 90% цвета
кожи людей попадают в вариацию Hue 6 – 30.
В
библиотеке
OpenCV
реализован
метод
cvHaarDetectObjects(),
обрабатывающий Хаар классификаторы. Классификаторы Хаара – это цифровые
изображения, использующиеся для обнаружения объектов. Обнаружение объектов на
изображении, работая в канале RGB и обрабатывая каждый пиксель на данные
значения представляет собой дорогую операцию, дорогую в смысле системных
ресурсов. Используя набор классификаторов Хаара, возможно выделять
прямоугольные регионы, суммируя их интенсивность и вычесть разницу между
ними. К примеру лицо человека будет иметь тёмные регионы в расположении глаз и
светлый регион между ними, также и нос будет иметь два тёмных региона на месте
ноздрей, один светлый между ноздрями и двы светлых вокруг ноздрей. Алгоритм
Хаар работает на чёрно-белых изображениях и каждый раз необходимо
конвертировать изображение в чёрно-белый цвет.
Рис.. Классификаторы Хаара.
На Рис.. изображён набор таких классификаторов, на основе чего будут
отобраны наиболее эффективные методы для постройки каскада идентификации.
52
Каждый последующий метод каскада имеет более жёсткие условия успешного
прохождения, так как в нём используется большее количество классификаторов,
следственно до конца доходят только самые эффективные методы, которые и
образуют конечный каскад.
Но и для достаточно больших изображений может появиться выше описанная
проблема обработки слишком многих примитивов пикселей RGB. Так и в данной
ситуации классификаторов может быть слишком много, хотя и намного меньше
примитивов, чем рассмотрение варианта с RGB каналом. Для данной проблемы
алгоритма AdaBoost выбрать те классификаторы, которые наиболее эффективно
выделяют данный объект. Представленная методика впервые была описана в статье
«Rapid Object Detection using a Boosted Cascade of Simple Features», Paul Viola,
Michael Jones, 2001. С тех пор получила признание и широкое распространение
области компьютерного зрения, а также и в других областях для обнаружения слабых
аномалий в данных.
В основе имплементации метода лежит алгоритм адаптивного усиления
(AdaBoost). Алгоритм с помощью эталонных значений для фильтрации результата
выбирает слабые классификаторы и в процессе составления или обучения.
Адаптивность алгоритма заключается в том, что в процессе обучения он
подстраивается под наиболее сложно обнаружимые объекты.
Авторы алгоритма Haar предлагают использование препроцессинга
найденных прямоугольников изображений перед их обработкой. Под
препроцессингом понимается обработка изображения с целью повышения качества
распознавания. Предлагается два основных направления препроцессинга: снижение
шума изображения и цветокоррекция. Цветокоррекция обусловливает улучшение
распознавания за счет создания более естественного, "гладкого" цвета объекта, что
позволяет уменьшить разность градиентных переходов цвета. Для цветокоррекции
используется алгоритм cvEqualizeHist(), которое принимает чёрно-белое изображение
и выравнивает распределение света на картинке, что увеличивает общий контраст
изображения и делает более явные области для обнарежения каскадами Хаара.
Снижение шума и разглаживание картинка даёт возможность корректно
обрабатывать участки изображения небольшого размера, для которых очень велико
влияние шумов в изображении. Для снижения время обработки функция
обнаружения цвета кожи ориентируется на определённые участки при
необходимости. Также снижение обработки над изображением – изображение
возможно укменьшить, что снижает качество , но и почти в два раза снижает
53
стоимость обработки, и в нашем случае тем самым фильтирует лица, находящиеся
далеко от камеры.
Поиск объектов по алгоритму Haar чувствителен к ориентации объекта, он
обладает 20 градусной устойчивостью к поворотам изображения. Для обнаружения
объекта в произвольном положении, алгоритм поворачивает изображение 360 / 20 =
18 раз. Для ускорения алгоритма и избежания большого количества поворотов ,
используются дополнительные повёрнутые классификаторы.
В достаточно динамичном видеопотоке бывают ложное срабатывание
алгоритмы, которое в отличии от истинного, не обладает устойчивостью в смысле
повторного
обнаружения
объекта.
Следовательно,
для
обнаруженных
предполагаемых объектов, предлагается произвести повторную проверку
обнаружения в соответствующих областях на изображении. И воспринимать как
обнаруженный объект только последовательность обнаружений.
При обнарежении объекта с помощью каскадов Хаара, возможно применить
алгоритм повторно, на более узком месте пространства того же изображения, для
поиска паттернов каскада в области уже обнаруженного объекта. Таким способом
возможно обобщить поиск и распознование объектов. Пример – обнаружение целого
тела целовека, в области которого также возможно найти лицо. В системе будет
использоваться только распознование лица[8], в области которого будет дочерный
каскад для обнаружения людей с очками.
Ещё один вспомогательный метод для системы принятия решение –
обнаружение линий и вычисление где они сходятся. В условиях коридоров, дорог и
пространств с вдоль идущими прямыми линиями данный алгоритм будет сообщать о
возможной дороги перед камерой[9]. Для данной функции используется выделение
границ – способ для обработки изображения и компьютерного зрения, основывается
на алгоритмах, которые выделяют точки цифрового изображения, в которых резко
изменяется яркость или есть другие виды неоднородностей:
- изменения глубины
- изменения ориентации поверхностей
- изменения в свойствах материала
- различие в освещении сцены
54
Для выделения границ используется детектор Кенни cvCanny(), который
реализует следующие шаги:
- Убрать шум и лишние детали из изображения
- Рассчитать градиент изображения
- Сделать края тонкими
- Связать края в контура
Таким образом, получается бинарное изображение содержащие контуры из пикселей.
Далее для обнаружения линий изображение передаётся методу cvHoughLines2(),
который реализует преобразование Хафа (Hough Transform). Данный метод
предназначен для поиска линий, кругов и других простых форм на изображении с
использованием процедуры голосования. Процедура голосования применяется к
пространству параметров, из которого и получаются объекты определённого класса
фигур в накопительном пространстве, которое строится при вычислении
трансформации Хафа. Преобразование Хафа основывается на представлении
искомого объекта в виде параметрического уравнения (уравнение для линии y =
a*x+b ). Затем, берётся бинарное изображение (результат работы детектора границ
Кенни). В основе теории преобразования Хафа лежит утверждение, что любая точка
двоичного изображения может быть частью некоторого набора возможных линий. На
основе этого утверждения перебираются все точки границ и делается
предположение, что точка принадлежит линии искомого объекта — т.е. для каждой
точки изображения рассчитываются нужные уравнения линий, к котором она
потенциально принадлежит, которые сохраняются в пространстве Хафа. Далее
делается обход пространства Хафа и выбор максимальных значений, за которые
проголосовало большее количество пикселей картинки, что и даёт нам параметры
для уравнений искомого объекта. Линии сохраняются в матрицу, и алгоритм по
поиску пересекающих точек берёт каждые две линии:
- Параметрическое уравнение линии
y = m1*x + b1
y = m2*x + b2
- Мы находим общую точку, так что мы приравниваем их
55
m1*x + b1 = m2*x + b2
- Находим x (если x=0 , линии параллельны)
x = (b2 - b1)/(m1 - m2)
- Заменяем x в одном из параметрических уравнений и находим y.
- Точка пересечения в координатах (x,y).
В соответствии с расположением точки относительно центра изображения
можно делать выводы о нахождении возможной дороги.
5.4
Система принятия решения
Система принятия решений реализована в паттерне стратегии. Класс
DecisionStrategy представляет собой базовый класс для принятия решений, который
будет использоваться в основном потоке системы. Стратегия будет вызывать базовые
модули из класса ModuleBus и использовать их методы для реализации решения.
Первая реализованная стратегия использует компьютерное зрение, а в
частности библиотеку OpenCV и её различные алгоритмы. Главное решение делается
при обнаружении человеческих лиц, тогда робот решает подойти к человеку. Для
этого используется обнаружение кожи и последующее обнаружение лица на
субрегионе изображения. Для того чтобы робот не пытался постоянно просчитать
куда ему надо идти при виде человеческого лица, делается задержка на обнаружение
лиц в видео потоке и возобновляется, когда робот сделал пару шагов.
Для навигации в пространстве используются данные с сенсоров ультразвука,
при обнаружении объекта перед собой принимается решение идти в право или в
лево. Также для навигации в пространстве существует вспомогательный метод по
нахождению потенциальных дорог. Если на экране находится много разбросанных
повсюду, пересекающихся линий система принятия игнорирует данные этого метода.
56
5.5
Open Source проект и контрибьюторы
Данный проект разработан под лицензией GNU GPL ver.3 и опубликован на
популярном хостинге Google Code, где есть возможность выбрать из 9 возможных
лицензий: Apache, Artistic, BSD, GPLv2, GPLv3, LGPL, MIT, MPL и EPL. Также у
данного проекта имеется один контрибьютор, помогающий с отладкой системы.
Сервис Google Code - предназначен для разработчиков программного
обеспечения и является хранилищем для различных разработок. Один из основных
сервисов — система контроля версий. Доступные системы контроля версий —
Subversion и Mercurial. В системе управления версиями есть репозиторий для
хранения исходного кода, и можно посмотреть любую версию исходного кода. Также
можно просмотреть разницу между двумя последовательными версиями.
Но главные плюсы репозитория Google Code – это его открытое сообщество.
Имеются такие функции как запрос обзоры кода. Обзор кода представляет собой комментирование чужого кода, указывая недостатки прямо к участкам кода. Cистема
баг-трекинга - если в программе была найдена ошибка, то ее можно там
зарегистрировать с описанием, менеджер проекта может назначить ее исправление
определенному разработчику, а тот исправить. Сервис доступен и бесплатен для
использования.
57
6.
Hexapoda sistēmas izstradāšana
6.1
Ievads
Robotika un mehatronika ir viens no visvairāk intriģējošiem tehniskās nozares,
tagad ražošanas nozare nav labi zināmu līderu, bet robotika izmantošana jau ir ne tikai
tehnoloģiskos procesos, kuri prasa augstu precizitāti, un arvien vairāk iekļauj cilvēka dzīvē.
Jau Latvijā ir pazīstamie robotehnikas uzņēmumi, piemēram, iRobot, kas ražo un tirgo
robotus putekļusūcējus un robotu zāliena pļāvējus. Tā kā robotika tikai sāka savu attīstību,
Latvijai ir laba iespēja atrast savu vietu šajā nozarē.
Šī darba pētījuma priekšmets ir modernas programmatūras izstrādes rīku
izmantošana, mikrokontrolieru programmas izstradāšana, objektorientētā programmēšana,
aspektorientēta programmēšana un UML (Unified Modeling Language) modelēšana.
Galvenie uzdevumi šajā darbā ir izpētīt datorredzes algoritmus un digitālās vizuālās
informācijas apstradāšnu. Tiek uzbūvēta informācijas sistēma, kas izmanto algoritmu
kombinācijas un dažādas informācijas apstrādes tehnoloģijas, lai sasniegtu autonomiju
kustību telpā.
Pētījumā arī ņem vērā moduļveida konstrukcijas uzbūvi, vieglai robota daļu, gan
dzelzs un programmu moduļu nomaiņai, kā arī integrēšanu ar citiem tehnoloģijām. Ir
paredzēts dažāda veida sensoru integrācija, kas veido informacijas apstrādes paplašināšanu,
lai labāk mijiedarboties ar vidi.
Interneta lietotāji var brīvi lejupielādēt projektu, kas atrodas uz Open Source hosting
http://aj31337.googlecode.com, tas satur atvērto pirmkodu turpmākai sistēmas attīstībai,
UML diagrammas ar augsta līmeņa sistēmas izpratni.
6.2 Robotehnika un jauno tehnoloģiju integrācija
Viena no aktuālākajiem robotikas problēmam – robota autonomitāte. Saskaņā ar
autonomiju nozīmi - robots ir jāspēj sadarboties ar apkārtējo vidi un atrast veidus, kā
pārvietoties bez cilvēka palīdzības. Pašlaik amatieru robotikā tiek plaši izmantota ierīces lai
58
sasniegt robota mijiedarbību ar apkartējo vidi, piemēram, attāluma mērītāji (ultraskaņas,
lāzera), video kamera ar mehāniskām atsauksmēm, stereo video kamerās. Papildus šīm, ir
ari parallelās pārvaldības uzdevuma problēma, jo vajag paralēli apstrādāt visas robotu
ierīces (dzinēji, šasijas, sensoru, kameru uc), konfigurācijas un vadības signālus. Robotikas
izveidošanā ir tendence moduļu arhitektūru pielietošanai un plašu zināmu risinājumu
pielietošana. Piemēram, viens no nedaudzajiem gudriem lēmumiem bija veikts uzņēmuma
Texas Instruments, tas bija mikrokontrolleru izveidne ar visiem zināmajam
programmēšanas valodas C atbalstu. Aug jauni uzņēmumi un organizācijas, kas darbojas
robotu platformu izveidne un standartizācijā, to būtība ir nodrošināt produktu, kas dod
iespējas integrēt dažādas ierīcēs un atbalsta populārās datu pārsūtīšanas protokolu. Uz
šādām platformām var ātri izveidot prototipu un viegli nomainot daļas.
Robotikas nozīme darbā un mājās saņem lielu atzinību
Automatizētas rūpnīcas attīstās un palielina propdukta kvalitāti, jau
prototipi kas var izveidot sev lidzīgus, piemēram, 3D printeri, kas
Ražošanas tehnoloģiju nākamajās desmitgadēs attīstība veicinās
sistēmu izveidni, iekārtas, kas spēj radīt savas kopijas.
6.3
mūsdienu pasaulē.
ir izveidoti mašīnu
var radīt pats sevi.
pašreproducējošiem
OpenCV
OpenCV ir plaši izmantots zinātniskās pētniecībās - kartogrāfija, dokumentu
pielīdzināšanu skenēšanā, troksnis izņemšanas no medicīniskās attēlveidošanas, drošības
sistēmas, objektu analīzē, sistēmas kvalitātes kontroles ražošanā, automātiskās uzraudzības,
kā arī robotikas un bezpilota, zemūdens un sauszemes transportlīdzekļi .
Bibliotēka OpenCV [10] pirmā versija tika izstrādāta programmatūras
izstrādes centrā Intel (krievu komanda no Ņižņijnovgorodas). OpenCV ir rakstīts augsta
līmeņa valoda (C/C++) un satur dažādus algoritmus: attēlu interpretācijai, kameras
kalibrēšanu, standartu, optisko traucējumu novēršanas, definīciju līdzību, analizējot objektu
kustošanu, objekta formu un objektu uzskaite, 3D-rekonstrukcija, segmentāciju, žestu
atzīšana. Šī bibliotēkā ir ļoti populāra, pateicoties tā atvērtībai brīvai pielietošanai, gan
izglītības,gan komerciāliem mērķiem. Biznesa lietotājiem ir pieejama arī bibliotēkā, lai
optimizētu konkrētai arhitektūrai - integrētās snieguma Primitīvi (IPP).
OpenCV īsteno populārās kompjuter redzes īpašības un algoritmus attēlu apstrādei,
nepieciešams vispirms metodi, lai izveidotu sistēmu, lai noteiktu objektu un cilvēku - ir
59
metode, kā atrast konkrētas krāsas attēlu un to var izmantot, lai noteiktu diezgan plašu
teritoriju ādas krāsā attēlā. Metodi cvThreshold () segmento attēlu saskaņā ar HSV (Hue,
Saturation, Value - tonis, piesātinājums, vērtība) krāsu telpā. Hue nosaka krāsu kanālu,
Saturation parāda krāsu piesātinājumu un Value tā spilgtuma vērtības, līdz ar to daudz
vieglāk izsekot krāsu, izmantojot vienu mainīgo Hue un uzdot dažus variāciju
piesātinājumu un spilgtumu. Šī funkcija iprasa nedaudz atmiņas un CPU, tādēļ ir labs palīgs
funkciju, lai atrastu cilvēku, un noteiktas krāsas attēlā. Šī funkcija darbojas labi, kad krāsas
fonā un krāsas objektā ir dažādas .
6.4
Mikrokontrollieri
Mikrokontrolleru - IC izstrādāta, lai kontrolētu elektroniskās ierīces. Tipisks
mikrokontrolleris apvieno CPU funkcijas ar perifērijas ierīcēm, kas spēj veikt vienkāršus
uzdevumus.
Mūsdienu mikrokontrollera uzbūvē izmanto "spēcīgs" skaitļošanas ierīci ar
daudzām funkcijām, kas balstās uz vienas mikroshēmas. Tāda pieeja ievērojami samazina
izmēru, enerģijas patēriņu un izmaksas ierīču uzbūvē.
Ņemot vērā to pieejamību un izmantojamību, mikrokontrolleri tiek izmantoti
gandrīz jebkuru elektronisko ierīci, piemēram, [11]:
- Mikroelektronika mājās, dažādi pulksteņi un taimeri, automātiski nakts gaismas,
mūzikas, dažādu mašīnu kontrolieri.
- Veselība - kļūst populāra drošības sistēmu uz mikrokontroliera bāzi, jo tās ir
vienkāršs un uzticamīs GSM signalizācijas un trauksmes līdzeklis, kuru izmanto ar
atslēgām iButton. Gāzes sensori un daudzas citas lietas, lai aizsargātu jūsu mājās,
birojā un garāža.
- Digitālā termometri, termostati, termostati.
- Frekvences skaitītāji, Osciloskopi, testētājiem, lai pārbaudītu RC, testēšanas
kondensatori, tranzistori, pulsa transformatori un tranzistori. Ģeneratoru kastes, lai
pārbaudītu telefona aparāti, zondes testēšanas multivada kabeļiem.
- Datoru tehnoloģiju un datoru perifērijas ierīces.
60
Bet galvenais aspekts mikrokontroliera projekta attīstība - ir tās vienkāršība, gandrīz
jebkurš programmētājs, kurš zina valodu Assembler vai C, varēs uzrakstīt programmu
mikrokontrollierim. Mikrokontrolleru sērijai AVR no Atmel ir lielisks atbalsts un uzbūves
instrumentu šķirnes - simulatori un dažādas integrētas attīstības studijas. AVR Studio 4 viena no profesionāliem IDE (integrētā izstrādes vide), kas ir paredzētas rakstīšanai un
atkļūdošanas AVR mikroprocesoru programmas vidē Windows 9x/NT/2000. AVR Studio 4
iekļauta montētājs un simulators. IDE atbalsta arī programmatorus no AVR serijas: ICE50,
ICE40, JTAGICE, ICE200, STK500/501/502 un AVRISP. Tuvākajos mēnešos tiks
pagarināts sarakstu ar AVR Studio 4 mikrokontrolleri un attīstības instrumentiem. Visi
atjauninājumi būs pieejami tīmekļa vietnē. Nesen izveidota jaunā versija AVR STUDIO 5
ar jaunu grafisko lietotāja interfeisu un automatizētu saskarni, tomēr daži vecāki AVR
serijas mikrokontrolieri IDE vairs neatbalsta, kas padara pāreju uz šo platformu diezgan
grūtu. Ir arī AVRStudio32, lai attīstītu 32 bitu microcontrollers, arī ar Linux atbalstu. Viens
no labākajiem risinājumiem no Atmel, kā investīciju attīstībai atklātu kompilatoru AVRGCC, kuru ir izstrādjis atvērtais kolektīvs GCC, kas ari izveidoja atklāto C kompilatoru.
Gandrīz visi mikrokontrolieri atbalstu valodu Assembler.
6.5
Operētājsistēma
Linux - ir Unix-veidīga operētājsistēma, kuras sirdī ir ieturētas UNIX atbalstītas
bibliotēkas un programmatūras, šī operētājsistēma ir izstrādāta saskaņā ar GNU projektu.
Linux darbojas uz daudziem procesoru arhitektūrām, piemēram, Intel x86, x86-64,
PowerPC, ARM, Alpha AXP, Sun SPARC, Motorola 68000, Hitachi SuperH, IBM S/390,
MIPS, HP PA-RISC, AXIS CRIS, Renesas M32R, Atmel AVR32, Renesas H8/300, NEC
V850, Tensilica Xtensa, un daudziem citiem. Galvenās Linux priekšrocības ir viņa atvērtība
un lielu skaitu cilvēku kas to lieto un ir gatavi izstrādāt atvērtā koda programmatūru un
atbalstīt sistēmu.
Ubuntu - операционная система, использующая ядро Linux и основанная на Debian
(операционная система, состоящая как из свободного программного обеспечения с
открытым исходным кодом, так и из закрытых компонентов) . Основным
разработчиком и спонсором является компания Canonical. Проект активно
развивается и поддерживается свободным сообществом . Обычная новая версия
дистрибутива выходит каждые полгода и поддерживается обновлениями
безопасности в течение полутора лет, а версия LTS(Long Time Support), выходящая
раз в 2 года, поддерживается в течение 3 лет. В моём опыте только LTS версии
61
имеют хорошую поддержку, поэтому для этого проекта была выбранна последняя
LTS версия – Ubuntu 10.04 LTS для 64 битного процессора. Данная версия ОС
поддерживает всё программное обеспечение, упомянутое в данной работе.
Ubuntu - operētājsistēmas, kas izmanto Linux kodolu un pamatojoties uz Debian
(operētājsistēma, kas sastāv gan brīvās programmatūras un atvērtā pirmkoda, kā arī no
aizvērtiem sastāvdaļam). Galvenais izstrādātājs un uzņēmuma sponsors - Canonical.
Projekts ir aktīvi atbalstīts un balstās bezmaksas kopiena principiem. Parasti jaunā versija
publicējas reizi sešos mēnešos, un to atbalsta drošības atjauninājumus 18 mēnešus, un LTS
(Long Time Support) versiju, ar skatu ik pēc 2 gadiem, un atbalsta 3 gadus. Pēc manas
pieredzes, tikai LTS versijas ir labs atbalsts, lai šo projektu tika izvēlēta pēdēja LTS versija
- Ubuntu 10,04 LTS 64 bitu procesoriem. Šī OS versija atbalsta visu programmatūru, kas
minētas šajā dokumentā. Operētājsistēmabija uzcelta uz mini ubuntu kodola, kas ļauj
uzinstalēt tikai vajadzīgus drajverus un sistēmas programmas.
Priekš robota pārvietošanai bija izlemnts izmantot mikrokontrolieru, jo tas garantē
laika precizitāti, kas ir vajadzīgs lai kontrolēt servomotorus. Mikrokontrolieris tiks
savienots ar kompjuteri un Ubuntu OS caur USB interfejsu, izmantojot TTL protokolu
priekš UART transakcijām. Uz Ubuntu OS būs iedarbināta programma uzrakstīta C++
valodā, kura darīs lēmumus kur robotam iet un ka mijiedarboties ar apkārtējo vidi.
6.6
Sistēmas struktūra un UML diagrammas
C++ programma ir robota smadzenes, kuram ir ļoti daudz resursu - divkodolu
mātesplate ar 4GB RAM, kas ļauj izveidot informācijas sistēmu ar vairākiem moduļiem un
augsta līmeņa arhitektūru. Tā kā sistēmas resursi ir pietiekami, lai paralleli pārvaldīt robota
kustību, sensoru apstrādi un datoru redzes īstenošanu. Informācijas sistēma sastāv no
daudziem bāzes klasiem un viņu saskarnēm lai īstenotu pamata funkcionalitāti, atlikušie
klasi apkopj sistēmu, ir iespējams paplašināt sistēmu, ir uzbūvēts interfeiss, kas ļauj viegli
pievienot moduļus sistēmai. Arī ir izstrādāti papildus moduļi sistēmai, dažādi vadītāji un
pamatbāzes klases implementaciju īstenošana. 10.attēlā redzams kopējais sistēmas dizains.
Sistēma ir izstrādāta UML (Unified Modeling Language ver.3 [15]).
62
Att.10 – UML sistēmas diagramma.
Diagrammā ir redzama visa sistēmu pirmā versijā, Hexapod klase realizē main
metodu visā sistēmā, tas nozīmē ka tas ir pirmā klase kas sāk darboties kad sistēma starto.
Hexapod klasē ir glabājas meta informacija, konstantu definicijas, tā izmanto ModuleBus
un DecisionMaker lai nodarbināt funkcionālo un strāteģijas sistēmas. Savukārt ModuleBus
satur dažadus moduļus – komunikacijas, dator redze, driveri, un DecisionMaker satur
robota strateģijas, kā viņš uzvedas.
63
Att.11 - Primārās klases un sistēmas interfejsi.
Moduļu sistēmas Celtniecībā izmanto objektu orientētu pieeju. Sistēmas daļas ir
realizētas koku mantojumos un interfejsiem, ark o var viegli sasniegt modulāro
konstrukciju. Izveidojot vairākas klases, kas mijiedarbojas cits ar citu, tada sistēmā var
īstenot mantojumu un jaunu funkcionalitāti, izmantojot programmas pamata klases un tos
mantojot. 10.attēlā parādīti daži no svarīgākajiem klasēm ka sir izmantoti sistēmā, un viņu
pēctečiem, kuri jau īsteno īpašu funkciju. Vecāku klases tiek izmantoti pamata
funkcionalitāti sistēmas un būtībā tie ir interfeisi, kuri varētu būt mantoti, lai ērti pievienot
jaunu funkcionalitāti ar sistēmu, kā arī izmantojot pamatu klases, mēs varam viegli
nomainīt moduļus bez pārrāvuma.
64
Attēls 10 – Pamata klases mantojumi.
Lai īstenotu mantojuma modeļu, ir izmantota agregacija no pamata klasēm un
mantošana no viņiem. Attēls 10. parāda klasi ModuleBus, kurš zina tikai klases modulis un
izmanto to, no Module klases var mantot jebkura klase kurai vajag parallelo funkcionālitāti,
ar šito mantojumu var izveidot moduli, kas ir piemērots sistēmai.
Att. 11 - Agregācija sistēmā, moduļu konstrukcijas.
65
Šī sistēma arī izmanto dažādus modeļus. Attēls 11. parāda arī uz pakalpojumiem
orientēto modeli - Bus. Šajā sistēmā ModuleBus ir centralizēta sistēma kura sasniedz
mijiedarbību starp moduļiem, un ietver visu loģikas saikni starp galvenajiem moduļiem.
Arī ir īstenots stratēģijaas patterns - Strategy, klases balstītas uz agregāciju, kuru
funkcionālitāte būs izlemt, kā viņi robots uzvedas un staigā. Stratēģijas klasē tiks īstenota
visa loģika, kā sistēmai būtu jārīkojas saskaņā ar dažādiem datu kombinācijam. Šobrīd ir
īstenoti tikai divi stratēģijas patterni - Fig.12.
Att.12 – Strateģijas patterna realizācija sistēmā.
DecisionStrategy klases un klases kas manto no viņa, piemēram – CvStrategy,
īsteno lēmumus sistēma, īstenojot stratēģiju datoru redzes sistēma. MovementStrategy
klases īsteno stratēģiju pārvietošanā un BasicMovementStrategy klases īsteno tikai pamata
interfeisu.
Robotikā svarīģu lomu spēlēa paralēlisms, robotam ir vienlaicīgi jāapstrādā datus no
sensoriem, kamerām, kontrolētu kājas un pieņemt lēmumus. Paralēlismu sistēmā īsteno
mantošana no Thread klases (Att. 13), kurā ir īstenoti pThread funkcijas. pThread – ir
bibliotēka, kura īsteno POSIX standarta thread tehnoloģijas, kas nosaka API pThread
izveidnei un pārvaldīšanai.
66
Att. 13 - pThread realizācija objekt-orientetā klasē.
Tā kā klases modulī manto no Thread, visi sistēmas moduļi darbojas paralēli.
pThread bibliotēkas īsteno arī prioritātes thread tehnoloģijas, attiecīgi var piešķirt prioritāti
dažādiem moduļiem un sistēmas daļām. Piemēram kritiskās daļas sistēmu, kā staigāšanas
pārvaldība un komandu pieņēmšanai vajag vienmēr ir pietiekami daudz sistēmas resursu,
lai darbotos.
6.6
Secinājumi
Izveidota sistēma nodrošinās gatavu operētājsistēmu robotam, kompēlētu un
piemēroto Linux sistēmai un izmantojot mikrokontrollieru, piemēram, ATMEGA16.
Sistēma satur moduļu pārvietošanai ar kājām un dator redzes modulis ir savienots ar
galveno izpildāmo programmu, lai sasniegtu autonomiju kustību robotam.
Veiktais darbs modulārā programmēšanā, ir atrasts labakais veid kā īstenot modulāro
informācijas sitēmu robotam uz Linux operetājsistēma un ar dator redzes moduli. Ražots
pārskatu par zināmu algoritmiem apstrādei vizuālā informācija un datora redzes
mijiedarbības tehnikas ar pamata operētājsistēmu robots. Pēc algoritmu pārskatu un
pētījumu modulāras konstrukcijas jomā, bija izlemts īstenot īpašus Design Patterns
informācijas sistēmas uzbuvei.
67
7.
Заключение и общие выводы
В ходе исследования были разработаны концепции для коммуникации модулей
в системе, применены дизайн паттерны для реализации часто встречающихся
проблем архитектуры объектно-ориентированных языков, в частности C++. Создана
система для управления роботом, использующая различные модули - для принятия
решения, визуального восприятия и управления электронными устройствами.
Разработана специализированная сборка Linux ядра для флэш носителя.
Спроектирована система для управления сервоприводами с помощью
микроконтроллера и логического чипа, а также спроектирована коммуникация
микроконтроллера с операционной системой. Разработан модуль компьютерного
зрения для операционной системы робота.
7.1 Анализ разработки проекта и общие заключения, полученные в ходе
разработки проекта.
Анализируя операционные системы и их компонентры был сделан вывод
скомпилировать ядро и включить только нужные модули для освобождения
системных ресурсов от ненужных сервисов, как принт сервер, графику и различных
системных бэкграунд процессов.
Бал разработан способ управления сервоприводами, используя минимальные
ресурсы
микроконтроллера.
Используя
логический
счётчик
сигнал
мультиплексируется на 18 каналов. Также разработано программное обеспечение для
управления сервоприводами микроконтроллера.
В разработке использовались высокоуровневые архитектурные решения,
применены концепции ООП и дизайн паттернов. Был разработан каркас для
роботехнической системы, состоящий из модульной системы, способной на
параллельное исполнение действий. Для базовых классов системы были
спроектированы интерфейсы, тесно взаимодействующие друг с другом. Благодаря
интерфейсам систему легко дополнить и встроить новые модули. С помощью
паттернов реализованы классы, которые могут иметь различные способы поведения
68
и функциональность при одинаковом интерфейсе, паттерн стратегия позволяет легко
заменять различную функциональность системы и легко заменять не до постройки, а
во время операции системы.
Для навигации разработана система принятия решения основывающаяся на
компьютерном зрении. Компьютерное зрение в системе реализована с помощью
открытой библиотеки OpenCV, создано несколько подходов к восприятию
визуальной информации – чем являются шаблоны для модуля принятия решения.
Система в состоянии распознать человеческое лицо и двигаться в его направлении.
Также реализован шаблон для ориентации в коридорах и на дорогах,
воспринимаюший вдоль идущие линии на изображении.
По окончанию анализа разработан проект для робота, содержащий базовую
функциональность, отвечающий критериям параллельной обработки различных
частей системы. Система предназначена для продолжения, содержит модули,
поддерживающие интерфейс основных классов, которые возможно продолжить,
создав свои классы или дополнить. Проект находится по ссылке
http://aj31337.googlecode.com .
69
Литература
[1]
http://habrahabr.ru/blogs/robot/72756/ (Революция в сфере робототехники)
[2]
http://en.wikipedia.org/wiki/Kinect (Kinect)
[3]
http://ferralabs.ru/index.php?news=6251 (Google решает убрать QR-коды. В
пользу NFC)
[4]
http://ru.wikipedia.org/wiki/Wii_Remote (Wii Remote)
[5]
http://ru.wikipedia.org/wiki/Voice_over_IP (VoIP)
[6]
http://ru.wikipedia.org/wiki/SIP (SIP)
[7]
http://ru.wikipedia.org/wiki/Open_source (Открытое программное обеспечение)
[8]
http://opencv.willowgarage.com/wiki/FaceRecognition
OpenCV)
(Распознавание
лиц
в
[9]
http://www.cs.auckland.ac.nz/~rklette//TeachAuckland.html/mm/MI74slides.pdf
(Поиск дороги и слежение)
[10] Learning OpenCV: Computer Vision with the OpenCV Library ,by Gary Bradski,
Adrian Kaehler, O'Reilly Media (2008)
[11] Применение микроконтроллеров
Издание 2 , Баранов В.Н. (2006)
AVR: схемы, алгоритмы, программы
[12] AVR-RISC Микроконтроллеры. Архитектура, аппаратные ресурсы, система
команд, программирование, применение. Трамперт В. (2006)
[13] Название: Шаблоны C++: справочник разработчика, Дэвид Вандевурд,
Николай М. Джосаттис , (Вильямс 2003)
[14] Приемы ООП. Паттерны проектирования, Э. Гамма, Р. Хелм, Р. Джонсон, Д.
Влиссидес (2006).
70
[15] Применение UML 2.0 и шаблонов проектирования. Введение в объектноориентированный анализ и проектирование 3-е издание, Крэг Ларман (2003)
71
Galvojums
Ar šo es, Artūrs Jaskevičs, galvoju, ka bakalaura (maģistra) darbs ir izpildīts patstāvīgi,
bez citu palīdzības, no svešiem avotiem ņemtie dati un definējumi ir uzrādīti darbā.
Šis darbs nekādā veidā nav iesniegts nevienai citai pārbaudījuma komisijai un nekur nav
publicēts
2011. gada 20. maijā
paraksts, atšifrējums
Studiju nobeigumā darbs aizstāvēts
ĪSMA KPK sēde
Ar atzīmi
Protokols Nr.
KPK sekretārs
2011. gada
72
Download