Система управления мини-дирижаблем

в 15:28, , рубрики: c++, fuzzy logic, linux, opencv, Raspberry Pi, Алгоритмы, нечеткая логика, робототехника, техническое зрение

Добрый день уважаемый читатель, вашему вниманию предоставляется проект разработки системы сенсорного управления мини-дирижаблем.
Задачей управления является движение дирижабля по линии. Также была реализована простая система дистанционного управления.
Объектом управления является мини-дирижабль разработанный на кафере ЭиМ, ТТИ ЮФУ.

Система управления мини дирижаблем
Рисунок 1 — Общий вид мини-дирижабля.

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

1. Анализ задания и постановка задачи

Разработка системы сенсорного управления основывается на мини-дирижабле спроектированном на кафедре ЭиМ.
Мини-дирижабль включает в себя оболочку на общедоступных компонентах, а именно разнообразные фольгированные шарики.

Аппаратная часть мини-дирижабля состоит из

  • — одноплатного компьютера raspberry pi;
  • — широкоугольной Веб камеры Genius WideCam 1050;
  • — ультразвукового датчика высоты hc-sr05;
  • — двух электродвигателей;
  • — сервопривода отклонения тяги двигателей;
  • — подсистемы питания.

Поворот мини-дирижабля вокруг вертикальной оси осуществляется разнотягом двигателей. Регулировка высоты дирижабля осуществляется отклонением вектора тяги двигателей по вертикальной оси.
Двигатели дирижабля имеют возможности установки максимальной скорости вращения в 3200 об. / мин. Рабочее напряжение двигателей 7.4 вольт. Двигатели разнесены от центра дирижабля на 25 см., и находятся в нижней точке дирижабля.

2. Система технического зрения

2.1. Структурная схема системы технического зрения

image
Рисунок 2 — Структурная схема системы технического зрения мини-дирижабля.

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

В аппаратную часть входит веб камера.

В программную часть входит:

  • — драйвер камеры для получения видео изображения формата MJPG и задания настроек камеры;
  • — модуль обработки изображения.

2.2. Разработка функциональной схемы

С учетом выбранных методом обработки и алгоритма определения расположения линии (о котором будет рассказано в следующей под главе) были выявлены в программной реализации следующие подзадачи:

  • — произвести настройку внутренних параметров видеокамеры;
  • — получить изображение с камеры;
  • — преобразовать изображение из формата MJPG в цветовой формат HSV;
  • — организовать поиск области пересечения по цветовому соответствию;
  • — реализовать алгоритм для определения координат точки пересечения,
  • — отфильтровывая не полезный сигнал;
  • — реализовать интегрирование блока СТЗ с блоком регулятора направления.

Получение изображение с камеры и преобразование в цветовой формат HSV возложены на библиотеку opencv.

2.3. Алгоритм

Как известно, через две любых точки в пространстве можно проложить прямую. В данном случае, перед системой технического зрения мини-дирижабля ставится задача определения проложенной линии. Первым этапом обработки изображения будет являться поиск этих двух точек, через которые была проложена наша линия.
Определим зоны интереса на нашем изображении для поиска этих точек. Оптимальным расположением зоны интереса будут промежутки межу 1/3 вертикальной частью кадра и 2/3. так как показано на рисунке 4 синими линиями.

image
Рисунок 3 — Оптимальное расположение зоны интереса.

Критерий оптимальности расположений зоны интереса, заключается в том, что нижняя часть зоны интереса находится перпендикулярно вниз от мини-дирижабля, а верхняя находится не у границы кадра, что минимизирует искажения получаемого изображения зоны.
Высота каждой из зон составляет 10 пикселей.
Точка пересечения с линией определяется путем соответствия пикселей заданному цвету. Цветовое пространство работы системы технического зрения HSV.
2 этапа работы алгоритма с каждой зоной интереса.

1. Определение соответствия заданному цвету происходит в массиве, ширина которого, является шириной кадра, получаемого с камеры. Каждый элемент массива является средним значением 10 пикселей в столбце зоны интереса. Таким образом усредняется цветовой шум, поступающий с камеры. Массив имеет 3 строки, каждая из которых соответствует каналам HSV. На выходе мы получаем одномерный массив, в котором значением «1» обозначены адреса пикселей, соответствующие заданному цвету, значением «0» обозначены адреса пикселей, не соответствующие заданному цвету.

for(x = 0 ; x<width ; x++)
                    {offset = x * nchannels;
                         for (y2=35; y2<46; y2++ )  {
                          uchar* data = (uchar*)(hsv->imageData + y2*step);
                                r=data[offset + 2];
                                g=data[offset + 1];
                                b=data[offset];
        h[y2-35]=b;
        s[y2-35]=g;
        v[y2-35]=r;
                                             }
                          h[10]=(h[0]+h[1]+h[2]+h[3]+h[4]+h[5]+h[6]+h[7]+h[8]+h[9])/10;
         s[10]=(s[0]+s[1]+s[2]+s[3]+s[4]+s[5]+s[6]+s[7]+s[8]+s[9])/10;
          v[10]=(v[0]+v[1]+v[2]+v[3]+v[4]+v[5]+v[6]+v[7]+v[8]+v[9])/10;
          if ((h[10]<h1&&h[10]>h2)&&(v[10]>ss)&&(s[10]>vv)) {st[x]=1;} else {st[x]=0;}

2. Определение левой и правой границы зоны пересечения.
По входному массиву заполняются два массива одинаковой размерности. Назовем их st1 и st2. Алгоритм заполнения массивов реализован циклом, в котором некоторая переменная линейно увеличивается, если рассматриваемый элемент входного массива равен 1, и экспоненциально уменьшается, если рассматриваемый элемент равен 0, и записывается в очередной элемент массива st1. Для формирования массива st2, входной массив рассматривается с конца. В результате, массивы st1 и st2 графически можно представить следующим образом (рис. 5 )
image
Рисунок 5 — Графическое представление массивов st1 и st2.

Полезным сигналом является самая широкая область определения цвета. Шумом является небольшие ложные срабатывания, которые можно наблюдать на показателе рисунка 7. Координаты х максимального элемента красного графика(st1), является правой стороной линии, пересекающей зону интереса. Координаты х максимального элемента синего графика (st2), является левой стороной линии, пересекающей зону интереса.
Листинг

double sum=1;
                    double sum2=1;
                          for (x=0; x<width; x++ ) {
                          if (st[x]==1) {sum=sum+1;st1[x]=sum;} else {sum=sum/1.05;st1[x]=sum;}
                          if (st[width-x]==1) {sum2=sum2+1;st2[width-x]=sum2;} else {sum2=sum2/1.005;st2[width-x]=sum2}}

После формирования массивов st1 и st2, находятся максимальные элементы массива, и высчитывается центр зоны пересечения. Применяя все описанные действия ко второй зоне пересечения, на выходе мы имеем координаты точек, через которые проходит линяя.
Применение распространенного способа, определения зоны доверия в следующем кадре, по состоянию объекта в предыдущем, не использовалось, так как и такой способ показал приемлемые результаты шума в выходных параметрах. Также применение это способа не уменьшила бы загрузку процессора, так как мы имеем дело всего лишь с многократным перебором двух массивов с шириной 176 пикселей, разрешение всего получаемого изображения составляет 176x144 пикселя.

3. Регулятор направления

3.1. Структурная схема регулятора в части систему управления

Рисунок 4 — Структурная схема регулятора направления.

Программная реализация состоит из:

  • — нечеткого регулятора;
  • — математического модуля просчета поворота линии;
  • — программного ШИМа.

Аппаратная часть Raspberry pi состоит из процессора bcm2835, соединяющего gpio выводы по результатам работы программного ШИМа.

Аппаратная реализация состоит из:

  • — Драйвера двигателя L293DNE;
  • — Левого и правого электро двигателя.

Структурная схема регулятора направления состоит из программной части, основанной на нечетком регуляторе. Алгоритмом дефазификации является алгоритм Мамдани.
Применение программного ШИМа обусловлена отсутствие в используемом одноплатном компьютере Raspberry pi аппаратного ШИМа.
Драйвер двигателя применяется для усиления ШИМ сигнала.

3.2. Проектирование нечеткого регулятора.

3.2.1. Определение входов и выходов создаваемой системы.

Так как для точного прохождении мини-дирижабля по линии, необходимо учитывать как и отклонения линии от оси дирижабля, так и поворот относительно той же оси, то соответственно, входными параметрами регулятора установим переменный отклонения (ОТКЛ) и поворота (ПОВ). Выходными переменными регулятора буду являться параметры выходного ШИМ сигнала в процентном соотношении. Выходная переменная воздействия на левый двигатель обозначена как (ЛЕВ), правый двигатель соответственно (ПРАВ)

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

Выходные термы принадлежности левого и правого двигателя необходимо было бы задавать, фигурировал нелинейными параметрами работы двигателя постоянного тока относительно ШИМ воздействия. Но так как скорости полета дирижабля предполагают малое линейное отклонение двигателей, термы задавались как для идеального двигателя с абсолютной линейной характеристикой.

Рисунок 5 — Термы выходных переменных ЛЕВ и ПРАВ.

Входные переменные отклонения продольной оси дирижабля от линии и поворота линии от этой же оси получены в результате работы системы технического зрения и математического модуля расчета угла, камера которой имеет показатели дисторсии. Показатели дисторсии камеры можно заложить в входных термах ОТКЛ и ПОВ. Так как к точности позиционирования и траектории выхода на линию не предъявляется никаких требований, то показатели дисторсии можно не учитывать. В данном задании терм настроились картины дисторсии камеры и не настраивались термы по ним. Термы были изменены приблизительно, что явилось достаточным условием функционирования системы.

Рисунок 6 — Терм ОТКЛ и ПОВ.

3.2.3. Разработка базы правил выводов для реализуемой нечёткой системы

Для разработки базы правил необходимо обозначить лингвистические переменные (термы) удобными для понимания названиями.

Рисунок 7 — Обозначение терм.

ОТКЛ 1 — сильно влево.
ОТКЛ 2 — влево.
ОТКЛ 3 — центр.
ОТКЛ 4 — вправо.
ОТКЛ 5 — сильно вправо.
ПОВ 1 — сильно влево.
ПОВ 2 — влево.
ПОВ 3 — центр.
ПОВ 4 — вправо.
ПОВ 5 — сильно вправо.
ЛЕВ 1 — очень слабо.
ЛЕВ 2 — слабо.
ЛЕВ 3 — средне.
ЛЕВ 4 — сильно
ЛЕВ 5 — очень сильно.
ПРАВ 1 — очень слабо.
ПРАВ 2 — слабо.
ПРАВ 3 — средне.
ПРАВ 4 — сильно
ПРАВ 5 — очень сильно

Соответственно эти названия, учитывая что мини-дирижабль управляется разнотягом на двигателях установим связи терм.
блок правил:

ЕСЛИ ОТКЛ сильно влево, ТО ЛЕВ очень слабо И ПРАВ очень сильно.
ЕСЛИ ОТКЛ влево, ТО ЛЕВ слабо. И ПРАВ сильно
ЕСЛИ ОТКЛ центр, ТО ЛЕВ средне. И ПРАВ средне.
ЕСЛИ ОТКЛ вправо, ТО ЛЕВ сильно И ПРАВ слабо.
ЕСЛИ ОТКЛ сильно вправо, ТО ЛЕВ очень сильно. И ПРАВ очень слабо.
ЕСЛИ ПОВ сильно влево, ТО ЛЕВ очень слабо. И ПРАВ очень сильно.
ЕСЛИ ПОВ влево, ТО ЛЕВ слабо. И ПРАВ сильно
ЕСЛИ ПОВ вправо, ТО ЛЕВ сильно И ПРАВ слабо.
ЕСЛИ ПОВ сильно вправо, ТО ЛЕВ очень сильно. И ПРАВ очень слабо

Можно заметить, что для входной переменной ПОВ отсутствует связанность средних значений. Это связанно с тем, что при правильном ориентире продольной оси дирижабля относительно линии и отклонения от нее, средняя терма тянула входные значения моторов к середине, что является неверным в данном положении дирижабля.

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

3.2.4. Анализ процесса работы нечеткой системы

Для анализа процесса работы. Были построены корреляционные портреты регулятора. В приведенных ниже рисунках осью Y является входная переменная ПОВ, осью X входная переменная ОТКЛ. Цвет пикселя соответствует входной переменной каждого двигателя, белый цвет –минимум, черный — максимум.

Рисунок 8 — Корреляционные портреты выходных значение нечеткой системы для левого и правого двигателя, пересечение корреляционных портретов.

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

4. Регулятор высоты

4.1. Структурная схема регулятора

Рисунок 9 — Структурная схема регулятора высоты.

Программная реализация состоит из:

  • ПИ регулятора на нечеткой логике;
  • математического модуля расчета расстояния;
  • программного ШИМа;

Аппаратная часть Raspberry pi состоит из Процессора bcm2835, соединяющего gpio выводы по результатам работы программного ШИМа.

Аппаратная реализация состоит из

  • Сервопривода, изменяющего вектор тяги двигателей;
  • Ультразвукового датчика HC-SR05.

4.2. Проектирование нечеткого регулятора

4.2.1. Определение входов и выходов создаваемой системы

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

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

Зададим выходные термы принадлежности, руководствуясь равномерным распределением терм по поверхности. Нелинейность выхода нечеткой системы задана термами входной переменной.

Рисунок 10 — Термы выходной переменной ВЫХОД

Входные термы переменной ошибки от высоты показаны на рисунке ниже.

Рисунок 11 — Термы входной переменной ВЫСОТА

4.2.3. Разработка базы правил выводов для реализуемой нечёткой системы

Для разработки базы правил, необходимо обозначить лингвистические переменные (термы) удобными для понимания названиями.

Рисунок 12 — Обозначение терм

Высота 1- сильное отклонение вниз.
Высота 2 — отклонение вниз.
Высота 3 — отсутствие отклонения.
Высота 4 — отклонение вверх.
Высота 5 сильное отклонение верх
Выход 1 — высокое положительное
Выход 2 — положительное
Выход 3 — ноль
Выход 4 — отрицательное
Выход 5 — высокое отрицательное

Ответственно устанавливаем прямую связь терм.
блок правил:
ЕСЛИ Высота: сильное отклонение вниз, ТО Выход: высокое положительное
ЕСЛИ Высота: отклонение вниз, ТО Выход: положительное
ЕСЛИ Высота: отсутствие отклонения, ТО Выход: Ноль
ЕСЛИ Высота: отклонение вверх, ТО Выход: отрицательное
ЕСЛИ Высота: сильное отклонение верх, ТО Выход: высокое отрицательное

5. Система дистанционного управления

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

Передача сигналов нажатия клавиш осуществляется через беспроводной канал wi-fi по протоколу ssh, при котором от наземной базовой стации (ПК) нажатие клавиш клавиатуры передается на удаленный компьютер.
Передача видео потока осуществляется таким же способом ввиду того, что протокол ssh позволяет наблюдать экран удаленной машины.

6. Экспериментальное исследование системы

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


Работа системы технического зрения


Пролет мини-дирижабля

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

Рисунок 13 — Положения вектора тяги и датчика высоты дирижабля. Заданная высота 80 см.

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

Что касается самой системы управлении высоты, очевидно, что ей нахватает опережения установки значений вектора тяги. Исправить положение мог бы вторая входная переменная “скорость ошибки”, по которой можно было бы прогнозировать и строить управления наперед, или же просто использовать проверенный ПИД регулятор.

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

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

Автор: henosi

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js