Исследование и разработка нейронной сети для настройки коэффициентов ПИД-регулятора

  • Вид работы:
    Отчет по практике
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    552,05 Кб
  • Опубликовано:
    2015-02-14
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Исследование и разработка нейронной сети для настройки коэффициентов ПИД-регулятора

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

Высшего профессионального образования

«Томский государственный университет систем управления и радиоэлектроники» (ТУСУР)

Кафедра Электронных приборов (ЭП)





Исследование и разработка нейронной сети для настройки коэффициентов ПИД - регулятора

Отчет по курсовой работе


Студент гр. 341

Д.И. Ример

Руководитель

д.т.н., профессор кафедры ЭП

Е.Е. Слядников




ТОМСК 2014

РЕФЕРАТ

Отчет по производственной практике составляет 40 страниц, 13 иллюстраций, 9 источников, 3 приложения, 3 таблицы.

НЕЙРОННАЯ СЕТЬ, ПИД - РЕГУЛЯТОР, LEGO MINDSTORMS NXT, МЕТОД ОБУЧЕНИЯ С ОБРАТНЫМ РАСПРОСТРОНЕНИЕМ ОШИБКИ, НАСТРОЙКА КОЭФФИЦИЕНТОВ ПИД - РЕГУЛЯТОРА.

Объектом производственной практики является исследование и разработка нейронной сети для настройки коэффициентов ПИД - регулятора мобильного робота Lego Mindstorms NXT.

Цель работы - создание нейронной сети для регулировки параметров ПИД - регулятора.

В процессе работы были исследованы виды нейронных сетей, методы их обучения. В практической части описано создание нейронной сети для регулировки коэффициентов ПИД -регулятора, с методом обучения обратного распространения ошибки.

Уровень математического аппарата - интегральный.

Работа выполнена в текстовом редакторе Microsoft Word 2010, программирование проводилось в среде BrixcCC на языке NXC, в среде математического моделирования MATlab.

ABSTRACT

on a field trip is 40 pages, 12 figures, 9 sources, 3 applications, 3 tables. neural network PID - REGULATOR, LEGO MINDSTORMS NXT, teaching method with reverse proliferation errors, set the coefficients of the PID - REGULATOR.object of industrial practice is to research and development of the neural network to adjust the coefficients of the PID - controller of the mobile robot Lego Mindstorms NXT.

Purpose - to create a neural network to adjust the parameters of PID - controller.

In the process, were investigated types of neural networks, methods of learning. In the practical part describes how to create a neural network to adjust PID control adjusts the coefficients, with the method of teaching Levenberg - Marquardt. level of mathematical apparatus - integral. is done in a text editor, Microsoft Word 2010, programming was carried out in an environment BrixcCC language NXC, among mathematical modeling MATlab.

АННОТАЦИЯ

Исследование и разработка нейронной сети для настройки коэффициентов ПИД - регулятора мобильного робота LEGO Mindstorms NXT.

Автор Ример Дмитрий Игоревич, ТУСУР, факультет электронной техники (ФЭТ), кафедра электронных приборов (ЭП), 4 курс, 2014 г.

Научный руководитель Евгений Евгеньевич Слядников, доктор технических наук, профессор кафедры ЭП.

В работе рассмотрены основные виды нейронных сетей, методы их обучения. Так же рассмотрен мобильный робот Lego Mindstorms NXT, используемый в нем ПИД - регулятор.

Создана программа для управления мобильным роботом. Так же написана искусственная нейронная сеть, в среде математического моделирования Matlab, для корректировки коэффициентов ПИД - регулятора.

Обученная нейронная сеть с достаточной точностью способна подбирать коэффициенты ПИД - регулятора мобильного робота. Для более точной работы нейронной сети необходимо интегрировать её в память мобильного робота, увеличить количество экспериментов необходимых для обучения нейронной сети.

Данная работа направлена на дальнейшее исследование нейронных сетей, для упрощения человеческого труда при настройке ПИД - регулятора.

СОДЕРЖАНИЕ

1. Введение

. Литературный обзор

.1 Нейронная сеть

.2 Модель искусственного нейрона

.3 Активационные функции

.4 Однослойный персептрон

.5 Многослойный персептрон

.6 Обучение нейронных сетей

.7 Правило коррекции по ошибке

.8 Комплект “LEGO Mindstorms NXT

.9 Нейронная сеть в ПИД - регуляторах

. Постановка задачи

. Практическая часть

.1 Разработка и отладка программы движения мобильного робота

.2 Разработка нейронной сети

.3 Результаты работы

Заключение

Список литературы

Приложение А. Листинг программы движения мобильного робота

Приложение Б. Экспериментальные данные

Приложение В. Листинг нейронной сети

нейронный сеть робот регулятор

1. ВВЕДЕНИЕ

В данной работе рассматривается двуслойная нейронная сеть прямого распространения с обратным распространением ошибки, способная подбирать коэффициенты ПИД-регулятора, для управления движения робота.

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

Искусственные нейронные сети, (Artificial Neural Networks, ANN), -далее ИНС - созданы по аналогии с биологической нейронной сетью человеческого мозга. Они состоят из элементов, функциональные возможности которых подобны элементарным функциям биологических нейронов, и чья организация соответствует анатомии человеческого мозга.

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

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

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

ИНС применяются в следующих областях: анализ и обработка сигналов, распознавание изображений, управление технологическими процессами, фильтрация шумов, робототехника, язык обработки, медицинская диагностика, контекстная реклама в интернете, системы видеонаблюдения и др. [1].


2. ЛИТЕРАТУРНЫЙ ОБЗОР

.1 НЕЙРОННОЯ СЕТЬ

В 1943 году американским ученым Уорреном Маккалоком (W. McCulloch) и его учеником Уолтером Питтсом (W. Pitts) была создана первая математическая модель нейрона (базового элемента мозга). Также они сформулировали основные положения теории деятельности головного мозга.

Ими было сделано следующее:

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

предложена конструкция сети таких элементов для выполнения логических и арифметических операций;

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

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

Дальнейшее развитие теория нейронных сетей получила в работах американского нейрофизиолога Френсиса Розенблатта (Rosenblatt F.).

В 1958 году Ф. Розенблат создал собственную модель нейронной сети, путем введения в модель У. Маккаллока и У. Питтса способность связей к модификации, что сделало ее обучаемой. Эта модель была названа персептроном.

Первоначально персептрон представлял собой однослойную структуру с жесткой пороговой функцией процессорного элемента и бинарными или многозначными входами, в дальнейшем эта модель была значительно усовершенствована [2].

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

.2 МОДЕЛЬ ИСКУСТВЕННОГО НЕЙРОНА

Искусственный нейрон (базовый процессорный элемент) - является основой любой искусственной нейронной сети.

Нейроны представляют собой относительно простые, однотипные элементы, имитирующие работу нейронов мозга. Каждый нейрон характеризуется своим текущим состоянием (возбужден или заторможен) по аналогии с нервными клетками головного мозга.

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

На рисунке 2.1 представлена модель, реализующая эту идею.

Рисунок 2.1 - Искусственный нейрон [3]

Хотя сетевые парадигмы весьма разнообразны, в основе почти всех их лежит эта конфигурация. Здесь множество входных сигналов, обозначенных x1, x2,…, xn, поступает на искусственный нейрон. Эти входные сигналы, в совокупности обозначаемые вектором X, соответствуют сигналам, приходящим в синапсы биологического нейрона. Каждый сигнал умножается на соответствующий вес w1, w2,…, wn, и поступает на суммирующий блок, обозначенный Σ. Каждый вес соответствует «силе» одной биологической синаптической связи. (Множество весов в совокупности обозначается вектором W.) Суммирующий блок, соответствующий телу биологического элемента, складывает взвешенные входы алгебраически, создавая выход, который мы будем называть NET [3]. В векторных обозначениях это может быть компактно записано следующим образом:

= X∙W.(2.1)

.3 АКТИВАЦИОННЫЕ ФУНКЦИИ

Сигнал NET далее, как правило, преобразуется активационной функцией F и дает выходной нейронный сигнал OUT. Активационная функция может быть обычной линейной функцией:

= K(NET),(2.2)

где К - постоянная, пороговой функции.

= 1, если NET > T,

= 0 в остальных случаях,

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

На рисунке 2.2 блок, обозначенный F, принимает сигнал NET и выдает сигнал OUT. Если блок F сужает диапазон изменения величины NET так, что при любых значениях NET значения OUT принадлежат некоторому конечному интервалу, то F называется «сжимающей» функцией. В качестве «сжимающей» функции часто используется логистическая или «сигмоидальная» (S-образная) функция, показанная на рис. 2.3. Эта функция математически выражается как F(x) = 1/(1 + е-x).

Рисунок 2.2 Искусственный нейрон с активационной функцией [3]

Таким образом,

.(2.3)

По аналогии с электронными системами активационную функцию можно считать нелинейной усилительной характеристикой искусственного нейрона. Коэффициент усиления вычисляется как отношение приращения величины OUT к вызвавшему его небольшому приращению величины NET. Он выражается наклоном кривой при определенном уровне возбуждения и изменяется от малых значений при больших отрицательных возбуждениях (кривая почти горизонтальна) до максимального значения при нулевом возбуждении и снова уменьшается, когда возбуждение становится большим положительным. Гроссберг (1973) обнаружил, что подобная нелинейная характеристика решает поставленную им дилемму шумового насыщения. Каким образом одна и та же сеть может обрабатывать как слабые, так и сильные сигналы? Слабые сигналы нуждаются в большом сетевом усилении, чтобы дать пригодный к использованию выходной сигнал. Однако усилительные каскады с большими коэффициентами усиления могут привести к насыщению выхода шумами усилителей (случайными флуктуациями), которые присутствуют в любой физически реализованной сети. Сильные входные сигналы в свою очередь также будут приводить к насыщению усилительных каскадов, исключая возможность полезного использования выхода. Центральная область логистической функции, имеющая большой коэффициент усиления, решает проблему обработки слабых сигналов, в то время как области с падающим усилением на положительном и отрицательном концах подходят для больших возбуждений. Таким образом, нейрон функционирует с большим усилением в широком диапазоне уровня входного сигнала.

.(2.4)

Рис. 2.3 Сигмоидальная логистическая функция [3]

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

= th(x).(2.5)

Рис. 2.4 Функция гиперболического тангенса [3]

Подобно логистической функции гиперболический тангенс является S-образной функцией, но он симметричен относительно начала координат, и в точке NET = 0 значение выходного сигнала OUT равно нулю (рисунок 2.4).

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

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

Несмотря на эти ограничения, сети, построенные из этих нейронов, обнаруживают свойства, сильно напоминающие биологическую систему. Только время и исследования смогут ответить на вопрос, являются ли подобные совпадения случайными или следствием того, что в модели верно схвачены важнейшие черты биологического нейрона [3].

.4 ОДНОСЛОЙНЫЙ ПЕРСЕПТРОН

На вход поступает только двоичный сигнал, т.е. либо 0 либо 1. Элемент ∑ (сумматор) складывает входные сигналы, взвешенные относительно соответствующих синапсов нейрона. Если эта сумма больше заданного порогового значения, выход равен 1, если меньше - нулю. Т.к. выходной сигнал принимает значения «0» или «1», поэтому персептрон - это нейрон бинарного типа. При функционировании персептрона различают два режима его работы:

режим обучения;

режим функционирования;

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

Рисунок 2.5 Структура однослойного персептрона [4]

.5 МНОГОСЛОЙНЫЙ ПЕСЕПТРОН

Многослойная сеть состоит из нейронов, которые расположены на разных уровнях. Помимо входного и выходного слоёв имеется как минимум ещё один слой - скрытый. При задании функции активации сигмоидального типа будем иметь многослойный персептрон (рисунок 2.6).

Рисунок 2.6 Структура многослойного персептрона [4]

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

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

Многослойные персептроны оказались весьма эффективными для решения разнообразных задач управления [4].

.6 ОБУЧЕНИЕ НЕЙРОННЫХ СЕТЕЙ

Процесс обучения нейронных сетей представляет собой настройку архитектуры сети, а также ее весовых коэффициентов для эффективного решения поставленной задачи.

Сеть должна настроить веса по обучающим примерам. Именно эта особенность обучения на примерах и выделяет нейронные.

Существует два класса обучения:

детерминированный метод обучения

стохастический метод обучения

Детерминированный метод

Параметры сети изменяются по шагам (итерациям), основываясь на текущих параметрах входов и желаемых выходов. Наиболее популярным примером детерминированного метода является алгоритм «обратного распространения ошибки»

Стохастический метод

Параметры сети изменяются случайным образом. Но сохраняются только те изменения, которые привели к улучшениям [5].

Обучение с учителем

Рассмотрим парадигмы обучения нейронных сетей. Начнем с парадигмы обучения с учителем. На рисунке 2.7 показана блочная диаграмма, иллюстрирующая эту форму обучения.

Рисунок 2.7 Схема обучения сети с учителем [4]

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

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

Параметры сети корректируются с учетом обучающего вектора и сигнала ошибки. Сигнал ошибки - это разность между желаемым сигналом и текущим откликом нейронной сети. Корректировка параметров выполняется пошагово с целью имитации нейронной сетью поведения учителя. Эта эмуляция в некотором статистическом смысле должна быть оптимальной. Таким образом, в процессе обучения знания учителя передаются в сеть в максимально полном объеме. После окончания обучения учителя можно отключить и позволить нейронной сети работать со средой самостоятельно [4].

.7 ПРАВИЛО КОРРЕКЦИИ ПО ОШИБКЕ

Розенблатт в 1957 году разработал модель обучения, которая использовала алгоритм обучения с учителем. Впоследствии эта модель стала основой для более сложных алгоритмов обучения.

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

Принцип состоит в постепенном уменьшении ошибки.

.8 КОМПЛЕКТ “LEGO Mindstorms NXT”Mindstorms - это конструктор для создания программируемого робота. Впервые представлен компанией LEGO в 1998 году. Через 8 лет (2006) в свет вышла модель LEGO Mindstorms NXT, а в 2009 - LEGO Mindstorms NXT 2.0.

Наборы LEGO Mindstorms комплектуются набором стандартных деталей LEGO (балки, оси, колеса, шестерни) и набором, состоящим из сенсоров, двигателей и программируемого блока.

Для программирования робота Mindstorms можно использовать среду визуального программирования NXT-G, созданную компанией National Instrumensts (создатель LabView). Кроме этого, независимыми разработчиками созданы десятки средств и языков для программирования робота. Одним из наиболее популярных таких средств является язык NXC.

Для написания программ используется язык NXC - это язык программирования. Для написания программ существует среда программирования Bricx Command Center (BricxCC). С помощью неѐ можно писать программы, загружать их в робота, запускать и останавливать их и многое другое. BricxCC работает по большей части как текстовый редактор, но с некоторыми дополнительными возможностями [6].

2.9 НЕЙРОННАЯ СЕТЬ В ПИД - РЕГУЛЯТОРАХ

Пропорционально-интегрально-дифференциальный (ПИД) регулятор используется в системах автоматического управления для формирования управляющего сигнала с целью получения необходимых точности и качества переходного процесса. ПИД - регулятор формирует управляющий сигнал, являющийся суммой трех слагаемых, первое из которых пропорционально разности входного сигнала и сигнала обратной связи (сигнал рассогласования), второе - интеграл сигнала рассогласования, третье - производная сигнала рассогласования. Если какие-то из составляющих не используются, то регулятор называют пропорционально-интегральным, пропорционально-дифференциальным, пропорциональным и т. п. [6].

Нейронные сети используются в ПИД - регуляторах двумя путями: для построения самого регулятора и для построения блока настройки его коэффициентов. Особенностью нейронной сети является способность к «обучению», что позволяет передать нейронной сети опыт эксперта. Регулятор с нейронной сетью похож на регулятор с табличным управлением, однако отличается специальными методами настройки (обучение), разработанными для нейронных сетей, и методами интерполяции данных. В отличие от нечёткого регулятора, где эксперт должен сформулировать правила настройки в лингвистических переменных, при использовании нейронной сети от эксперта не требуется формулировки правил - достаточно, чтобы он несколько раз сам настроил регулятор в процессе «обучения» нейронной сети.

Типовая структура системы автоматического регулирования с ПИД - регулятором и нейронной сетью в качестве блока авто настройки показана на рисунке 2.8. Нейронная сеть NN в данной структуре играет роль функционального преобразователя, который для каждого набора сигналов r, e, u, y вырабатывает коэффициенты ПИД - регулятора K, Ti, Td.

Самой сложной частью в проектировании регуляторов с нейронной сетью является процедура «обучения» сети. «Обучение» заключается в идентификации неизвестных параметров нейронов wi, b и a. Для «обучения» нейронной сети обычно используют методы градиентного поиска минимума критериальной функции ε = (u* - u)2, зависящей от параметров нейронов [7].

Рисунок 2.8 Структура ПИД - регулятора с блоком авто настройки на основе нейронной сети NN [7]

Процесс поиска является итерационным, на каждой итерации находят все коэффициенты сети, сначала для выходного слоя нейронов, затем предыдущего и так до первого слоя (метод обратного распространения ошибки). Используются также другие методы поиска минимума, в том числе генетические алгоритмы, метод моделирования отжига, метод наименьших квадратов. Процесс «обучения» нейронной сети выглядит следующим образом (рисунок 2.9). Эксперту предоставляют возможность подстраивать параметры регулятора K, Ti, Td в замкнутой системе автоматического регулирования при различных входных воздействиях r(t).

Предполагается, что эксперт умеет это делать с достаточным для практики качеством. Временные диаграммы (осциллограммы) переменных r*, e*, u*, y*, полученные в подстраиваемой экспертом системе (рисунок 2.9а), записываются в архив и затем подаются на нейронную сеть, подключённую к ПИД - регулятору (рисунок 2.9б). Нейронная сеть настраивается таким образом, чтобы минимизировать погрешность ε = (u* - u)2 между сигналом u*, полученным с участием эксперта, и сигналом u, полученным в процессе «обучения» нейронной сети.


Рисунок 2.9 - Схема «обучения» нейронной сети в блоке авто настройки:

а - система управления, подстраиваемая экспертом;

б - нейронная сеть, «обучаемая» с помощью сигналов, которые получены в представленной на рисунке 2.9а системе [7]

После выполнения процедуры «обучения» параметры нейронной сети заносятся в блок авто настройки. В соответствии с теорией нейронных сетей «обученная» нейронная сеть должна вести себя так же, как и эксперт, причём даже при тех входных воздействиях, которые не были включены в набор сигналов, использованных при «обучении». Длительность процесса «обучения» является основной преградой на пути широкого использования методов нейронных сетей в ПИД - регуляторах [7].


3. ПОСТАНОВКА ЗАДАЧИ

Целью данной работы является исследование и разработка нейронной сети для регулировки коэффициентов ПИД - регулятора, управляющего движущимся объектом.

Требуется построить нейронную сеть, способную подсчитать коэффициенты ПИД - регулятора (Kp - пропорциональный, Ki - интегральный, Kd - дифференциальный) основываясь на результатах предыдущих экспериментов, для минимального времени заезда робота.

Структуру построенной нейронной сети необходимо оптимизировать: для заданной задачи найти оптимальное число слоев нейронов, оптимальную функцию активации и вид обучения.

Действия, которые необходимо провести для решения выше указанной задачи:

Написание программы движения робота в среде программирования BrixcCC, используя ПИД - регулятор.

Отладка программы, проведения экспериментов с ручной корректировкой коэффициентов ПИД - регулятора.

Определить вид нейронной сети, количество слоев и нейронов, выбор “обучения” сети.

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

Проверка работы обученной нейронной сети.

4. ПРАКТИЧЕСКАЯ ЧАСТЬ

.1 РАЗРАБОТКА И ОТЛАДКА ПРОГРАММЫ ДВИЖЕНИЯ МОБИЛЬНОГО РОБОТА

Данную программу удобнее написать в среде программирования BricxCC.

Движение по линии можно осуществлять несколькими способами, один из простейших - движение по границе черной линии и поля с использованием одного цветового датчика в режиме фиксации отраженного света. Сенсор содержит свето- и фотодиод. Светодиод освещает участок поверхности, а фото-диод принимает отраженный свет. По интенсивности полученного света можно судить о том, на каком участке контрастной линии робот находится. Задача заключается в том, чтобы, управляя скоростями двух колес, перемещать робота вдоль линии. Одним из способов решения этой задачи является удерживание сенсора света на кромке линии. Для этого необходимо замерить значение уровня освещенности на границе линии, этот уровень будет принят эталонным. Всякое отклонение от этого уровня (ошибку) нужно компенсировать ускорением одного из колес и торможением другого [6].

Основной код программы для движения мобильного робота приведен в приложении А. В данном разделе рассмотрим основные используемые в программе функции.main () - это точка входа в программу.- целочисленный тип данных диапазон значений: 0 … 65535.- вещественный тип данных, диапазон значений: 3.4∙10-38 … 3.4∙1038offset = 28 - экспериментально измеренный уровень освещения, принятый в дальнейшем за эталон., ki, kd - коэффициенты ПИД - регулятора, пропорциональный, интегральный и дифференциальный соответственно.(S1) - инициализация датчика цвета в качестве датчика освещенности с использованием красной подсветки.light = SENSOR_1 - считывание текущего значения освещенности в переменную light.(10, 5, light) - функция выводит на дисплей число в указанной координате дисплея.

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

error = offset - light;= Isum * 8/10 + error;

Draz = error - Draz;

Далее рассчитываем какую мощность необходимо подавать на двигатели:

u = kp * error + ki * Isum + kd * Draz;= speed + u;= speed - u;

OnFwd(OUT_A, left) - функция заставляет вращаться двигатели, в зависимости от указанной мощности.

Далее необходимо определить оптимальные коэффициенты ПИД - регулятора для максимально быстрого прохождения мобильным роботом трассы, без выезда с нее. Для этого изменяем сначала пропорциональный коэффициент в пределах от 1 до 100, затем интегральный от 10-4 до 1, и дифференциальный в промежутке от 1 до 100. Определив оптимальный набор коэффициентов, проводим серию опытов для дальнейшей обработки их нейронной сетью [7].

4.2 РАЗРАБОТКА НЕЙРОННОЙ СЕТИ

Для решения задачи был выбран двуслойный персептрон прямого распределения, обучение происходит по алгоритму Levenberg-Marquardt обратного распространения ошибки [8]. Вид нейронной сети представлен на рисунке 4.1.

Рисунок 4.1 Вид нейронной сети

Оптимальное количество нейронов в каждом скрытом слое определенно в 3 нейрона. В первом скрытом слое функцией активации является сигмоидальная функция (в данном случае гиперболический тангенс), она описывается формулой

(4.1)

где,  параметр, влияющий на наклон сигмоидальной функции.

Во втором скрытом слое функция активации - логистическая функция.

Входные данные представляют собой время прохождения трассы, и произошел ли вылет с нее. Выходные данные - коэффициенты ПИД - регулятора [9].


4.3 РЕЗУЛЬТАТЫ РАБОТЫ

На графиках (рисунки 4.2 и 4.3) показаны результаты обучения сети.(рисунок 4.2) - функция производительности сети. Она показывает производительность, в соответствии со средней квадратичной ошибкой.

На (рисунке 4.3) видно, как изменялся градиент и коэффициент обучения сети (mu) в процессе обучения сети.

Рисунок 4.2 Зависимость средней квадратичной ошибки от количества итераций

Рисунок 4.3 График изменения градиента и коэффициента обучения сети в процессе обучения

Для проверки работоспособности обученной нейронной сети подавалось на вход данные значительно меньше минимально полученных (минимальное полученное время, при нахождении коэффициентов в ручную, составило ~30.5 секунды), вылет с трассы - «0» (1 - произошел выход с трассы, 0 - трасса полностью пройдена). Полученные коэффициенты подставляем в программу движения мобильного робота. Фиксируем истинное время прохода трассы роботом. В таблице 4.1 представлены некоторые результаты определения коэффициентов ПИД-регулятора нейронной сетью.

Таблица 4.1 - Результаты работы нейронной сети

tжелаемое, c

Вылет, true/false

Кп

Ки

Кд

tистин, с

Вылет, true/false

29

0

11

0.0001

17

29.5

0

4

1

7

0.05

20

6.5

1

20

0

8

0.0001

30

12

1

Полная таблица проведенных экспериментов представлена в приложении Б, таблица Б.2.

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

Схема мобильного робота со встроенной нейронной сетью для автоматической настройки коэффициентов ПИД - регулятора (рисунок 4.4) позволит полностью убрать человеческий фактор вмешательства в настройку коэффициентов ПИД - регулятора.

Рисунок 4.4 - Схема мобильного робота со встроенной нейронной сетью

АКЛЮЧЕНИЕ

В рамках данной работы была исследована и разработана искусственная нейронная сеть для регулировки коэффициентов ПИД - регулятора. Данная сеть имеет вид двуслойного персептрона прямого распространения сигнала, с алгоритмом обратного распространения ошибки. Количество нейронов в скрытом слое - 3. Сеть была обучена на базе данных, собранных в экспериментах по ручному поиску коэффициентов ПИД - регулятора. На вход подавались значения времени прохождения трассы мобильным роботом, и вылетом с трассы. На выходе в качестве учителя были выставлены коэффициенты ПИД - регулятора. При данном распределении данных мы получаем возможность подавать в сеть желаемое время прохождения трассы. Проведённые эксперименты, с учетом неточности и не совершенности проводимых экспериментов (такие как: фиксация времени прохождения трассы, разное положения мобильного робота в начальном положение и т.п.), показывают, что обученная нейронная сеть способна подбирать коэффициенты ПИД - регулятора так, что, подставляя их в программу движения мобильного робота, мы получаем результат близкий к желаемому. Дальнейшее усовершенствование нейронной сети позволит интегрировать ее в память мобильного робота, что полностью или частично уберет необходимость участия человека в подборе коэффициентов ПИД - регулятора.

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


СПИСОК ЛИТЕРАТУРЫ

Терехов В. А., Ефимов Д. В., Тюкин И.Ю. Нейро-сетевые системы управления: Учеб. Пособие для вузов. - М.: Высш. шк. 2002. - 183 с.: ил.

Минский М., Пейперт С. Персептроны. М.: Мир, 1971 - 261 с.

Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. Перевод на русский язык, Ю. А. Зуев, В. А. Точенов, 1992. - 102 c.

Хайкин, С. Нейронные сети: полный курс, 2-е изд., испр. : Пер. с англ. - М. : ООО "И.Д. Вильямс", 2006. - 1104 с.

Портал искусственного интеллекта. - 2009. - Режим доступа: свободный. Заголовок с экрана: http://www.aiportal.ru/ articles/neural-networks (Дата обращения: 23.06.2014).

Шандаров Е.С. Программирование LEGO Mindstorms NXT на языке NXC. - Т.: ТМЦДО. 2012. - 44 с.

Денисенко В. ПИД - регуляторы: принципы построения и модификации. - СТА №1. 2007. 78 - 88 с.

Васенков Д.В. Методы обучения искусственных нейронных сетей. Компьютерные инструменты в образовании. - СПб.: Изд-во ЦПО "Информатизация образования", 2007, №1, С. 20-29.

Маслобоев Ю.П. Введение в Neural Network Toolbox. [Электронный ресурс]. Matlab.Exponenta - 2001. - Режим доступа: свободный. Заголовок с экрана: http://matlab.exponenta.ru/neuralnetwork/ (дата обращения 21.06.2014).

ПРИЛОЖЕНИЕ А

Листинг программы движения мобильного робота

task main() {offset = 28;error = 0;kp = 6.3748;ki = 0.0086;kd = 15.1341;speed = 100;left = 0;right = 0;Isum = 0;Draz = 0;u = 0;(S1);(true) {light = SENSOR_1;(10, 5, light);= offset - light;= Isum * 8/10 + error;= error - Draz;= kp * error + ki * Isum + kd * Draz;= speed + u;= speed - u;= error;(left < 0) left = 0;(left > 100) left = 100;(right < 0) right = 0;(right > 100) right = 100;(OUT_A, left);(OUT_B, right);

}

}

ПРИЛОЖЕНИЕ Б

Экспериментальные данные

Таблица Б.1 - Экспериментальные данные

Время, с

Освещенность, %

Вылет

Кп

Ки

Кд

Мощность

34,56

25

0

10

0,0001

10

70

34,34

25

0

9

0,0002

15

70

34,87

25

0

12

0,0005

20

70

34,56

25

0

8

0,001

20

70

35,1

25

0

5

0,002

30

70

9,4

25

1

4

0,01

30

70

35,64

25

0

6

0,005

40

70

34,61

25

0

6

0,005

20

70

35,37

25

0

9

0,001

30

70

34,7

25

0

9

0,001

10

70

34,61

25

0

9

0,0001

10

70

35,46

25

0

15

0,005

10

70

35,37

0

10

0,005

25

70

40

28

0

10

0,005

25

60

30,56

28

0

10

0,0001

10

100

31

28

0

10

0,0001

30

100

5

28

1

5

0,005

20

100

4,1

28

1

5

0,0005

20

100

30,82

28

0

15

0,0005

30

100

31,37

28

0

15

0,0002

45

100

31

28

0

10

0,0002

30

100

31,9

28

0

8

0,0003

20

100

30,6

28

0

12

0,0001

20

100

30,65

28

0

11

0,0001

15

100

30,78

28

0

10

0,00005

20

100

31,41

28

0

10

0,0001

20

90

4,55

28

1

7

0,00015

15

100

31

28

0

14

0,00015

15

100

32,09

28

0

10

0,0002

50

100

31,77

28

0

12

0,0002

40

100

31,59

28

0

13

0,0002

35

100

31,54

28

0

13

0,0001

30

100

31,95

28

0

14

0,0001

40

100

31,91

28

0

12

0,0001

45

100

31,46

28

0

12

0,00015

15

100

31,68

28

0

12

0,0001

25

100

33,12

28

0

30

0,0001

30

100

32,22

28

0

15

0,0001

30

100

 

32,15

28

0

10

0,0001

33

100

 

32,09

28

0

10

0,00012

16

100

 

31,5

28

0

11

0,00013

13,5

100

 

32,04

28

0

10

0,00011

14,5

100

 

32,04

28

0

11

0,00012

14

100

 

32,36

28

0

10

0,00011

13

100

 

32,21

28

0

11

0,0001

15

100

 

32,26

28

0

11

0,0001

10

100

 

32,36

28

0

10

0,0001

25

100

 

33,57

28

0

8

0,00008

20

100

 

32,09

28

0

12

0,0009

18

100

 

32,22

28

0

10

0,0006

17

100

 

32,54

28

0

9

0,0007

20

100

 

32,4

28

0

11

0,0003

15

100

 

32,49

28

0

11

0,0002

14

100

 

32,85

28

0

9

0,00015

13

100

 

32,76

28

0

12

0,00015

16

100

 

32,72

28

0

12

0,00015

20

100

 

32,99

28

0

13

0,00015

20

100

 

33,21

28

0

11

0,00015

20

100

 

33,12

28

0

16

0,00015

20

100

 


Таблица Б.2 - Экспериментальные данные проверки работоспособности нейронной сети

tжелаемое, c

Вылет, true/false

Кп

Ки

Кд

tистин, с

Вылет, true/false

29

0

11

0.0001

17

29.5

0

28

0

10

0.0001

16

29.5

0

26

15

0.0001

20

30

0

25

0

12

0.0002

19

29

0

24

0

11

0.0012

22

31

0

22

0

9

0.001

24

35

0

20

0

8

0.0001

30

12

1

18

0

7

0.0005

18

20

1

16

0

7

0.001

22

16

1

14

0

6

0.015

19

13

1

10

1

10

0.01

15

60

0

6

1

13

0.005

20

50

0

4

1

7

0.05

20

6.5

1

2

1

5

0.01

30

9

1



ПРИЛОЖЕНИЕ В

Листинг нейронной сети

% Solve an Input-Output Fitting problem with a Neural Network

% Script generated by NFTOOL

% Created Fri Sep 12 00:48:42 NOVST 2014

%

% This script assumes these variables are defined:

%

% Vifodnie - input data.

% koefic - target data.= Vifodnie';= koefic';

% Create a Fitting Network= 3;= fitnet(hiddenLayerSize);

% Setup Division of Data for Training, Validation, Testing.divideParam.trainRatio = 70/100;.divideParam.valRatio = 20/100;.divideParam.testRatio = 10/100;

% Train the Network

[net,tr] = train(net,inputs,targets);

% Test the Network= net(inputs);= gsubtract(targets,outputs);= perform(net,targets,outputs);

% View the Network(net)

% Plots

% Uncomment these lines to enable various plots.

%figure, plotperform(tr)

%figure, plottrainstate(tr)

%figure, plotfit(net,inputs,targets)

%figure, plotregression(targets,outputs)

%figure, ploterrhist(errors)

Похожие работы на - Исследование и разработка нейронной сети для настройки коэффициентов ПИД-регулятора

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!