Оглавление
АННОТАЦИЯ
ВВЕДЕНИЕ
ПОСТАНОВКА ЗАДАЧИ
ГЛАВА 1. АЛГОРИТМ УПРАВЛЕНИЯ
§1.1. Блок-схема алгоритма
1.1.1. Захват изображения
1.1.2. Обработка изображения
1.1.3. Поиск объекта
1.1.4. Изменение скорости вращения двигателей
ГЛАВА 2. РЕАЛИЗАЦИЯ АЛГОРИТМОВ
§2.1. Аппаратное обеспечение
2.1.1. Модификация положения камеры
§2.2 Программное обеспечение
2.2.1. Алгоритм захвата изображения
2.2.2. Алгоритм обработки изображения
2.2.3. Алгоритм поиска объекта
2.2.4. Алгоритм изменения скорости вращения двигателей
ЭКСПЕРИМЕНТАЛЬНЫЕ РЕЗУЛЬТАТЫ
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЕ А
ПРИЛОЖЕНИЕ B
Аннотация
В представленной дипломной работе рассматривается решение задачи по объезду роботом одного препятствия. С целью решения поставленной задачи используется алгоритм создания управления, учитывающий возможные ситуации. Решение разделяется на две части: теоретическую, в которой описывается алгоритм объезда объекта (препятствия), и практическую, где данный алгоритм реализуется для реального аппаратного обеспечения.
Введение
В наше время высокие технологии имеют очень важную роль не только в научной сфере, но и в повседневной жизни человека, так как они значительно упрощают любой процесс. Одним из видов таких изменений является автоматизация различных процессов, являющаяся весьма актуальной задачей, которая помогает решать проблемы управления процессами. При этом контроль реализуется с помощью исполнительных механизмов, осуществляющих воздействие на технологический объект по сигналу от системы управления.
Одним из видов такой автоматизированной системы является робот. Существует множество определений данного термина [1]:
1) «Устройство, способное самостоятельно перемещаться в пространстве, справляться с задачами анализа сцен и распознавания образов, обладающее большим числом степеней подвижности, умеющее анализировать обстановку с помощью обратной связи, а также прогнозировать ситуации…»;
2) «…устройство…при условии, что оно обладает универсальностью, мобильностью, представляет собой физическое тело, работает автоматически, полностью подчиняется человек, а также способно к элементарной интеллектуальной деятельности» …»;
3) «…механическое устройство, способное выполнять множество различных операций из числа тех, которые человек выполняет с помощью рук и ног» …»;
Всех их объединяет одно: робот - это устройство, которое выполняет определенную задачу.
В то же время качество выполненной работы зависит от поступаемой информации, а значит от сенсорной системы, реализуемой в виде датчиков.
Датчик - устройство, воспринимающее внешнее воздействие и реагирующее на него изменением электрических сигналов [2].
Согласно [2] датчики бывают разных типов:
1)Акустические;
2)Биологические;
3)Электрические;
4)Химические;
5)Магнитные;
6)Оптические;
7)Механические;
После того как датчик считал показания внешней среды, от него передается сигнал на систему контроля для создания управления.
Управлением является[3]:
1)Некое воздействие на объект с целью достижения определенного результата;
2)Некая мера, необходимая для перевода системы из начального состояния в конечное;
Из определений можно увидеть, что данный процесс направлен на совершение поставленной перед роботом задачи, которая в дальнейшем реализуется при помощи системы передвижения.
Таким образом, в совокупности робот представляет собой цикл постоянного взаимодействия автоматизированного объекта с окружающей средой (см. рис. 1).
Рисунок 1 - Функциональная схема робота
Постановка задачи
Целью представленного проекта является автоматизация объезда препятствия роботом.
Рассмотрим 3 возможные ситуации :
1)Объект слева;
2)Объект справа;
3)Объект посередине;
Рисунок 2 – План действия при объезде препятствия.
На рис. 2 воспроизведен каждый из вариантов и стрелками показаны возможные направления пути движения робота.
Исходя из схемы, данную задачу можно разделить на несколько этапов:
1) Поиск объекта;
2) Определение положение объекта относительно робота;
3) Задание управления в соответствии с положением объекта;
4) Изменение скорости движения согласно управлению;
Следует отметить, что в начальный момент времени робот будет обладать некоторой скоростью, при этом объект, возможно, нельзя будет определить сразу. В другом случае, объект может находиться в непосредственной близости с роботом, что повлечет за собой невозможность поворота. Поэтому направление движения также будет от этого зависеть.
Ещё одним немаловажным обстоятельством являются погрешности, минимизация которых играет весомую роль.
Глава 1.
Алгоритм управления
Алгоритм действий на начальном этапе был приведен в Постановке задачи. Поэтому, чтобы задать наиболее точное управление, необходимо добавить немного конкретики.
Первый пункт алгоритма - поиск объекта. Для этого нужно определиться с сенсорной системой.
Как было сказано ранее, функциональной единицей данной системы является датчик. Среди устройств данного класса для поставленной задачи наиболее всего подходят представленные в оптическом типе, а именно: либо дальномеры, либо камеры.
Дальномер - устройство, определяющее расстояние до препятствия [2].
На рис. 3 рассмотрен принцип работы дальномера.
Таким образом, дальномер дает возможность определить лишь расстояние до объекта, в то время как с помощью камеры можно сориентировать препятствие в пространстве относительно робота, а значит, определить с какой стороны нужно производить объезд. Поэтому в качестве оптического датчика была выбрана камера.
На следующем этапе определяемся с положением датчика. Рассмотрим два варианта:
1)Камера расположена сверху и направлена вниз на робота;
2)Камера расположена на роботе и направлена перпендикулярно плоскости движения;
Рисунок 3 - Излучение и считывание сигнала дальномером
Второй вариант уступает первому в силу того, что при горизонтальном расположении угол обзора камеры достаточно невелик, в то время как при вертикальном - датчик охватывает область, которая позволяет лучше оценить возможность расположения препятствия с правой и левой сторон относительно робота. Также, изменяя высоту камеры над роботом, можно увеличивать площадь обзора.
С учетом вышеизложенного, в работе был выбран вариант с параллельным расположением матрицы камеры относительно плоскости движения, при этом поиск объекта может быть реализован следующим путем:
1)Получение изображения с камеры;
2)Обработка изображения;
3)Идентификация объекта;
Следующая задача, после того как препятствие было найдено - необходимость сориентировать его относительно робота. Как было отмечено в Постановке задачи, возможны три варианта:
1)Объект справа;
2)Объект слева;
3)Объект посередине.
В первом случае проверяется расположение объекта справа от центра изображения. Во-втором - слева. В-третьем же препятствие находится по центру. Перед тем как рассмотреть эти три случая, следует проверить расстояние между объектом и роботом и в случае необходимости отъехать назад.
Как только объект будет сориентирован, можно задавать скорость на систему передвижения, выбранную в виде двигателей:
1)Препятствие справа - скорость вращения левого двигателя обнуляется;
2)Препятствие слева - скорость вращения правого двигателя обнуляется;
3)Препятствие посередине - скорость вращения левого или правого двигателей обнуляется.
В конце действия алгоритма робот продолжает движение вперед, пока не определит новый объект или не будет произведена остановка алгоритма.
§1.1. Блок-схема алгоритма
На рис. 4 представлен алгоритм, записанный в начале главы 1, в виде блок-схемы.
Рисунок 4 - Алгоритм объезда препятствия
1.1.1. Захват изображения
Чтобы понять, как определить объект, нужно разобраться с самим видом изображения, которое получает камера.
В машинной графике существуют два типа изображений:
1)Растровые;
2)Векторные;
Согласно [4] первый тип представляет собой массив точек, где каждой из них задан определенный цвет. Второй состоит из совокупности сложных и разнообразных геометрических фигур.
Стоит заметить, что каждый из типов имеет свои преимущества (см табл. 1).
Таблица 1 - Преимущества различных классов изображения
Преимущества |
|
Растровые изображения |
Векторные изображения |
1)Передают наиболее точно цветовую палитру изображения. 2)Являются оптимальными по работе с изображением окружающей среды |
1)Есть возможность изменять параметры изображения без потери качества. 2)Представляют собой идеальную платформу для разработки чертежей. |
В данной дипломной работе для облегчения поставленной задачи был выбран поиск нужного объекта по цвету. Во-первых, это позволит работать лишь с той частью изображения, где находится препятствие. Во-вторых, определение нужного массива точек определенной раскраски позволит сориентировать объект относительно робота.
Как можно увидеть в таблице 1, лучше всего для этой цели подходит растровый вид изображения.
На данном этапе нужно выбрать, в какой цветовой модели растровой графики можно работать.
Цветовая модель-способ представления большого количества цветов посредством разложения их на простые составляющие[4].
В данном дипломном проекте рассмотрены две основные цветовые модели:
1)RGB;
2) HSV.
Цветовая палитра RGB , как уже ясно из названия, является аддитивной на основе трех базовых цветов - красного(R), зеленого (G), синего (B).
Так как в данной цветовой модели используются 3 независимые друг от друга величины, её можно представить в виде системы координат (см. рис. 5).
Как видно из представленной системы координат, любая точка показывает вклад каждой из трех базовых составляющих в получившийся цвет в диапазоне от 0 до 256.
Важно также отметить особые точки и линии данной палитры:
1)Начало координат - точка черного цвета, так как тут все базовые составляющие равны нулю;
2)Точка наиболее близкая к зрителю - здесь все составляющие максимальны, а значит, это точка белого цвета;
3)Диагональ куба – серые оттенки, так как на ней все три составляющие одинаковые;
4)Оставшиеся 6 точек: три вершины(R,G,B) - исходные цветы, остальные три(C,Y,M) - смешанные.
Модель RGB является теоретической основой процессов сканирования и визуализации изображений.
Цветовая модель HSV состоит из трех основ [5]:
1)Hue-цветовой тон, определяемый длиной световой волны, отраженной от непрозрачного объекта или прошедшей через прозрачный объект. Диапазон от 0 до 360 градусов;
Рисунок 5-Цветовая палитра RGB
2)Saturation-параметр цвета, определяющий его чистоту;
3)Value-параметр цвета, определяющий освещенность или затемненность цвета;
Создатель модели HSV Элви Рей Смит представил свою цветовую палитру как преобразование RGB в более удобную для человека форму. На данный момент существуют две модели интерпретации данной цветовой палитры:
1)В виде конуса (см рис. 6);
2) В виде цилиндра ( см рис.7);
На каждом из рис. 6 и 7 стрелками указаны направления изменения H,S,V соответственно.
Рисунок 6-Модель HSV в виде конуса
Рисунок 7-Модель HSV в цилиндрической форме
Возвращаясь к поставленной задаче, следует сказать, что камера, являясь техническим средством, выводит изображение в формате RGB, а задать нужный цвет объекта легче в формате HSV. Поэтому следующим этапом после захвата изображения является его обработка.
1.1.2. Обработка изображения
Обработка полученного изображения состоит из двух этапов:
1)Перевод из RGB в HSV;
2)Пороговое преобразование.
Как было отмечено в пункте 1.1.1, перевод из RGB в HSV необходим для упрощения выбора цвета объекта. Рассмотрим этот алгоритм смены палитр.
Согласно [5], H изменятся от 0 до 360 градусов. Пусть цвета в модели R,G,B изменяются в промежутке [0;255], а параметры яркости S и насыщенности V(B) - [0;1].Тогда, во-первых, нужно изменить область значений R,G,B:
(1.1)
Во-вторых, найти максимальное и минимальное значения из R,G,B. Пусть это будут MAX и MIN соответственно.
В-третьих, найти по формулам S и V:
(1.2)
В-четвертых, рассмотреть возможные ситуации для H:
1)
2)
3)
4)
5)
Как только данный алгоритм будет совершен, можно переходить к поиску области нужного цвета. Для этой задачи лучше всего подходит пороговое преобразование.
Пороговое преобразование - фильтр, выделяющий объекты из окружающего фона посредством отсеивания точек, не входящих в порог между минимальным и максимальным значениями[6].
Как ясно из определения, часть изображения, цвет которого не удовлетворяет условию отсеивания, станет черным. Нужный же объект окрасится в белый. Картинка станет бинарной - двухцветной (см. рис. 8,9).
В конце действия алгоритма обработки изображения получится картинка с четко выделенным объектом, что облегчает процесс поиска.
Рисунок 8-Изображение до порогового преобразования
Рисунок 9 - Изображение после порогового преобразования .
1.1.3. Поиск объекта
На данном этапе, имея четко обозначенный объект, остается лишь сориентировать его относительно робота. Для этого можно использовать момент контура.
Момент - это характеристика контура, вычисленная путем интегрирования всех точек контура[6].Вычисляется по формуле:
, (1.4) где m - все моменты,p - порядок возведения в степень x, q - порядок возведения в степень y, n - число границ контура, – яркость точки.
Немаловажным аспектом является площадь области. Ведь в силу неидеальной освещенности возможны погрешности, а их нужно отсеивать. Для этого можно ввести порог по рассматриваемой области:
,
где
Формула (1.6) представляется собой функцию по поиску центральных моментов. Согласно [6] она нужна для того, чтобы наиболее точно сравнить контуры разных фигур. В нашей же задаче она используется для поиска площади при значениях p=0, q=0
Стоит сказать, что для поставленной задачи важны координаты центра контура, которые вычисляется посредством выражения (1.4) . Именно эти координаты позволят определить расположение объекта относительно робота.
Возвращаясь к процессу проверки следует заметить: если площадь рассматриваемого объекта окажется выше порога для отсеивания, можно приступать к рассмотрению ситуаций расположения препятствия относительно робота, описанных в главе 1.
1.1.4. Изменение скорости вращения двигателей
На данном этапе, когда объект найден и определен в пространстве, нужно
задать его расположение относительно робота для того, чтобы изменять скорость вращения двигателей.
Как было замечено в Постановке задачи, возможны 3 ситуации.
Чтобы определить к какой ситуации относится полученная камерой, стоит всего лишь оценить расположение и препятствия относительно центра изображения.
Исходя из этого, главной задачей в данном пункте является изменение скорости вращения двигателей согласно каждому из вариантов.
Для поставленной цели сначала следует рассмотреть закон изменения скорости вращения двигателя постоянного токах[7]:
, гдеконструктивныйкоэффициент двигателя, R - полное сопротивление цепи якоря, Ф - магнитный поток, U - подводимое к якорю напряжение,-число пар полюсов, N-число активных проводников обмотки якоря, a- число параллельных ветвей обмотки якоря, ЭДС якоря, М - момент двигателя.
Выражение (1.7) можно упростить, зная что[7]:
U=E+IR
М=kФI
Получается формула[7]:
Выражение (1.9) позволяет назвать основные способы регулирования скорости вращения двигателя. К ним относятся изменение сопротивления R, магнитного потока Ф и напряжения U.
Стоит отметить, что в дипломном проекте для работы робота используется в качестве источника постоянного тока аккумуляторные батареи. Согласно книге [7] в данном случае оптимальным вариантом будет изменение напряжения посредством ШИМ-сигнала.
ШИМ – широтно-импульсная модуляция.
Главной характеристой является скважность( γ)[6]:
, где - время замкнутого состояния ключа, - период импульса, – время разомкнутого состояния ключа.
Рисунок 10- Зависимость ШИМ от времени
Основной же идеей данного сигнала является подача максимального и минимального импульса с разными продолжительностями и , вследствие чего получается некоторые средний импульс, обладающий периодом (см. рис. 10)
При ШИМ-сигнале напряжения скважность изменяется от 0 до 1, где 0 -минимальное значения напряжения, а 1 - максимальное.
Согласно (1.10) формула (1.7) теперь имеет вид:
,
Как видно из конечной формулы, процесс изменения скорости вращения двигателя в соответствии с поставленной задачей посредством ШИМ-сигнала реализуем благодаря изменению скважности. Более подробно создание управляющего сигнала будет рассмотрено в практической части диплома.
Глава 2.
Реализация алгоритмов
С целью экономии в качестве обработчика видеопотока был выбран персональный компьютер.
Одной из популярных в области обработки изображений на компьютере с целью формирования управляющего сигнала является библиотека OpenCV.
Согласно [4], машинное зрение — совокупность программно-технических средств, обеспечивающих считывание в цифровой форме видеоизображений, их обработку и выдачу результата в форме, пригодной для его практического применения в реальном масштабе времени. Именно OpenCV обладает ведущим в данном вопросе качеством: с помощью данной библиотеки можно обработать изображение или видеоряд и задать управление достаточно просто и в короткие сроки.
Языков программирования, к которым можно подключить OpenCV, достаточно много. Это и C++, и C# и многие другие. Но только Python является наиболее простым в использовании.
В совокупности OpenCV и Python дают функциональность и многозадачность, что в проблеме нахождения точного управления равноценно минимальным погрешностям.
После обработки в Python, управляющий сигнал передается на робота на платформе микроконтроллера Arduino с сопутствующими к нему платами расширения:
1) радио модуль - для связи вида персональный компьютер-робот;
2) драйвер двигателя - для управления скоростью вращения двигателем;
Подводя итоги можно сказать, что практическая сторона проекта разделяется на два типа:
1)Программную;
2)Аппаратную;
Программная часть, как было описано выше, являет собой OpenCV в среде Python для создания управления и среду программирования (IDE) Arduino для реализации полученного управления.
Аппаратной же задачей является модификация положения камеры, потому что за основу был взят уже готовый робот.
§2.1. Аппаратное обеспечение
Перед тем как можно будет приступать к составлению программы, следует определиться с аппаратным обеспечением.
За основу в данной дипломной работе был взят готовый робот на базе Arduino Duemilanove с радио модулем RFBee, работающим на частоте 868MHz и 915MHz, с камерой, работающей на частоте 2.4 GHz., и с драйвером двигателя L293D на базе 2 H-мостов.
Вращение колес в данном роботе осуществляется посредством 2-ух моторного редуктора Tamia 70168. Двигатели FA -130 требуют напряжение питания в пределах от 1.5 до 3 В.
Питание робота происходит посредством соединенных последовательно 6 аккумуляторов, предоставляющих суммарное напряжение 7.2 В, достаточное для работы микроконтроллера, а для двигателей напряжение изменяется ШИМ - сигналом посредством драйвера двигателя L293D. Радиомодуль питается напрямую от Arduino.
Конструкция робота состоит из вырезанных пластиковых платформ, на которых располагаются описанные выше агрегаты.
В данной дипломной работе с выбранным роботом была произведена модификация - изменение положения камеры согласно главе 1.
2.1.1. Модификация положения камеры
Для начала следует рассмотреть исходный агрегат (см. рис 11).
Как видно на изображении, первый этаж робота служит платформой для редуктора, второго этажа и для заднего крепления робота. Также на этом ярусе располагается аккумулятор.
Для каждого агрегата здесь имеются отверстия для крепежа ( см рис. 12):
1)Два для редуктора;
2)Четыре для стоек, которые держат второй этаж;
3)Одно для крепления задней опоры;
На втором этаже располагается микроконтроллер с платами расширения, и камера, расположенная перпендикулярно плоскости движения робота.
Рисунок 11-Изображение робота до модификации
Рисунок 12-Чертеж первого этажа до модификации
Как и на первом ярусе, здесь имеются отверстия( см рис. 13):
1)4 - для крепежа стоек;
Рисунок 13-Чертеж второго этажа до модификации
2)4 - для Arduino;
3)2 - для крепления камеры;
4) 2 - технологических для установки выключателя и проведения проводов от аккумулятора и к двигателям;
Для того чтобы расположить камеру параллельно движению робота, используются 2 шпильки диаметром 3 мм (см рис. 14 ) и вырезанные из пластика платформы (см рис. 15).
Затем с целью установить данную модификацию, вырезаются дополнительные два отверстия на первом и втором этажах робота.
Шпильки крепятся посредством заклепок , 2 платформы с отверстиями под шпильки фиксируются гайками, последняя платформа крепится в двух предыдущих.
Цельная новая конструкция собирается так, как показано на рисунке 16.
Рисунок 14-Чертеж шпильки
Рисунок 15-Чертеж платформ для крепления камеры
Рисунок 16-Сборка платформы для камеры
Как видно из рисунка 16 , высоту камеры можно менять, что позволяет задавать большую или меньшую область обзора.
Чертеж модифицированных платформ рассмотрен в приложении B.
§2.2. Программное обеспечение
Выше, в начале главы 2, отмечалось, что для первого этапа алгоритма управления была выбрана среда разработки Python, в которой реализуется библиотека OpenСV. Теперь следует более полно рассмотреть эти две среды разработки.
Python - это язык программирования, который при минимализме синтаксиса обладает простотой и функциональностью.
Во-первых, это достигается за счет того, что Python поддерживает динамическую типизацию, т.е. тип переменной определяется только во время исполнения, что упрощает внешний вид программы.
Во-вторых, синтаксис языка является четким и последовательным, благодаря чему исходный код на Python легко читаем.
В-третьих, это возможность подключать разнообразные модули, что позволяет использовать Python в различных областях: веб, базы данных, обработка изображения, обработка текста, численные методы, приложения операционной системы и т.д.Команда import реализует данную возможность в тексте кода.
Например, командой Import cv подключается библиотека технического зрения OpenCV.
OpenCV - это библиотека технического зрения и численных методов общего назначения с открытым исходным кодом[5].
Основные цели, которые стремились реализовать разработчики OpenCV:
1)Открытость;
2)Исследование и обмен информацией;
3)Многозадачность.
Если пройтись по пунктам, то можно заметить, что каждый предыдущий порождает последующий. Ведь именно открытый код дает возможность исследовать и добавлять что-то новое, а сам процесс исследования ведет к коммуникации с другими разработчиками. Обмен же информацией приводит к многозадачности самой библиотеки.
Сама OpenCV состоит из нескольких базовых модулей:
1)CXCORE - ядро, содержащее численные операции;
2)ML - модуль для анализации данных;
3)HighGUI - модуль, отвечающий за выстраивание пользовательского интерфейса;
4)CVCAM - захват видеопотока с камеры;
5)CVAUX - каталог старых функций;
6)CV - модуль, отвечающий за обработку изображения.
В данной работе используется модуль CV, который обладает следующими функциями:
1)Алгоритм для калибровки камеры и 3D реконструкции;
2)Функция для детектирования объекта;
2)Функция для слежения за движением объекта;
3)Функция для работы с изображениями;
4)Функция для анализа изображения.
Как видно, функциональность OpenCV достаточно высока. В то же время данная библиотека работает почти на всех известных системах:
1)Windows;
2)Linux;
3)Mac;
4)Android ;
5)iOS.
В сумме OpenCV представляет собой одну из лучших библиотек компьютерного зрения для решения поставленной задачи.
Вторым этапом алгоритма является передача управляющего сигнала от компьютера к Arduino посредством радиомодулей.
Конечный этап алгоритма реализуется в среде разработки (IDE) Arduino.
Стоит заметить, что в данном дипломном проекте рассматривается только первый этап алгоритма ввиду того, что был взят робот с готовой прошивкой на базе Arduino.
2.2.1. Алгоритм захвата изображения
На данном этапе следует реализовать стандартный алгоритм захвата изображения, представленный в OpenCV:
Во-первых, найти камеру:
, где - функция по поиску камеры и захвату изображения с неё, а 0 -номер камеры.
Во-вторых, задать видеопоток с камеры:
, где .
В-третьих, найти размер изображения:
где - определение размеров изображения.
В-четвертых, задать переменную для обработки изображения :
, гдесоздание изображения, -количество битов на 1 точку, - количество каналов изображения ,
Итоговое изображение захвата одного изображения с камеры представлено на рис. 17.
Рисунок 17-Изображение с видеокамеры
2.2.2. Алгоритм обработки изображения
После захвата изображения необходимо его обработать, чтобы задать правильное управление роботом, которое в данной задаче строится на основе цвета объекта для объезда.
Как говорилось ранее, в пункте 1.1.1, главной проблемой является то, что камера передает изображение в цветовой модели RGB, а определение цвета удобнее задавать в формате HSV. Поэтому нужно перевести картинку из одного типа в другой.
В программе процесс перехода происходит с помощью одной функции:
где - изображение в RGB, - изображение в HSV, - тип перехода, – сам оператор перехода из одного цветового пространства в другое.
Теперь следует превратить изображение в бинарное с четко выделенным объектом. Для этого подходит функция:
где - исходное изображение в HSV; нижний порог поиска; верхний порог поиска; и -координаты в H,S и V соответственно; – полученное изображение после обработки; – функция порогового преобразования изображения по заранее определенному порогу.
Итоговое изображение после работы алгоритма обработки показано на рис. 18.
Рисунок 18 - Изображение после порогового преобразования
2.2.3. Алгоритм поиска объекта
Согласно главе 1 на этом этапе надо найти объект. Как отмечалось в пункте 1.1.3, для этого используется момент контура. В OpenCV это реализуется следующим образом:
где представление изображения в виде матрицы, – нахождение контурных моментов.
Затем определяется площадь объекта:
где s - предыдущая функция по поиску контурных моментов, - функция определения центральных моментов согласно формуле (1.5).
На данном этапе следует также проверить область объекта на возможность погрешности:
После проверки, если эта область не является погрешностью, следует найти центр объекта:
, где - функция выделения нужных моментов, - момент с числовыми значениями по p и q, согласно формуле (1.4) .
2.2.4. Алгоритм изменения скорости вращения двигателей
В этом пункте следует акцентировать внимание на реализации ШИМ-сигнала для изменения скорости вращения двигателей, потому что, как было отмечено в пункте 1.1.4, определение по координатам центра положения препятствия относительно робота является довольно простой задачей. Исходя из этого, следует частично рассмотреть программное обеспечение робота, чтобы разобраться, как происходит считывание сигнала роботом для создания правильного управления.
На практике, для того чтобы изменить скорость вращения двигателей, сначала нужно передать управление от персонального компьютера к роботу. Для этого используются два радиомодуля. Один подключен через USB к компьютеру, другой - к роботу. Кодировкой сигнала является ASCII.
ASCII (American Standard Code for Information Interchange) — американский стандартный код для обмена информацией. ASCII представляет собой 8-битную кодировку для представления десятичных цифр, латинского и национального алфавитов, знаков препинания и управляющих символов [8].
Для передачи движения в прошивке робота была выбрана следующая кодировка управляющего сигнала:
1)1 элемент-«!» - движение вперед или « $» - движение назад
2)Второй и третий элемент - ШИМ-сигнал на двигатели.
ШИМ-сигнал задается в пороге [5;9].
Исходя из этого можно определиться с итоговым видом управления на примере задания минимальной скорости:
, где ! - направление движения, первая 5 - ШИМ-сигнал на левый двигатель, вторая - на правый.
Весь сигнал представляет собой последовательность 3-х байтов , в каждом из которых закодировано значение.
Перечень значений и их код предоставлены в таблице 2.
Таблица 2. Кодировка символов в ASCII
Символ |
Код |
! |
33 |
$ |
36 |
0 |
48 |
1 |
49 |
2 |
50 |
3 |
51 |
4 |
52 |
5 |
53 |
6 |
54 |
7 |
55 |
8 |
56 |
9 |
57 |
Следует заметить, что в данной дипломной работе для простоты взято среднее значение ШИМ сигнала, изменяющееся в соответствии с расположением координат центра объекта:
1)Координаты правее центра изображения - управляющий сигнал имеет вид - ‘!07”
2)Координаты левее - ‘!70’
3)Координаты по центру - ‘!07’
4)Объект слишком близко - ‘ $77’
5)Объекта нет - ‘!77’
Более подробно программный код рассмотрен в приложении A.
Экспериментальные результаты
Во время эксперимента в целях лучшего определения объекта был выбран цвет и фон, обладающие явным контрастом между собой:
1)Объект - зеленый;
2)Фон - белый.
В ходе эксперимента робот определял объект и совершал объезд. Каждый из алгоритмов работал согласовано ситуациям, рассмотренным в теории.
На персональном компьютере в бинарном изображении четко обрисовывался объект, а на начальном видеопотоке выводились изменения скоростей вращения двигателей в соответствие с расположением препятствия.
Посредством модификации положения камеры была возможность менять площадь обзора, что позволяло распознавать объект, как на дальнем расстоянии, так и в непосредственной близи.
Но, несмотря на положительные стороны, было отмечено, что при недостаточной освещенности робот не опознавал препятствие.
На рис. 19 показана работа всего алгоритма для единичной ситуации – объект справа.
Рисунок 19-Работа алгоритма управления
Заключение
В данной дипломной работе был проведен анализ движения робота для объезда препятствия. Были произведены модификации конструкции, позволяющие контролировать площадь обзора камеры. Алгоритм управления был полностью реализован на практике.
Следует отметить, что от части погрешностей не удалось избавиться, но все они вызваны внешними факторами, а не проблемой в алгоритме.
В заключении необходимо сделать замечание о том, что теперь, когда объезд одного препятствия завершен, стоит рассмотреть два и более. Данная задача хоть и кажется сложнее рассмотренной в дипломной работе, представляет собой интерес для реализации алгоритма с целью возвращения на полосу движения.
Само по себе движение по заданной траектории с расставленными друг за другом объектами после создания алгоритма объезда одного препятствия также не является сложной задачей. Расположение же нескольких объектов в непосредственной близости друг от друга создает куда более сложную задачу. Её решением хотелось бы заняться в будущем.
Список литературы
1. Э. Накано, Введение в робототехнику, пер. с японского под ред. А. М. Филатова, Издательство «Мир», 1988.
2. Дж. Фрайден, Современные датчики. Справочник, пер. с английского Ю.А. Заболотной, 2005.
3. Е. И. Юрьевич, Основы робототехники. 2-е издание, г. Санкт-Петербург, 2007.
4. В. Е. Васильев, А. В. Морозов, Компьютерная графика, г. Санкт-Петербург,2005.
5. Д. Ф. Миронов, Компьютерная графика в дизайне, г. Санкт-Петербург, 2008.
6. Gary Bradski, Adrian Kaehler, Learning OpenCV Computer Vision with the OpenCV Library, O’Reilly Media, 2008
7. В. В. Москаленко, Электрический привод, издательский центр «Академия», 2007.
8. Д. Кирсанов, Веб-дизайн, Издательство «Символ-Плюс», 1999.
Приложение A
Текст программы, создающей управляющий сигнал
Приложение B
Чертеж модификации платформы робота
Похожие материалы
... ниже. УАЗ-3309 (№Е 592 АЗ); УАЗ-3741 (№ 67-43 МСА); ИЖ-27-15 (№82-74 МСИ); ИЖ-27-15 (№82-73 МСИ); ВАЗ-21053 (№Е 629 АУ). 2. Анализ методов оптимизации процессов доставки грузов до предприятий розничной торговли 2.1. Политика транспортных предприятий и изменения в характере их деятельности Деятельность предприятий транспортной отрасли, которая в конце 1970-х годов превратилась в своего ...
... контроля" передаст сигнал в "Центр". Система предназначена исключительно для городов и, по признанию разработчиков, не заменит автобусы и автомобили, а станет лишь дополнением к существующим видам общественного транспорта. 4.Монокар В современном мире существуют два основных типа транспортных средств. АВТОМОБИЛИ имеют более высокий комфорт, безопасность, грузоподъемность и т.д., но ...
... , Сургут, Тюмень, Новосибирск (Толмачово) – в Западной Сибири, Красноярск и Иркутск – в Восточной Сибири, Хабаровск и Владивосток – на Дальнем Востоке. 3. Проблемы и перспективы развития транспорта России 3.1. Будущие тенденции развития логистики в РФ Логистика как сегодня, так и в будущем будет основным фактором в конкурентной борьбе. Успех в конкурентной борьбе между ...
... из остальных факторов мало что удастся сделать. Когда я поступил в корпорацию "Крайслер", то взял с собой мои записные книжки из компании "Форд", в которых была отражена служебная карьера нескольких сот фордовских менеджеров. После увольнения я набросал подробный перечень того, что не хотел оставлять в кабинете. Эти записные книжки в черных переплетах, несомненно, принадлежали мне, но можно было ...
... катастрофы)? Хотелось бы верить, что все они спаслись. Но отчего же тогда так печален лик марсианского сфинкса (марсианская женщина)? Последние новости с Марса. Марсоходы на красной планете. 4 января 2004 года американский марсоход Spirit, совершил посадку на поверхность Красной планеты в области кратера Гусева. Текущий этап экспедиции предусматривает спуск аппарата с посадочной ...
0 комментариев