Дипломная работа Компьютерная модель робота Phoenix Государственный Университет Аэрокосмического Приборостроения

advertisement
1
Государственный Университет Аэрокосмического Приборостроения
Дипломная работа
Компьютерная модель робота Phoenix
Руководитель: к.т.н., начальник СКБ ГУАП Астапкович А. М.
Студент: Астапкович Д. А.
2
ОГЛАВЛЕНИЕ
ОГЛАВЛЕНИЕ ............................................................................................................................................ 2
ВВЕДЕНИЕ ................................................................................................................................................. 3
ПОСТАНОВКА ЗАДАЧИ ........................................................................................................................ 14
1. ОБЗОР СИМУЛЯТОРОВ РОБОТОВ И СИСТЕМ РАСПОЗНАВАНИЯ ОБРАЗОВ ................. 16
1.1. Обзор робототехнических симуляторов ................................................................................. 16
1.2. Распознавание образов. Краткий обзор .................................................................................. 21
1.2.1.
Введение ............................................................................................................................ 21
1.2.2.
Определения ...................................................................................................................... 24
1.2.3.
Методы распознавания образов....................................................................................... 25
1.2.4.
Общая характеристика задач распознавания образов и их типы ................................. 26
2. ВЫБОР ПРОГРАММНОГО И АППАРАТНОГО ОБЕСПЕЧЕНИЯ ........................................... 29
2.2. Выбор программного инструментария ................................................................................... 29
2.2.1.
Требования к инструментарию ........................................................................................ 29
2.2.2.
Выбор среды математического моделирования............................................................. 29
2.2.3.
Выбор среды для разработки трехмерного симулятора ................................................ 30
2.3. Выбор аппаратного обеспечения ............................................................................................. 32
3. ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ И ИНТЕРФЕЙСОВ ........................................................ 34
3.1. Общая схема работы ................................................................................................................. 34
3.2. Математическая модель робота ............................................................................................... 36
3.2.1.
Краткий обзор двухколесных роботов ............................................................................ 36
3.2.2.
Уравнения, описывающие положение колес робота ..................................................... 38
3.2.3.
Уравнения, описывающие работу двигателей ............................................................... 41
3.2.4.
Общая система уравнений, описывающая движение робота ....................................... 41
3.2.5.
Верификация математической модели ........................................................................... 43
3.2.6.
Движение по прямой ........................................................................................................ 43
3.2.7.
Вращение на месте ............................................................................................................ 45
3.2.8.
Движение по окружности ................................................................................................. 47
3.3. Алгоритм работы симулятора .................................................................................................. 49
3.4. Разработка интерфейсов ........................................................................................................... 52
3.4.1.
Структура файла для передачи экспериментальных данных в Mathсad ..................... 52
3.4.2.
Интерфейс для чтения экспериментальных данных в Mathсad. .................................. 53
3.4.3.
Интерфейс настроек симулятора ..................................................................................... 55
3.4.4.
Интерфейс симулятора ..................................................................................................... 57
Заключение ................................................................................................................................................ 59
СПИСОК ЛИТЕРАТУРЫ ........................................................................................................................ 60
ПРИЛОЖЕНИЯ......................................................................................................................................... 61
Листинг программы на Dark Basic ...................................................................................................... 61
Содержание файла настроек ................................................................................................................ 71
Плакаты к дипломной работе .............................................................................................................. 72
3
ВВЕДЕНИЕ
В настоящее время все больше значение приобретает встроенных систем
управления на основе искусственного интеллекта.
Разработка фиксированных алгоритмов не позволяет создавать действительно
гибкие универсальные системы, поэтому растет интерес к системам с нечеткой
логикой и нейронным сетям.
Эти системы работают по принципам, заложенным в человеческую систему
мышления. Способ обработки информации мозгом в корне отличаются от методов,
применяемых в обычных цифровых компьютерах. Мозг представляет собой
чрезвычайно сложный, нелинейный, параллельный компьтер (систему обработки
информации).
Он
обладает
способностью
организовать
свои
структурные
компоненты, называемые нейронами, так, чтобы они могли выполнять конкретные
задачи (распознавание образов, обработка сигналов органов чувств, моторные
функции) во много раз быстрее, чем могут позволить самые быстродействующие
компьютеры.
Принципиальное отличие мозга от современных компьютеров заключается в
том, что мозг можно рассматривать как параллельную вычислительную структуру
(ВС), в то время как современные микропроцессоры явлются последовательными
ВС. В соответствии с эмперическим законом Мура, мощность вычислительных
устройств растет экспоненциально, и эта тенденция сохраняется уже около 50 лет.
Так же неуклонно уменьшается их стоимость, что позволило перейти к
использованию
искусственных
нейронных
сетей
(ИНС),
реализуемых
на
последовательных ВС.
В фундаментальной монографии [1] рассматриваются основные принципы
построения искусственных нейронных сетей и строгое математическое обоснование
принципов, лежащих в их основе применительно к широкому спектру прикладных
задач. Следует подчеркнуть, что в настоящее время ведутся исследования в области
использования ИНС для обработки видеоизображений [1].
4
Дипломная работа посвящена разработке программно-инструментальной
среды ‘Phonix-2’, в первую очередь ориентированной на проведение исследований в
области использования ИНС в качестве систем управления мобильным автономным
объектом, использующим для ориентации в пространстве изображения с бортовых
видеокамер. Более конкретно, разрабатываемая система ориентирована на ИНС,
настраиваемых по методике “обучение с учителем”.
В силу простоты структуры систем управления на базе нейронных систем и
доступности их эффективной реализации на современной элементной базе
ключевым аспектом использования нейронных сетей является процесс обучения.
Под процессом обучения в соответствии с определением, использованным в [1]
понимается
процесс,
в
котором
свободные
параметры
нейронной
сети
настраиваются посредством моделирования среды, в которую эта сеть встроена. Тип
обучения определяется способом определения этих параметров.
На рис. В.1. показана блочная диаграмма, иллюстрирующая форму обучения с
учителем.
Концептуально участие учителя можно рассматривать как наличие знаний об
окружащей среде, представленных в виде пар «вход-выход». При этом сама среда
неизвестна обучаемой нейронной сети. Когда учителю и сети подается обучающий
вектор из окружающей среды, учитель на основе своих знаний может сформировать
и передать обучаемой сети желаемый отклик. Вектором, описывающим состояние
среды, может быть как набор показаний датчиков, так и графическое изображение
или видео ряд. Этот желаемый результат представляет собой оптимальные действия,
которые должна выполнить нейронная сеть. Сеть также вырабатывает отклик,
основанный на внутренних параметрах. Обучением, по сути, явялется процесс
корректировки параметров сети с учетом обучаеющего вектора и сигнала ошибки.
Сигнал ошибки – это разность между желаемым результатом и текущим откликом
нейронной сети, который позволяет передавать знания учителя в сеть. После
окончания обучения сеть может работать со средой автономно.
5
Среда
Вектор,
описывающий
состояние
среды
Учитель
Желаемый отклик
+
∑
Нейронная
сеть
Фактический отклик Сигнал ошибки
Рис. В.1. Блочная диаграмма обучения с учителем
Конструирование нейронной сети, призванной генерировать выходной сигнал
в
ответ
на
входной
пример,
эквиваленто
обучению
сети
построению
гиперповерхности, т.е. многомерному отображению, определяющей выходной
вектор в терминах второго. Другими словами, обучение рассматривается как задача
реконструкции гиперповерхности на основе множества точек, которое может быть
довольно разреженным.
Парадигма обучения с учителем применительно к системе управления
автономного мобильного робота, реализованной на базе нейронной сети,
исследовалась
в
проекте
СКБ
ГУАП
«Феникс-1»,
результаты
которого
опубликованы в сборнике докладов [2] .
Целью всего проекта в целом являлось освоение методологии синтеза
нейросетевого регулятора по методике обучения через показ, применительно к
задаче управления мобильным объектом, который отслеживает свое положение
пространство с помощью видеокамеры. В результате реализации
исследовательского проекта
этого
была продемонстрирована возможность создания
нейросетевой системы управления обеспечивающей решение задачи распознавания
образа в реальном масштабе времени.
Внешний вид робота и стуктура бортовой системы управления роботом
Феникс-1 представлен на рис. В.2. Робот имеет два ведущих колеса с независимым
приводом и оснащен web-камерой Creative для получения изображений размеров
320х240 пикселей с частотой 30 кадров/сек. и ноутбуком Toshiba (1.2 ГГц). Бортовая
6
система управления обеспечивает возможность реализации как стандартных, так и
нейросетевых алгоритмов управления.
В рамках проекта задача решалась применительно к синтезу нейронного
регулятора для управления перемещением робота, который бы обеспечивал
отслеживание контрастной полосы на полу [2]. В автономном режиме для оценки
текущего положения относительно полосы использовалось изображение с камеры
робота. Эта информация обрабтывалась программным обеспечением ноутбука,
который фактически представлял собой оптический датчик.
Синтез нейронного регулятора в рамках методики проводится в два этапа. На
первом
этапе
управления
роботом
осуществляется
традиционной
схемой
управления или оператором. При этом производится запись показаний датчиков и
управляющих воздействий. На втором этапе полученные данные использовались
для расчета коэффициентов нейронного регулятора.
В процессе работ над проектом был решен рял сложных технических задач по
созданию аппаратно-программного комплекса. В результате был предложен,
реализован и экспериментально проверен эффективный метод синтеза нейронных
регуляторов по методике обучения через показ.
Web-камера
Ноутбук
RS-232
Датчики числа
оборотов
Контроллер
ASK Lab
Мосты управления
двигателями
Рис. В.2. Внешний вид робота и стуктура системы управления роботом Феникс-1
7
Управляющее
воздействие
(отклик сети)
Сенсоры
(входной вектор)
W
S1
A1
Si
Ak
Sn
Am
Рис. В.3. Система управления на одном нейроне
Модель нейронной сети (рис. В.3.) реализована в виде матрицы весов W,
которая имеет размер m на n. Эта матрица определяет зависимость m выходов
управления от n входных сигналов с сенсоров. Для времени tk отклик нейронной
сети представляет собой вектор управления A(tk), который вычисляется по формуле:
W11 W12 W13 ….W1 i ….. W1n
S1(tk )
A1(tk )
W21 W22 W23 ….W2 i ….. W2n
S2 (tk )
A2 (tk )
……………………………….
Wm1 Wm2 W23 ….W2 i ….. Wmn
*
.......
=
……..
Sn(tk )
(В.1)
Am(tk )
где
Si (tk ) – показания i-го датчика в момент времени tk,
Ak (tk ) – сигнал управления по k-му каналу в момент времени tk,
Wi,j
– вес, определяющий вклад показаний
i-го датчика на сигнал
управления по k-ому каналу управления.
В векторно-матричных обозначениях система В.1 компактно записывается в
виде
W * S(tk ) = A ( tk )
(В.2).
Элементы матрицы W представляют собой свободные параметры, которые
определяются на этапе обучения нейронной сети.
8
Процесс обучения происходит следующим образом – формируется вектор w,
который состоит из неизвестных коэффициентов Wi,j матрицы W:
w = [W11, … W1n, W21, … W2n, ……
Wm1, … Wmn ]T
Схожим образом формируется вектор a:
a
= [A1(t1) .. Am(t1), A1(t2) .. Am(t2), …….
A1(tp) .. Am(tp) ] T
Свободные параметр являются решением линейной системы уравнений S∙w =
a, где S представляет собой разряженную матрицу, сформированную из показаний
сенсоров:
S1(t1) S2(t1) .. Sn(t1)
0 ….. ………………..… ……………………………
0
0
.. … 0
S1(t1) S2(t1) .. Sn(t1) 0 ……………………………..
0
… ……
… …
… …… …
… … ….
0 ……………………………………………………… …….0 S1(t1) S2(t1) .. Sn(t1)
S=
S1(t2) S2(t2) .. Sn(t2)
0
0
S1(t2) S2(t2) .. Sn(t2)
……..
0
…… …………………………………………….
0
0 ………………………………
0
… ……
… …
…………………
………..
0 ……………………………………………………… …….0 S1(t2) S2(t2) .. Sn(t2)
………………………………………………………………………………………….
S1(tp) S2(tp) .. Sn(tp) 0
…… ………………………………………………… 0
0
……
0
S1(tp) S2(tp) .. Sn(tp) 0 ……………………………… …. 0
… ……
… …
…………………
………..
0 ……………………………………………………………. S1(tp) S2(tp) .. Sn(tp)
Для
получения
корректного
решения
необходимо
использовать
регуляризацию Тихонова. В этом случае решением будет являться такой набор
коэффициентов, при котором нормы ||S∙w – a|| и ||w|| будут минимальны:
F(w) = IIS∙w-aII + IIwII
(В.3).
Аналитечески решение выражается следующим образом:
9
(В.4).
W = (ST S +  E) –1 ST a
Более подробно вопрос обучения нейронной сети рассмотрен в работе [3].
Матрица W определяется в ходе обучения, схема которого показана на рис.
В.4.
ОПЕРАТОР
Обучающая
последовательн
ость
I (Tk) k=1….p
Обучающие
s (Tk), ( Si Tk),
i=1..Ns )
Среда
Данные с
сенсоров
s(t)
Обучающий
интерфейс
Обучающая
последовател
ьность
a(Tk)
( Ai(Tk)
i=1..Na )
Wi
i=1..Nw
Реальный
сигнал
управления
a(t)
Сформированный
вектор w
УЧИТЕЛЬ
Данные, собранные во время обучения
S1(T1)
S2(T1)
S1(T2)
S2(T2)
S1(Tp)
S2(Tp)
…….
……
…….
SNs(T1)
Sn(T2)
Sn(Tp)
Обучающие данные с сенсоров
A1(T1)
……
Am(T1)
A1(T2)
…….
Am(T2)
A1(Tp)
…….
Am(Tp)
Векторы управления оператора
Рис. В.4. Схема обучения через показ
Одним из ключевых элементов проекта являлась разработка оптического
датчика, обеспечивающего возможность измерять положение робота относительно
контрастной полосы на полу. Основным критерием при синтезе датчика являлось
быстродействие алгоритмов распознавания и управления, так как с камеры
10
поступает большой объем видеоданных (25-30 кадров в секунду). Это обусловлено
тем, что в реальном времени можно отслеживать положение робота на полосе очень
точно, что обеспечивает наибольшую скорость движения.
Базовая идея выделения полосы основа на предположении, что полоса имеет
однородный цвет и достаточно контрастна по сравнению с объектами фона. Идея
алгоритма проиллюстрирована рис. В.5, на котором схематично показан кадр с
камеры.
Ось, проходящая через
центр робота
Контрастная
полоса
Измерительная область
Отклонение D
Рис. В.5. Схематичное изображение кадра
Алгоритм нахождения отлонения D был реализован методом центра масс. В
соответствии с этим методом положение полосы Nc
в измерительной области
находится по формуле:
n
Nc 
L
i 0
n
i
*i
L
i 0
(В.4),
i
где Nc – номер пикселя в центре области распознавания;
n – число пикселей в области распознавания;
Li – яркость i-го пикселя.
11
Вычитая
из
положения
центра
области
распознавания
положение
фактического центра области и выполнив нормировку, можно получить искомое
отклонение D.
Для
более
точного
определения
положения
в
реальном
проекте
использовалось пять областей распознавания. На рис. В.6. приведено изображение с
камеры робота. Области распознавания обозначены символами D1-D5.
Рис. В.6. Области распознавания на реальном кадре
В одной из серий проведенных экспериментов робот управлялся ПИДрегулятором по параметру D, рассчитанному для области D1. При этом
записывались данные по всем измерительным полосам D1-D5, которые в
дальнейшем использовались для расчета коэффициентов нейронной сети.
Как показали проведенные эксперименты, робот под управлением неронной
сети, обученной по экспериментальным данным, уверенно проходил трассу
испытательного полигона.
Анализ экспозиций, представленных на военно-морских салонах, проводимых
в Санкт-Петербурге (Ленэкспо), показал, что в настоящее време все более широкое
применение находят виртуальные тренажеры. На них происходит обучение
управлению вертолетами, кораблями, подводными лодками, роботы-саперы и т.п.
12
Аналогичный подход с учетом конкретных особенностей широко используется при
проведении опытно-конструкторских разработок сложных систем.
Еще до начала проекта было очевидно, что получение экспериментальных
данных из реальной среды явлется дорогостоящим процессом. Для ежегодных
международных робототехнических соревнований в МГУ им. Ломоносова по
скоростному прохождению трассы используется полигон размером 6 на 10 метров
со своеобразной шахматной текстурой. Создание подобного полигона в рамках
ограничений проекта по ресурсам было невозможным.
Поэтому в рамках проектах было принято решение о создание виртуального
полигона для получения обучающих видео последовательностей. Разработанное
программное обеспечение обладало следующими характеристиками:
 размеры полигона и его текстура легко изменяемы
 широкий диапазон настроек камеры: положение, угол наклона,
физические параметры
 неограниченное количество камер
 использование фото и видео материалов с обычных камер
 дешевизна и доступность программного обеспечения
На рис. 1.5 показан вид виртуального полигона, полученный с помощью
разработанного программного обеспечения.
13
Рис. 1.5. Внешний вид виртуального полигона
Накопленный в рамках студенческого-исследовательского проекта “Phoenix1”, опыт позволил сформулировать задачи для проекта “Phoenix-2”, частью которого
является настоящая дипломная работа.
Результатом
среда
“Phoenix-2”,
дипломной работы является программно-инструментальная
используемая
в
СКБ
Государственного
Университета
Аэрокосмического Приборостроения в качестве инструмента для исследования
систем управления на базе ИНС.
14
ПОСТАНОВКА ЗАДАЧИ
Целью
дипломного
проекта
является
разработка
программно-
инструментальной среды, обеспечивающей возможность решения широкого круга
задач, возникающих при исследовании систем управления автономных мобильных
объектов, реализуемых на базе нейронных сетей.
С учетом современных тенденций развития такого рода систем одним из
главных требований к среде являлась возможность работы с видеоизображениями
среды, в которой находится робот.
По определению, обучение через показ
базируется на использовании экспериментальных данных.
Как
показал
опыт,
накопленный
в
рамках
проекта
Феникс-1[2],
представленного во введении цели обучения могут очень сильно различаться и
видоизменяться в процессе обучения.
Несмотря на исследовательский характер
проекта и небольшие размеры как робота, так и полигона, проведение даже одной
серии экспериментов является трудоемким мероприятия.
В рамках проекта Феникс-2 было принято решение обеспечить возможность
проведения экспериментов с математической моделью робота в виртуальной среде.
Этот подход не отменяет необходимости проведения экспериментов с реальным
объектом в реальной среде, но позволяет существенно сократить трудозатраты на
проведение исследований и конструкторских работ. Следует отметить, что такой
подход имеет универсальный характер и может быть использован и при решении
широкого круга практических задач.
Такая постановка подразумевает решение ряда задач:
 разработка
математической
модели
робота,
обеспечивающей
возможность его управления и эволюции в виртуальной среде;
 разработка модели виртуальной среды;
 сохранение получаемых экспериментальных данных;
 разработка
средств
обеспечения
взаимодействия со средой
математического моделирования, что подразумевает
разработку
эффективных механизмов передачи данных между программами и
пользовательских интерфейсы для чтения и записи данных.
15
С учетом ограничений по ресурсам, которые имелись на выполнение
дипломной работы, в рамках общей схемы была проведена конкретизация
требований
к
отдельным
компонентам
разрабатываемой
программно-
инструментальной среды.
В качестве модели был выбран двухколесный робот, приводимый в движение
двумя электрическими двигателями. Используется модель идеального сцепления
колес робота с полигоном. Основные механические и электрические компоненты
двухколесного робота должны быть описаны в параметрическом виде, что
обеспечивает возможность проведения исследований с целым классом подобных
систем. Такие ограничения позволяет создать относительно простую модель робота,
понятную модель управления, а так же существенно сократить количество
вычислений при обработке данных.
Управление задается с клавиатуры или джойстика – данные с этих
контроллеров определяют напряжения на двигателях согласно математической
модели
В качестве виртуальной среды используется плоский ненаклонный полигон
произвольного размера с произвольной текстурой.
Задачи экспериментов определяются расстановкой объектов по полигону, а
так же описываются текстом, который выводится на экран. Контроль выполнения
здания осуществляется только человеком на этапе записи или на этапе обработки
данных в среде математического моделирования.
Инструмент должен визуализировать траекторию движения робота согласно
математической модели в двумерном пространстве.
Программно-инструментальная среда должна обеспечивать взаимодействие
со средой математического моделирования.
16
ОБЗОР
1.
СИМУЛЯТОРОВ
РОБОТОВ
И
СИСТЕМ
РАСПОЗНАВАНИЯ ОБРАЗОВ
1.1. Обзор робототехнических симуляторов
Обзор проводился по материалам различных робототехнических сайтов,
названия которых приведены в списке литературы. В результате удалось найти
аналог, который кратко описан. В заключении описаны причины, по которым нельзя
использовать существующие разработки.
Одной из первых программ такого рода был Autonomous Micro Robot Soccer
Simulator, которая была больше похожа на игрушку, чем на серьезную программу,
— модель поведения робота выбиралось из нескольких вариантов без возможности
редактирования.
Более серьезным программным продуктом является ARC (Autonomous Robot
Controller), разработанный Ксави Маркезом. Эта программа не позволяет
моделировать своего собственного робота от начала до конца, но дает возможность
проверить поведение робота в определенном окружении при наличии тех или иных
датчиков.
Этот симулятор обеспечивает возможность задания типа, количества и мест
расположения датчиков, реакцию на их сигналы, окружение робота (стены,
прозрачные объекты, линии на полу, координатные точки и т.д.). К недостаткам
можно отнести двухмерность (вид сверху) и ограничение на тип робота (только два
колеса). Следует отметить компактность кода, реализующего симулятор, размер
которого примерно 750 Кбайт.
Eще одна программа такого рода MOBOTSIM. В сравнении с ARC этот
симулятор немного удобнее из-за встроенного интерпретатора языка Sax Basic, что
позволяет задавать параметры робота непосредственно в симуляторе.
Как
показал
анализ
наиболее
близким
аналогом
инструментальной среды является программный продукт
программно-
Electric Drive Train
17
Simulator. Этот программный продукт обеспечивает возможность конструирования
робота и по целому ряду свойств близок к задачам дипломного проекта.
Это мощный
инструмент, который позволяет выбрать колесную схему
робота, тип моторов и аккумуляторов и ряд других парметров. Результатом работы
этой программы является возможность оценки определения эксплуатационных
показателей заданной комбинации компонентов на ранних этапах проектирования
механической части робота.
В EDTSim обеспечивает возможность выбора 12 вариантов колесных схем,
которые приведены в таблице 1.1. Названия схем используются в программе как
параметр, поэтому названия схем приведены без перевода.
Таблица 1.1. Варианты колесных схем
18
Компоненты
оборудования
робота
определяются
рядом
необходимых
параметров. На рис. 1.1. показана вкладка Motor, с помощью которой выбирается
19
электродвигатель для робота. Есть возможность загрузки описаний наиболее
популярных моделей электродвигателей, а так же создание собственных описаний с
использованием внутренней утилиты
Motor Editor. Остальные параметры
настраиваются схожим образом.
Список параметров электродвигателей краткими описаниями и переводами
приведен ниже:
Рис. 1.1. Вкладка Motor
 Name – название или номер электродвигателя
 Manufacturer – название компании, производителя электродвигателя
 Weight/mass – вес или масса электродвигателя
 Nominal voltage – номинальное напряжение
 Armature resistance – сопротивление обмотки
 Stall current – сила тока при номинальном напряжении
 Torque constant – вращающий момент при подаче напряжения в 1 В
 Stall torque – вращающий момент блокированного ротора при подаче
номинального напряжения
 Angular-velocity constant – угловая скорость ротора при подаче напряжения в
1В
20
 No-load angular velocity – угловая скорость ротора без нагрузки при
номинальном напряжении
 No-load current – сила тока при номинальном напряжении
 Peak Power – максимальная генерируемая мощность, которую может
выработать электродвигатель. Пик мощности обычно достигается при 50%
тока при заблокированном роторе и 50% частоты вращения без нагрузки.
 Peak efficiency – коэффициент полезного действия
 Rotor Inertia – инерция вращения ротора электродвигателя
 Notes – второстепенная информация об электродвигателе (размер мотора,
фирмы-поставщики)
 Motors
in
series
–
число
моторов,
соединённых
последовательно.
Предполагается, что все валы электродвигателей соединены механически.
 Motors
in
parallel
–
число
моторов,
подключенных
параллельно.
Предполагается, что все валы электродвигателей соединены механически.
После определения всех параметров, можно протестировать поведение робота
на виртуальном полигоне. Управление задается с помощью клавиатуры или
джойстика. На рис. 1.2. показана окно программы, в котором визуализируется
трехмерная модель робота и основные показатели работы системы.
Рис. 1.2. Вкладка Test drive display
21
Список существующих симуляторов не исчерпывается описанными выше.
Однако стоит отметить, что неупомянутые программные пакеты либо работают под
опереционной системой Unix, либо представляют собой дополнения к пакетам типа
Mathematica, либо являются коммерческим ПО, которое поставляется вместе с
наборами деталей.
Описанные в этом разделе симуляторы могут быть использованы только как
показатели качества, которое предлагается современными разработками. Однако
они никоим образом не могут быть использованы для сбора информации,
необходимой при создании алгоритмов обучения. Причин несколько: нет
информации о физической модели,
нет возможности получить все данные о
системе. Так же нельзя изменять количество и положения камер, поэтому
невозможно получать последовательнсти видеобразов.
1.2.
Распознавание образов. Краткий обзор
Данный обзор выполнен на основании фундаментальных монографий [3], [4].
1.2.1. Введение
Достаточно долгое время задача распознавания рассматривалась человеком со
стороны биологического и психологического аспектов. При этом изучению
подвергались лишь качественные характеристики, которые не позволяли точно
описать механизм функционирования. Получение функциональных зависимостей
было, как правило, связано с исследованием рецепторов органов слуха, осязания или
зрения. Однако принципы формирования решения оставались загадкой. Считается,
что основным заблуждением на заре исследования было мнение о том, что мозг
функционирует по определенным алгоритмам, а следовательно, выяснив эту
систему правил, можно ее воссоздать с помощью постоянно развивающихся
вычислительных и технических средств.
22
Основанная Норбертом Винером в начале XX века новая наука, получившая
название кибернетика (наука об общих закономерностях процессов управления и
передачи информации в машинах, живых организмах и обществе), позволила в
исследование вопроса распознавания образов ввести количественные методы.
Другими словами, представить процесс распознавания образов (по сути - природное
явление) математическими методами.
В процессе жизнедеятельности человека число принимаемых им решений
конечно, но, в то же время, количество определяющих факторов может быть
бесконечным. Например, на улице может идти дождь: проливной, моросящий,
другими словами, различной силы, однако человек может принять лишь два
решения – брать ему зонт или нет.
Количество возможных решений зависит от жизненного опыта. Поэтому
автоматизация
ряда
процессов
предполагает
под
собой
конструирование
автоматических устройств, способных реагировать на множество изменяющихся
характеристик
внешней
среды
каким-то
определенным
количеством
удовлетворительных для человека реакций. Это означает реализацию главных
особенностей принципов распознавания, заложенных природой, обеспечение
реагирования на совокупность изменений.
Создание устройств, выполняющих функции распознавания различных
объектов, в большинстве случаев обеспечивает возможность замены человека
специализированным автоматом. Благодаря этому, значительно расширяются
возможности
сложных
систем,
выполняющих
различные
информационные,
логические, аналитические задачи. Следует отметить, что качество работ,
выполняемых человеком на рабочем месте, зависит от многих факторов
(квалификации, опыта, добросовестности и т. д.). В то же время исправный автомат
действует однообразно и обеспечивает всегда одинаковое качество. Автоматический
контроль
сложных
систем
позволяет
вести
мониторинг
и
обеспечивать
своевременное обслуживание, идентификацию помех и автоматическое применение
соответствующих методов шумоподавления, позволяет повысить качество передачи
23
информации. Также понятно, что использование автоматических систем в ряде
задач может обеспечить невозможное для человека быстродействие.
В течение достаточно продолжительного времени проблема распознавания
привлекает внимание специалистов в области прикладной математики, а затем и
информатики. Так, в частности, отмечают работы Р. Фишера, выполненные в 20-х
годах и приведшие к формированию дискриминантного анализа как одного из
разделов теории и практики распознавания. В 40-х годах А. Н. Колмогоровым и А.
Я. Хинчиным поставлена задача о разделении смеси двух распределений.
В 50-60-е годы ХХ века на основе массы работ появилась теория
статистических решений. В результате этого появления найдены алгоритмы,
обеспечивающие отнесение нового объекта к одному из заданных классов, что
явилось началом планомерного научного поиска и практических разработок. В
рамках кибернетики начало формироваться новое научное направление, связанное с
разработкой теоретических основ и практической реализации устройств, а затем и
систем, предназначенных для распознавания объектов, явлений, процессов. Новая
научная дисциплина получила название "Распознавание образов".
Таким образом, базой для решения задач отнесения объектов к тому или
иному классу послужили, как это отмечается сегодня, результаты классической
теории
статистических
решений.
В
ее
рамках
строились
алгоритмы,
обеспечивающие на основе экспериментальных измерений параметров (признаков),
характеризующих
этот
объект,
а
также
некоторых
априорных
данных,
описывающих классы, определение конкретного класса, к которому может быть
отнесен распознаваемый объект.
В последующем математический аппарат теории распознавания расширился
за счет применения:
- разделов прикладной математики; теории информации;
- методов алгебры логики;
- математического программирования и системотехники.
24
1.2.2. Определения
Распознавание образов (объектов) – задача идентификации объекта или
определения
каких-либо
распознавание)
или
его
свойств
аудиозаписи
по
его
(акустическое
изображению
распознавание)
(оптическое
и
другим
характеристикам.
Образ
–
классификационная
группировка в системе классификации,
объединяющая (выделяющая) определенную группу объектов по некоторому
признаку. Образы обладают характерным свойством, проявляющимся в том, что
ознакомление с конечным числом явлений из одного и того же множества дает
возможность узнавать сколь угодно большое число его представителей. Образы
обладают характерными объективными свойствами в том смысле, что разные люди,
обучающиеся на различном материале наблюдений, большей частью одинаково и
независимо друг от друга классифицируют одни и те же объекты. В классической
постановке задачи распознавания универсальное множество разбивается на частиобразы. Каждое отображение какого-либо объекта на воспринимающие органы
распознающей системы, независимо от его положения относительно этих органов,
принято называть изображением объекта, а множества таких изображений,
объединенные какими-либо общими свойствами, представляют собой образы.
Методика отнесения элемента к какому-либо образу называется решающим
правилом. Еще одно важное понятие – метрика – способ определения расстояния
между элементами универсального множества. Чем меньше это расстояние, тем
более похожими являются объекты (символы, звуки и др.) – то, что мы распознаем.
Обычно элементы задаются в виде набора чисел, а метрика – в виде функции. От
выбора представления образов и реализации метрики зависит эффективность
программы, один алгоритм распознавания с разными метриками будет ошибаться с
разной частотой.
Адаптация – это процесс изменения параметров и структуры системы, а
возможно – и управляющих воздействий, на основе текущей информации с целью
25
достижения определенного состояния системы при начальной неопределенности и
изменяющихся условиях работы.
Обучение – это процесс, в результате которого система постепенно
приобретает
способность
отвечать
нужными
реакциями
на
определенные
совокупности внешних воздействий, а адаптация – это подстройка параметров и
структуры системы с целью достижения требуемого качества управления в условиях
непрерывных изменений внешних условий. Обучением обычно называют процесс
выработки в некоторой системе той или иной реакции на группы внешних
идентичных сигналов путем многократного воздействия на систему внешней
корректировки. Такую внешнюю корректировку в обучении принято называть
"поощрениями" и "наказаниями". Механизм генерации этой корректировки
практически полностью определяет алгоритм обучения. Самообучение отличается
от обучения тем, что здесь дополнительная информация о верности реакции системе
не сообщается.
1.2.3. Методы распознавания образов
Метод перебора. В этом случае производится сравнение с базой данных, где
для каждого вида объектов представлены всевозможные модификации отображения.
Например, для оптического распознавания образов можно применить метод
перебора вида объекта под различными углами, масштабами, смещениями,
деформациями и т. д. Для букв нужно перебирать шрифт, свойства шрифта и т. д. В
случае распознавания звуковых образов, соответственно, происходит сравнение с
некоторыми известными шаблонами (например, слово, произнесенное несколькими
людьми).
Второй подход - производится более глубокий анализ характеристик образа. В
случае оптического распознавания это может быть определение различных
26
геометрических характеристик. Звуковой образец в этом случае подвергается
частотному, амплитудному анализу и т. д.
Следующий метод - использование искусственных нейронных сетей (ИНС).
Этот метод требует либо большого количества примеров задачи распознавания при
обучении, либо специальной структуры нейронной сети, учитывающей специфику
данной задачи. Тем не менее, его отличает более высокая эффективность и
производительность.
1.2.4. Общая характеристика задач распознавания образов и их типы
Общая структура системы распознавания и этапы в процессе ее разработки
показаны на рис. 1.3.
Рис. 1.3. Структура системы распознавания
Задачи распознавания имеют следующие характерные этапы:
 преобразование исходных данных к виду, удобному для распознавания;
 собственно
распознавание
определенному классу)
(указание
принадлежности
объекта
27
В этих задачах можно вводить понятие аналогии или подобия объектов и
формулировать правила, на основании которых объект зачисляется в один и тот же
класс или в разные классы.
Так же можно оперировать набором прецедентов-примеров, классификация
которых известна и которые в виде формализованных описаний могут быть
предъявлены алгоритму распознавания для настройки на задачу в процессе
обучения.
Трудности решения задач распознавания связаны с невозможностью
применять
без
модификаций
классические
математические
методы
(часто
недоступна информация для точной математической модели или выигрыш от
использования модели и математических методов несоизмерим с затратами).
Выделяют следующие типы задач распознавания:
 задача распознавания - отнесение предъявленного объекта по его
описанию к одному из заданных классов (обучение с учителем)
 задача автоматической классификации - разбиение множества объектов,
ситуаций, явлений по их описаниям на систему непересекающихся
классов (таксономия, кластерный анализ, самообучение)
 задача выбора информативного набора признаков при распознавании
 задача
приведения
исходных
данных
к
виду,
удобному
для
распознавания
 динамическое распознавание и динамическая классификация
 задача прогнозирования - суть предыдущий тип, в котором решение
должно относиться к некоторому моменту в будущем.
В существующих системах распознавания есть две наиболее сложные
проблемы:
28
 проблема 1001 класса – добавление 1 класса к 1000 существующим
вызывает трудности с переобучением системы и проверке данных,
полученных ранее
 проблема соотношения словаря и источников – наиболее сильно
проявляется
в
распознавании
речи.
Текущие
системы
могут
распознавать либо много слов от небольшой группы лиц, либо
маленькое количество слов от большой группы лиц. Так же трудно
распознавать большое количество лиц с гримом и гримасами
Нейронные сети не решают эти задачи напрямую, однако в силу своей
природы
они
гораздо
легче
адаптируются
к
изменениям
входных
последовательностей.
В рамках проекта Феникс-1 отрабатывалась возможность разработки
структуры оптического датчика на основании изображений получаемых с камеры
автономного
робота. Под структурой оптического датчика понималось выбор
количества и параметров зон анализа
изображения с камеры робота для
определения его положения относительно контрастной полосы.
Применительно к проекту Феникс-2 разрабатываемый инструментарий
должен был оеспесить возможность исследования
алгоритмов распознавания
применительно к кругу задач очерченных выше для трехмерных объектов.
29
2.
2.2.
ВЫБОР ПРОГРАММНОГО И АППАРАТНОГО ОБЕСПЕЧЕНИЯ
Выбор программного инструментария
2.2.1. Требования к инструментарию
Инструментарий, необходимый для реализации дипломной работы, можно
разделить на две части – среда математического моделирования для отладки
математической модели робота и среда для разработки трехмерного симулятора
робота.
Отдельно стоит отметить операционную систему – для разработки была
выбрана MS Windows XP как наиболее доступная и простая в использовании.
Поэтому и среда математического моделирования, и среда для разработки
трехмерного симулятора должны работать под управлением данной операционной
системы.
2.2.2. Выбор среды математического моделирования
Математическая модель разрабатывалась в среде Mathcad. Выбор обусловлен
удобством интерфейса и возможностью работы с внешними файлами. Ниже
приведено краткое описание.
MathCad
–
среда
для
выполнения
на
компьютере
разнообразных
математических и технических расчетов, снабженная простым в освоении и в работе
графическим интерфейсом. Она предоставляет пользователю инструменты для
работы с формулами, числами, графиками и текстами. В среде Mathcad доступны
более сотни операторов и логических функций, предназначенных для численного и
символьного решения математических задач различной сложности.
30
Уникальный графический формат Mathcad и интерфейс блокнота позволяют
сочетать стандартные математические обозначения, текст и графику на одном листе.
Приложение идеально подходит для обучения, вычислений и инженерных
расчётов. Открытая архитектура приложения в сочетании с поддержкой технологий
.NET и XML позволяют легко интегрировать Mathcad практически в любые ИТструктуры и инженерные приложения. Программа очень популярна среди
инженеров, она проста в использовании и не требует специальных навыков
программирования. Документация и справочная система Mathcad позволяют быстро
освоить приложение.
2.2.3. Выбор среды для разработки трехмерного симулятора
На данный момент область пакетов для простого программирования
трехмерной графики переживает фазу бурного роста. Количество предложений
разной стоимости (в том числе и бесплатно) растет с каждым месяцем, постоянно
расширяются возможности. В основном это пакеты для быстрой разработки
прототипов игр без больших временных затрат на программирование. Простота
разработки, однако, оказывает серьезное влияние на эффективность кода –
приложения
получаются
неоптимизированными,
поэтому
действительно
результатов серьезных в плане графических технологий с их помощью добиться
нельзя. Но для разработки приемлемого по качеству симулятора вполне подходят.
Программы этого типа поддерживают большое количество необходимых
функций: создание примитивов, создание нескольких камер, импорт внешних
графических файлов, работа с файловой системой и т.д.
Как показал анализ для решения поставленных задач и имеющихся
возможностей был выбран пакет Dark Basic Professional от компании The Game
Creators, опыт использования которого был накоплен при реализации проекта
Феникс-1[2].
31
В таблице 2.1 приведен список основных возможностей программы. Многие
термины не имеют корректного перевода, поэтому список приведен на английском
языке.
Таблица 2.1 Возможности Dark Basic Professional
Работа в трехмерном пространстве
Работа в двумерном пространстве
Binary Space Partitioning (BSP)
Super-Fast 2D Sprites
Potential Visibility Set
Mirror, Stretch and Blur
Pixel & vertex shaders
Fade, Transparency and Rotate
Real time shadows
Screen-Sized sprites
True reflections
Fast Collision
Lights
Animated Sprites
Matrices
Gamma Control
Advanced terrain
Scale Sprites
Multiple camera views
2D Drawing Functions
Particle system
Lightning fast 2D sprites
Polygon collision detection
Bump mapping
Light mapping
Environment mapping
Multitexturing
Bone based animations
Cartoon shading
Rainbow rendering
Low level access of object data
Vector and matrix manipulation
32
В пакет входит достаточно удобный текстовый редактор, менеджер проектов,
компилятор и отладчик. Неплохо реализована справочная подсистема, которая
содержит не только описание команд, но и реальные примеры использования.
На выходе можно получить выполняемый файл, который полностью
совместим с операционной системой MS Windows Xp.
2.3.
Выбор аппаратного обеспечения
Аппаратные требования взяты из соответствующей спецификации для Dark
Basic Professinal как наиболее ресурсоемкой части программного обеспечения. Они
изложены в таблицах 2.1. и 2.2.
Таблица 2.1. Минимальные аппаратные требования
Процессор:
300 MHz Pentium II Processor
Память:
64 MB of Ram
Скорость CD привода:
4x Speed CD-Rom Drive
Жесткий диск:
400 MB of hard disk space
Графическая карта:
Fully DirectX compatible Graphics Card with
64 MB Memory or more and Hardware 3D
Acceleration
Звуковая карта:
Direct X compatible Sound Card
Устройства ввода:
клавиатура и мышь
Таблица 2.2. Рекомендуемые аппаратные требования
Процессор:
733 MHz Pentium III Processor и выше
Память:
1024 MB
Скорость CD привода:
16x и больше
33
Жесткий диск:
400 MB of hard disk space
Графическая карта:
Fully DirectX compatible Graphics Card with
64 MB Memory or more and Hardware 3D
Acceleration
Звуковая карта:
Direct X compatible Sound Card
Устройства ввода:
клавиатура, мышь, джойстик
34
3.
3.1.
ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ И ИНТЕРФЕЙСОВ
Общая схема работы
Общая схема работы представлена на рис. 3.1. Общая математическая модель,
реализованная как в Mathcad, так и в Dark Basic, является ключевым элементом всей
системы. На данный момент это модель двухколесного робота, однако очевидно, что
можно смоделировать любую другую систему и реализовать ее схожим образом.
Параметры экспериментов, проводимых в симуляторе робота, задаются в
файла настроек. Файл содержит в себе информацию как о роботе (электрические и
механические параметры), так и об окружении. Таким образом, обесепечивается
гибкость системы – параметры можно менять в зависимости от целей
экспериментов.
Оператор может управлять роботом, используя либо клавиатуру, либо
джойстик. Информация о заезде, а так все параметры робота и окружения могут
быть сохранены во внешний файл в виде матрицы. Записанную траекторию можно
воспроизвести и записать видео образы, полученные с виртуальной камеры.
Полученная информация обрабатывается в среде Mathcad как обучающая
оследователость для нейронной сети. Показания датчиков используются для
непосредственного обучения среды. Полученные изображения могут
быть
использованы для синтеза оптического датчика.
Обученная сеть может автономно решать задачи. В данном случае решением
будет та же матрица, описывающее поведение робота. Это решение можно
визуализировать в симуляторе, чтобы получить последовательность видео образов
для дальнейшего анализа.
35
Файл настроек
Механические
параметры робота
Электрические
параметры робота
Параметры
эксперимента
Изображения с
виртуальных
камер
Параметры
среды
Общая
математическая
модель
Управление
MathCad
Результаты
эксперимента
Dark Basic
Клавиатура
Внешний файл
данных
Джойстик
Si (tk )
Траектория
движения
Рис. 3.1. Общая схема работы
36
3.2.
Математическая модель робота
В рамках дипломной работы использовалась математическая модель
двухколесного робота, что объясняется рядом соображений. Во-первых, это
колесная схема робота Феникс-2, общий вид которого приведен на рис. 3.1. Вовторых, что эта схема достаточно широко используется на практике, о чем
свидетельствует приведенный ниже обзор.
3.2.1. Краткий обзор двухколесных роботов
Фирма ActivMedia Robotics выпускает четыре серии двухколесных роботов:
 PowerBot (рис. 3.2.) – самый крупный робот, при весе 120 кг (с
аккумуляторами) и габаритах 85х65х43 см может нести на себе до 100
кг оборудования
 PeopleBot – довольно высокое и не слишком устойчивое сооружение
(112 см в высоту)
 Pioneer 2-DXe, Pioneer 2-AT – это небольшие роботы весом около 30
кг
 AmigoBot – вес всего 1 кг, позиционируется прежде всего как
«домашний» робот для развлечений, поскольку не может быть
оснащен дополнительным оборудованием в достаточном количестве.
Рис. 3.2. Робот PowerBot
37
Компания MrRobot предлагает Talrik Junior (TJ) (рис. 3.3.). Диаметр
собранного TJ — 7 дюймов, высота — 3,5 дюйма. Корпус изготавливается или из
пятислойной березовой фанеры, или из черного пластика. Передвигается робот на
двух 2,75-дюймовых колесах и заднем опорном ролике. Два высококачественных
сервомотора установлены ниже платформы, чтобы управлять каждым колесом
непосредственно. В качестве контроллера используется плата MSCC11E2 на основе
процессора MC68HC11 (256 байт RAM и 2 Кбайт EEPROM). Доступные языки:
Imagecraft C (коммерческий транслятор C), ассемблеры MC68HC11, sBASIC,
tinyFORTH, и TJ Mindstorms (все ПО свободное).
Кроме того, Talrik Junior оборудован двумя инфракрасными детекторами и
двумя инфракрасными излучателями. Плата MSCC11E2A обладает достаточно
широкими возможностями ввода-вывода, чтобы существенно увеличить количество
датчиков TJ.
Рис. 3.3. Робот TJ Pro
Фирма K-Team предлагает недорогую модель Khepera (рис.3.4) (процессор
Motorola 68331, 25 MГц, датчики, моторы).
38
Рис. 3.4. Робот Khepera
3.2.2. Уравнения, описывающие положение колес робота
Движение двухколесного робота зависит от оборотов левого и правого колеса.
При различных скоростях колес робот начинает двигаться по окружности с центром
в точке, описываемой радиус-вектором Rc. Радиус поворота – длина вектора Rr.
Графически модель представлена на рис. 3.5.
∆Rr(t)
Dw
Rr(t+∆t)
Rc (t+∆t)
Rr(t)
∆φ
l
φ
Rp
Rc (t)
Рис. 3.5. Графическое представление модели робота
Дополнительные параметры робота:
Dr – диаметр колеса
39
l – расстояние между колесами
ω1 – угловая скорость левого колеса
ω2 – угловая скорость правого колеса
φ – угол, определяющий ориентацию робота
Сначала найдем ∆φ. Длина дуги, по которой проехало правое колесо:
La1 
1t
 D
2
Зная длину дуги, нетрудно вычислить ∆φ, поделив полученное выражение на
длину окружности, по которой вращается колесо.
 
Dr 1t
l
2(| Rr (t ) |  )
2
,
где |Rr(t)| + l/2 - радиус вращения правого колеса.
Аналогичным образом ∆φ определяется для левого колеса, необходимо лишь
изменить радиус вращения:
 
Dr 2 t
l
2(| Rr (t ) |  )
2
Из выражений для ∆φ можно выразить |Rr|, приравняв правые части:
| Rr (t ) |
1   2 l

 2  1 2
Подставив полученное выражение для |Rr| в любое из выражений для ∆φ и
произведя упрощение, получаем конечное выражения для ∆φ:
40
Dr
 ( 2   1 )  t
2l
d Dr

 ( 2   1 )
dt
2l
 
Теперь перейдем к описанию положения робота. Для задания начального
положения рота необходимо ввести два радиус-вектора P01 и P02, определяющие
положения колес. Очевидно, что разность этих векторов дает координаты центра
робота.
Так же есть необходимость введения матрицы поворота двумерного вектора
на угол φ T(φ):
 cos( )  sin(  ) 

T ( )  
 sin(  ) cos( ) 
Поскольку время ∆t мало, можно рассматривать перемещение робота как
движение
по дуге с постоянным радиусом |Rr|. Центр дуги задается радиус-
вектором Rр. В этом случае выполняется равенство:
R p (t )  R p (t  t ),
Rc (t ) 
| Rr (t ) |
| R (t ) |
T ( )( P01  P02 )  Rc (t )  Rr (t )  r
T ( )T ( )( P01  P02 ).
l
l
Из данного равенства можно выразить ∆Rr(t):
Rr (t ) 
| Rr (t ) |
( E  T ( ))T ( )( P01  P02 )
l
На данном этапе необходимо сделать подстановку |Rr| и ∆φ, а так же
произвести упрощение выражения с учетом малости ∆φ (sin(∆φ) = ∆φ, cos(∆φ) =1).
После этого можно разложить выражение для вектора ∆Rr(t) по компонентам х и у и
представить его в дифференциальной форме:
41
 dRr
 dt


 dRr
 dt


Dr (1   2 )
 sin  ( P01x  P02 x )  cos  ( P01y  P02 y )
4l


Dr (1   2 )  cos  ( P01x 
 P )  sin  ( P  P )
4l
01 y
02 y 
 02 x
x
y


3.2.3. Уравнения, описывающие работу двигателей
В модели используются два уравнения, которые связывают количество
оборотов и токи в обмотках двигателей.
Двигатель представляет собой электрическую цепь с общим сопротивлением
R, в которой есть катушка с индуктивностью L. Напряжение в цепи U(t) меняется в
зависимости от показаний датчиков.
Двигатели приводят колеса робота в движение, задавая их скорость вращения.
Поскольку робот обладает массой Mr, у робота есть инерция.
Исходя из описания, работа двигателей описывается с помощью следующей
системы уравнений:
R
1
 dI


I

U (t ),

L
L
 dt
 d  k
k
1


  2 I (t ),

Mr
Mr
 dt
где k1, k2 – коэффициенты, определяемые экспериментальным путем.
3.2.4. Общая система уравнений, описывающая движение робота
Выше приведены выводы четырех уравнений, которые при объединении в
систему позволяют описать движение робота.
Вектор перемещения центра робота ∆Rr(t) необходимо раскладывать по двум
координатам. Работа двух двигателей описывается с помощью четырех уравнений –
42
по два на токи и на обороты колес. Поэтому общее количество уравнений в модели
семь:
 dRr
Dr (1  2 )
sin  ( P01x  P02 x )  cos  ( P01y  P02 y ) ,
 dt 
4
l
x

 dRr
D (  2 )
 r 1
 cos  ( P01x  P02 x )  sin  ( P01y  P02 y ) ,

4l
 dt y
 d D

 r  ( 2   1 ),
2l
 dt

k
 d1  k11

1  12 I1 (t ),

(3.1)
Mr
Mr
 dt
 d2  k 21
k

2  22 I 2 (t ),

Mr
Mr
 dt
 dI
R
1
 1   1 I1  U1 (t ),
L1
L1
 dt
 dI
R
1
 2   2 I 2  U 2 (t ),

L2
L2
 dt



Для
описания
эволюции

робота
для
системы
обыкновенных
дифференциальных уроавнений ставилась задача Коши (3.1) [5].
Применительно к модели реализованной в Mathсad
требоуется задание
начальных условий, а именно:
 положение робота (ориентация, координаты X и Y);
 начальных скорость вращения колес;
 начальные токи.
Система управления робота моделируется посредством описания структуры
используемой нейронной сети, весов отдельных нейронов,
функций обработки
датчиков.
Для решения задачи Коши использовался метод Рунге-Кутта [5], который
реализован в виде отдельной функции в этом пакете.
В
симуляторе
для
решения
системы
дифференциальных
уравнений
используется метод Эйлера, который представляет собой метод Рунге-Кутта первой
степени. Так как пакет Mathcad не предjставляет информацию о степени
используемого метода Рунге-Кутта, соответствие моделей достигалось с помощью
варьирования величины шага (точности).
43
3.2.5. Верификация математической модели
Чтобы убедиться в правильности полученной модели, необходимо провести
несколько опытов с разными значениями напряжений и проанализировать
полученные данные. Двухколесный робот может двигаться в трех режимах:
 движение по прямой – напряжения на обоих двигателях одинаковы
 вращение на месте – напряжения равны по модулю и противоположны
по знаку
 движение по окружности – напряжения на двигателях разные
Поверка была осуществлена также в среде Mathсad.
3.2.6. Движение по прямой
Робот стоит в центре координат, повернут на 45 градусов, на двигатели
подается по 1,5 вольта.
Графики, описывающие состояние системы, представлены на рис. 3.6., 3.7, 3.8.
44
Y, м
X, м
Рис. 3.6. График движения центра робота
Обороты, 1/с
Время, с
Рис. 3.7. Скорость вращения колес
45
Сила тока, мА
Время, с
Рис. 3.8. Токи в двигателях
3.2.7. Вращение на месте
Робот стоит в центре координат. На двигатели подается одинаковое по
значению и разное по знаку напряжения в 1,5 вольта.
Графики, описывающие состояние системы, представлены на рис. 3.9., 3.10.,
3.11.
46
Y, м
X, м
Рис. 3.9. График движения центра робота
Обороты, 1/с
Время, с
Рис. 3.10. Скорость вращения колес
47
Сила тока, мА
Время, с
Рис. 3.11. Токи в двигателях
3.2.8. Движение по окружности
Робот стоит в центре координат. На один их двигателей подается 1,5 вольта,
на другой 0,1 вольта.
Графики, описывающие состояние системы, представлены на рис. 3.11., 3.12.,
3.13.
48
Y, м
X, м
Рис. 3.11. График движения центра робота
Обороты, 1/с
Рис. 3.12. Скорость вращения колес
49
Сила тока, мА
Время, с
Рис. 3.13. Токи в двигателях
3.3.
Алгоритм работы симулятора
Укрупненный алгоритм работы симулятора представлен на рис. 3.14. Он
достаточно прост, и дополнительных блок-схем нет. Общий смысл описан ниже.
Работа программы начинается с поиска подключенных контроллеров – в
случае обнаружения джойстика устанавливается соответствующий флаг. Если
джойстика не обнаружено, в качестве устройства управления используется
клавиатура. Далее происходит чтение параметров из INI-файла во внутренний
массив данных. По этим параметрам создаются трехмерное окружение и
непосредственно робот, а так же происходит инициализация вектора состояния
системы.
50
После этого начинается работа в основном цикле. Опрос устройств
управления позволяет определить величины управляющего напряжения, после чего
происходит вычисление нового вектора состояния системы. Если при этом включен
режим записи, данные записываются во внешний файл. В соответствии с новым
вектором состояния системы робот переходит в новое положение, информация о
камере и роботе выводится на экран. После этого происходит возврат к опросу
устройств управления.
Выход из программы обеспечивается нажатием кнопки Esc. Обработчик этого
события автоматически добавляется в исполнимый файл на этапе компиляции.
Поскольку в такой реализации выход из программы может случиться на любом
этапе и в любом блоке, его корректное графическое представление невозможно.
51
Начало
Выбор устройства
управления
Чтение параметров из
INI файла
Создание
3d окружения
Создание
робота
Иницилизация вектора
состояния системы
Опрос устройств
управления
нет
Вычисление вектора
состояния системы
Режим
записи?
да
Запись в
файл
Выход?
да
Конец
Рис. 3.14. Укрупненный алгоритм работы симулятора
52
Разработка интерфейсов
3.4.
3.4.1. Структура файла для передачи экспериментальных данных в Mathсad
Передача параметров эксперимента, а так же информация о его проведении
сохраняется в файле, представляющем собой двумерный массив дробных чисел. Его
структура приведена в таблице 3.1.
Таблица 3.1. Структура файла с экспериментальными данными
0
1
2
3
4
5
6
7
8
9
0
Mr#
Dw#
l#
U1#
U2#
Umax#
phi#
RcX#
RcY#
L1#
1
L2#
R1#
R2#
k11#
k12#
k21#
k22#
X(1)
X(2)
X(3)
2
X(4)
X(5)
X(6)
X(7)
time
RcX
RcY
phi
w1
w2
I1
I2
U1
U2
…
10
…
N
В первых десяти строках массива находится информация о настройках
эксперимента из файла настроек. После десятой строки в массиве содержится
информация непосредственно о ходе эксперимента.
53
На данный момент используется менее 30 позиций для передачи параметров
эксперимента. Пустующие позиции могут быть в последствии использованы для
добавления новых параметров эксперимента. Таким образом, система достаточно
легко расширяется без потери информации о предыдущих экспериментах.
3.4.2. Интерфейс для чтения экспериментальных данных в Mathсad.
Полученные в ходе эксперимента данные обрабатываются в среде Mathсad. На
рис. 3.15.
54
Рис. 3.15. Обработка результатов эксперимента в среде MathCad
55
3.4.3. Интерфейс настроек симулятора
Настройки симулятора хранятся в файле в формате INI. Это очень
распространенный формат данных, который имеет крайне простую структуру. Он
поддерживается операционной средой MS Windows на уровне API – для чтения и
записи файлов в формате INI есть стандартные системные процедуры. Так же эти
файлы нередко используются в различных программах для хранения настроек.
Формат файла представлен ниже:
; некоторый комментарий
[Section1]
; комментарий о разделе
var1 = значение_1 ; иногда допускается комментарий к отдельному
параметру
var2 = значение_2
[Section2]
var1 = значение_1
var2 = значение_2
; иногда позволяется перечислять несколько значений через запятую
[Section3]
var1 = значение_1_1, значение_1_2, значение_1_3
var2 = значение_2
INI файл может содержать:
 пустые строки;
 комментарии — от символа «;» (точка с запятой) до конца строки;
56
 заголовки разделов — строки, состоящие из названия раздела,
заключённого в квадратные скобки «[ ]»;
 значения параметров — строки вида «имя_параметра = значение».
Не существует общепринятого стандарта формата файлов INI. Хотя общая
структура таких файлов обычно сохраняется, многие программные продукты вводят
в неё дополнительные возможности или, наоборот, ограничения. Например, в
большинстве случаев наличие двух параметров с одинаковыми именами в одной
секции запрещено. Так же нельзя использовать одинаковые имена секций. Обычно
при наличии нескольких секций с одинаковыми именами в файле обрабатывается
лишь последняя из них. Некоторые приложения объединяют содержимое всех таких
секций в одну.
Такие файлы можно создавать в любом текстовом редакторе. Особенно
удобно работать в редакторах с поддержкой интерактивной разметки текста,
например в бесплатной программе Notepad++. На рис. 3.16. представлен
настроечный файл, открытый в Notepad++. На этом рисунке отображены все
параметры, которые передаются в симулятор в текущей его реализации. Текст файла
есть в Приложении. Возможно, со временем количество параметров существенно
увеличиться.
57
Рис. 3.16. INI файл с настройками симулятора (Notepad++)
3.4.4. Интерфейс симулятора
Интерфейс симулятора максимально информативен – на экран выводится
практически вся доступная информация. Информация выводится в текстовом
режиме, чтобы не перегружать экран лишними графическими элементами.
Внешний вид симулятора показан на рис. 3.17.
58
Рис. 3.17. Окно симулятора
59
Заключение
Результатом
среда
дипломной работы является программно-инструментальная
“PHOENIX-2” , используемая в СКБ Государственного Университета
Аэрокосмического Приборостроения в качестве инструмента для исследования
нейронных систем управления.
В
заключении
автор
выражает
благодарность
коллективу
СКБ
за
всестороннюю поддержку при выполнении работы, а также участников тпервой
фазы проекта студентов гр. 5231 Гончарова Александра, Дмитриева Алексея и
Михеева Алексея.
60
СПИСОК ЛИТЕРАТУРЫ
1.
Саймон Хайкин Нейронные сети: полный курс. 2-е исправленное издание,
2006
2.
сборник докладов Пятьдесят девятой Международной студенческой научнотехнической конференции ГУАП, С-Пб, 2006
3.
Дэвид Формайс, Жан Понс Компьютерное зрение. Современный подход, 2004
4.
Уильям Прэтт Цифровая обработка изображений, 1982
5.
Крылов В.И., Бобков В.В., Монастрырский П.И. Вычислительные методы
высшей математики, 1975
6.
Игнатьев М.Б. Основные положения по дипломному проектированию для
специальностей 2201, 2204, 2016 / М.Б. Игнатьев, О.В. Мишура, А.В. Гордеев,
Л.Г. Ахутина и др.: Санкт-Петербургский государственный университет
аэрокосмического приборостроения. 1999, 45 с.
7.
Прогнозирование элементов бизнес-плана проектов: методические указания к
выполнению дипломного проекта / под ред. д.э.н. проф. В.Б. Сироткина;
Санкт-Петербургский
государственный
университет
аэрокосмического
приборостроения. 2002, 63 с.
8.
Безопасность
жизнедеятельности,
промышленная
и
экологическая
безопасность: методические указания к выполнению дипломного проекта /
под ред. к.т.н. доц. А.И. Панферова; Санкт-Петербургский государственный
университет аэрокосмического приборостроения. 2001, 34 с.
9.
Инернет-источник http://www.ferra.ru
10.
Инернет-источник http://www.enigmaindustries.com
11.
Инернет-источник http://www.wikipedia.com
12.
Инернет-источник http://www.artkis.ru/neural_network.html
13.
Инернет-источник http://www.mobotsoft.com
14.
Инернет-источник http://www.solarbotics.com
15.
Инернет-источник http://thegamecreators.com
16.
Инернет-источник http://ru.wikipedia.org
61
ПРИЛОЖЕНИЯ
Листинг программы на Dark Basic
REM Project: Robot
REM Created: 21.09.2007 14:58:49
REM
REM ***** Main Source File *****
REM
rem ===========================================================
rem sync
sync on : sync rate 50
rem ===========================================================
rem display mode
rem set display mode 800,500,16
rem ===========================================================
rem joystick check and prepare
rem Control device check
perform checklist for control devices
rem Chooses first control devices if found
if checklist quantity()=0
flagJoystick = 0
else
flagJoystick = 1
set control device checklist string$(1)
endif
rem ===========================================================
rem Paramaters and 3d initilization
gosub sParams
gosub s3d
gosub sFlagInit
rem ===========================================================
rem Main Cycle
do
sync
gosub sControl
gosub sEuler
gosub sRobotPos
gosub sFlagProcessing
gosub sHUD
loop
rem ===========================================================
rem HUD
sHUD:
rem system
set cursor 0,0
62
for i=1 to ARRAY COUNT(X(0)) step 1
print "X", i, " = ", FloatToStr(X(i),3)
next i
print " "
print " Joystick X ", control device x()
print " Joystick Y ", control device y()
print " "
print "U1 ", U1#
print "U2 ", U2#
set cursor 900, 650
print "FPS ", screen fps()
rem status
print ""
if flagState = 0
print "State: Free Ride"
endif
if flagState = 1000
print "State: Stop"
endif
if flagState = 100
print "State: Recording"
endif
if flagState = 200
print "State: Replaying"
endif
rem robot params
set cursor 800, 0
print "Robot mass: ", Mr#
set cursor 800, 15
print "Wheel diameter: ",Dw#
set cursor 800, 30
print "Wheel distance: ", l#
set cursor 800, 45
print "Max U: ", Umax#
set cursor 800, 60
print "L1: ", L1#
set cursor 800, 75
print "L2: ", L2#
set cursor 800, 90
print "R1: ", R1#
set cursor 800, 105
print "R2: ", R2#
rem Keys info
set cursor 350,700
print "Press C button to record, X button to stop"
rem Task
set cursor (512-len(task$)*5), 0
print task$
rem for Debug
63
set cursor (512-len(task$)*5), 50
return
rem ===========================================================
rem Euler
sEuler:
rem accuracy
h# = 0.01
Dim Xtmp(7) AS DOUBLE FLOAT
rem Xtmp count ( vector X myltiplied on system )
Xtmp(1) = ((X(4)+X(5))/(4*l#))*Dw#*(sin(X(3)*180)*(P1x# - P2x#) + cos(X(3)*180)*(P1y#
- P2y#))
Xtmp(2) = ((X(4)+X(5))/(4*l#))*Dw#*(-cos(X(3)*180)*(P1x# - P2x#) +
sin(X(3)*180)*(P1y# - P2y#))
Xtmp(3) = Dw#*(X(5)-X(4))/(2*l#)
Xtmp(4) = (-k11#/Mr#)*X(4) + (k12#/Mr#)*X(6)
Xtmp(5) = (-k21#/Mr#)*X(5) + (k12#/Mr#)*X(7)
Xtmp(6) = -R1#*X(6)/L1# + U1#/L1#
Xtmp(7) = -R2#*X(7)/L2# + U2#/L2#
rem result as sum X and Xtmp multiplied on step h
for i=1 to 7 step 1
X(i) = X(i) + Xtmp(i)*h#
next i
rem result
return
rem ===========================================================
rem ===========================================================
rem Paramaters Init
sParams:
rem dll load
load dll "kernel32.dll", 1
Dim X(7) AS DOUBLE FLOAT
local returnval$
rem Config.ini reading
rem Mechanic Params
call dll
1,"GetPrivateProfileStringA","Mechanic","Mr","0",returnval$,1024,"d:\config.ini"
Mr# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Mechanic","Dw","0",returnval$,1024,"d:\config.ini"
Dw# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Mechanic","l","0",returnval$,1024,"d:\config.ini"
l# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Mechanic","phi","0",returnval$,1024,"d:\config.ini"
phi# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Mechanic","RcX","0",returnval$,1024,"d:\config.ini"
RcX# = StrToFloat(returnval$):returnval$=""
64
call dll
1,"GetPrivateProfileStringA","Mechanic","RcY","0",returnval$,1024,"d:\config.ini"
RcY# = StrToFloat(returnval$):returnval$=""
rem Electric Params
call dll
1,"GetPrivateProfileStringA","Electric","U1","0",returnval$,1024,"d:\config.ini"
U1# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Electric","U2","0",returnval$,1024,"d:\config.ini"
U2# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Electric","Umax","10",returnval$,1024,"d:\config.ini"
Umax# = StrToFloat(returnval$)
returnval$=""
call dll 1,"GetPrivateProfileStringA","Electric","L1","0.01",returnval$,1024,
"d:\config.ini"
L1# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Electric","L2","0.01",returnval$,1024,"d:\config.ini"
L2# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Electric","R1","0.1",returnval$,1024,"d:\config.ini"
R1# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Electric","R2","0.1",returnval$,1024,"d:\config.ini"
R2# = StrToFloat(returnval$):returnval$=""
rem Common Params
call dll
1,"GetPrivateProfileStringA","Common","k11","2",returnval$,1024,"d:\config.ini"
k11# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Common","k12","1",returnval$,1024,"d:\config.ini"
k12# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Common","k21","2",returnval$,1024,"d:\config.ini"
k21# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","Common","k22","1",returnval$,1024,"d:\config.ini"
k122# = StrToFloat(returnval$):returnval$=""
rem Task
returnval$=""
call dll 1,"GetPrivateProfileStringA","Task","task","No task
provided",returnval$,1024,"d:\config.ini"
task$=returnval$:returnval$ = ""
rem 3d
call dll
1,"GetPrivateProfileStringA","3d","field_size_x","10",returnval$,1024,"d:\config.ini"
field_size_x# = StrToFloat(returnval$):returnval$=""
65
call dll
1,"GetPrivateProfileStringA","3d","field_size_z","10",returnval$,1024,"d:\config.ini"
field_size_z# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","3d","txt_path","0",returnval$,1024,"d:\config.ini"
txt_path$=returnval$:returnval$=""
call dll
1,"GetPrivateProfileStringA","3d","obj1_x","10",returnval$,1024,"d:\config.ini"
obj1_x# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","3d","obj1_y","10",returnval$,1024,"d:\config.ini"
obj1_y# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","3d","obj1_z","10",returnval$,1024,"d:\config.ini"
obj1_z# = StrToFloat(returnval$):returnval$=""
call dll
1,"GetPrivateProfileStringA","3d","obj1_size","10",returnval$,1024,"d:\config.ini"
obj1_size# = StrToFloat(returnval$):returnval$=""
rem dll unload
delete dll 1
rem vector X init
X(1) = RcX#
X(2) = RcY#
X(3) = phi#
X(4) = 0
X(5) = 0
X(6) = 0
X(7) = 0
rem Wheels positions
P1x# = -0.45*l#*cos(X(3)*180) + X(1)
P1y# = -0.45*l#*sin(X(3)*180) + X(2)
P2x# = 0.45*l#*cos(X(3)*180) + X(1)
P2y# = 0.45*l#*sin(X(3)*180) + X(2)
return
rem ===========================================================
rem ===========================================================
rem Control from joystick or keyboard
sControl:
rem Joystick
if flagJoystick = 1
trans_mul# = 45
angle_mul# = 0.7
if abs (control device y()) < 200
U1# = 0
U2# = 0
else
U1# = (-(0.001 - 1/abs(control device y())*0.2)*control device y())*trans_mul#
endif
if abs (control device x()) < 400
66
U2# = U1#
else
U1# = (0.001 - 1/abs(control device x())*0.2)*control device x()*angle_mul#
U2# = -U1#
endif
rem Keyboard Control
else
if upkey() = 1
U1# = Umax#
U2# = Umax#
else
U1# = 0
U2# = 0
endif
if downkey() = 1
U1# = -Umax#
U2# = -Umax#
endif
if leftkey() = 1
U1#=-Umax#*0.2
U2#=-U1#
endif
if rightkey() = 1
U1#=Umax#*0.2
U2#=-U1#
endif
endif
gosub sNewFlag
return
rem ===========================================================
rem ===========================================================
rem 3D init: field and robot construction
s3d:
make matrix 1,field_size_x#,field_size_z#,1,1
set matrix wireframe off 1
set matrix 1,0,1,0,2,1,0,0
rem txt preparation
load bitmap txt_path$,1
get image 1,0,0,BITMAP WIDTH(1),BITMAP HEIGHT(1)
delete bitmap 1
prepare matrix texture 1,1,1,1
returnval$=""
rem cam
COLOR BACKDROP 0, RGB(0,0,255)
set camera range 0.1, 100
xrotate camera 0, 60
rem body
make object cube 2, 100
scale object 2, 0.8*l#, 0.25*Dw#, 0.8*Dw#
67
position object 2, 0, Dw#*0.5, 0
rem wheel 1
make object cylinder 3, 100
set object cull 3, 0
color object 3, 1
scale object 3, Dw#, 0.1*l#, Dw#
rotate object 3, 0, 0, 90
LocalTurnLeft# = 0
texture object 3,1
rem wheel 2
make object cylinder 4, 100
set object cull 4, 0
color object 4, 1
scale object 4, Dw#, 0.1*l#, Dw#
rotate object 4, 0, 0, 90
LocalTurnRight# = 0
texture object 4,1
rem object creation/placing
make object sphere 5, 1
position object 5, 0.1*obj1_x#, 0.1*obj1_y#, 0.1*obj1_z#
scale object 5, 10*obj1_size#, 10*obj1_size#, 10*obj1_size#
return
rem ===========================================================
rem ===========================================================
rem Applying new coordinates to robot
sRobotPos:
position object 2, X(1), Dw#*0.5, X(2)
yrotate object 2, -X(3)*180
SET CAMERA TO FOLLOW 0, OBJECT POSITION X(2),OBJECT POSITION Y(2), OBJECT POSITION
Z(2), OBJECT ANGLE Y(2), 1.5, 0.5, 1, 0
W1x# = 0.45*l#*cos(X(3)*180) + X(1)
W1y# = 0.45*l#*sin(X(3)*180) + X(2)
W2x# = -0.45*l#*cos(X(3)*180) + X(1)
W2y# = -0.45*l#*sin(X(3)*180) + X(2)
position object 3, W1x#, Dw#/2, W1y#
xrotate object 3, -X(3)*180
LocalTurnLeft# = LocalTurnLeft# + X(4)
rem turn object left 3, LocalTurnLeft#
position object 4, W2x#, Dw#/2, W2y#
xrotate object 4, -X(3)*180
LocalTurnRight# = LocalTurnRight# + X(5)
rem turn object left 4, LocalTurnRight#
return
rem ===========================================================
rem ===========================================================
rem Flags Initilizaton with descriptions
`flag flagState is used to describe the state of programm
`0 stands forfree ride
`100 stands for data record
`200 stands for replayng trajectory
`1000 stands for stop (playing and recording are stopped)
sFlagInit:
68
flagState = 0
flagFileOpen = 0
frame_count = 0
return
rem ===========================================================
rem ===========================================================
rem actions according to the state
sFlagProcessing:
rem rec
if flagState = 100
if flagFileOpen = 0
rem file prep
file_path$ ="d:\data.txt"
if file exist(file_path$)
print "Deleting old file..."
delete file file_path$
endif
print "Writing new file..."
if not file open(1)
open to write 1, file_path$
endif
flagFileOpen = 1
rem writting parameters
string$ = FloatToStr(Mr#, 5)+" "+FloatToStr(Dw#,5)+" "+FloatToStr(l#,5)+"
"+FloatToStr(U1#,5)+" "+FloatToStr(U2#,5)+" "+FloatToStr(Umax#,5)+"
"+FloatToStr(phi#,5)+" "+FloatToStr(RcX#,5)+" "+FloatToStr(RcY#,5)+"
"+FloatToStr(L1#,5);
write string 1, string$
string$ = FloatToStr(L2#, 5)+" "+FloatToStr(R1#,5)+" "+FloatToStr(R2#,5)+"
"+FloatToStr(k11#,5)+" "+FloatToStr(k12#,5)+" "+FloatToStr(k21#,5)+"
"+FloatToStr(k22#,5)+" "+FloatToStr(X(1),5)+" "+FloatToStr(X(2),5)+"
"+FloatToStr(X(3),5);
write string 1, string$
string$ = FloatToStr(X(4), 5)+" "+FloatToStr(X(5),5)+"
"+FloatToStr(X(6),5)+" "+FloatToStr(X(7),5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
rem empty strings
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
69
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
string$ = FloatToStr(0, 5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5)+"
"+FloatToStr(0,5)+" "+FloatToStr(0,5)+" "+FloatToStr(0,5);
write string 1, string$
else
rem Recording data from vector X to external file
time# = screen fps()
time# = 1/time#
time# = time#*frame_count
set cursor 0,700
print "Record time ", time#
string$ = FloatToStr(time#, 5)+" "+FloatToStr(X(1),5)+"
"+FloatToStr(X(2),5)+" "+FloatToStr(X(3),5)+" "+FloatToStr(X(4),5)+"
"+FloatToStr(X(5),5)+" "+FloatToStr(X(6),5)+" "+FloatToStr(X(7),5)+"
"+FloatToStr(U1#,5)+" "+FloatToStr(U2#,5)
write string 1, string$
inc frame_count
endif
endif
rem stop
if flagState = 1000
if (file open(1) = 1)
close file 1
endif
flagFileOPen = 0
frame_count = 0
flagState = 0
endif
return
rem ===========================================================
rem ===========================================================
rem ===========================================================
rem New Flag from Keyboard
sNewFlag:
rem play
if inkey$() = "z"
flagState = 200
endif
rem stop
70
if inkey$() = "x"
flagState = 1000
endif
rem record
if inkey$() = "c"
flagState = 100
endif
return
rem ===========================================================
function FloatToStr (input_float#, accuracy)
input_integer = input_float#
input_float# = input_float# - input_integer
out_string$ = str$(input_integer) + "."
for i=1 to 5 step 1
input_float# = input_float#*10
buf = abs(input_float#)
input_float# = input_float# - buf
out_string$ = out_string$ + str$(buf)
next i
endfunction out_string$
function StrToFloat(input_string$)
result# = 0
result_int# = 0
result_flt# = 0
power = 0
i = 1
while (mid$(input_string$,i)<>".") and (i < len(input_string$) + 1)
result_int# = result_int#*10 + val(mid$(input_string$,i))
i = i + 1
endwhile
i = i + 1
while i < len(input_string$) + 1
result_flt# = result_flt#*10 + val(mid$(input_string$,i))
i = i + 1
power = power + 1
endwhile
result# = result_int# + result_flt#/(10^power)
endfunction result#
71
Содержание файла настроек
;механические параметра робота
[Mechanic]
;начальный угол (ориентация)
phi=0
;масса
Mr=2.5
;диаметр колес
Dw=0.3
;расстояние между колесами
l=0.5
;положение цента Х,У
RcX=0
RcY=0
;Электрические параметры робота
[Electric]
;максимальное напряжение
Umax=10
;начальные напряжения на двигателях
U1=0
U2=0
;индуктивности двигателей
L1=0.01
L2=0.01
;сопротивления двигателей
R1=0.1
R2=0.1
[Common]
;коэффициенты, определяющие инерцию системы
k11=2
k12=1
k21=2
K22=1
[Task]
;задача, которую надо выполнить
task=Ride Around
[3d]
;размер поля
field_size_x=10
field_size_z=10
;текстура пола
txt_path=d:\txt.jpg
;положение и размер первого объекта
obj1_x=5;
obj1_y=0;
obj1_z=5;
obj1_size=1;
72
Плакаты к дипломной работе
73
Компьютерная модель
автономного робота Phoenix
Цель работы
Разработка программно-инструментальной среды,
обеспечивающей возможность решения широкого круга задач,
возникающих при исследовании систем управления автономных
мобильных объектов, реализуемых на базе нейронных сетей.
Постановка задачи
 разработка
математической
обеспечивающей
возможность
модели
его
робота,
управления
и
эволюции в виртуальной среде;
 разработка модели виртуальной среды;
 сохранение получаемых экспериментальных данных;
 разработка
средой
средств обеспечения взаимодействия со
математического
подразумевает
передачи
моделирования,
что
разработку эффективных механизмов
данных
между
программами
и
пользовательских интерфейсы для чтения и записи
данных
74
Системы управления на базе нейронной сети
Многослойная линейная нейронная сеть
s(tk)
a(tk)
Система управления на одном нейроне
Сенсоры
(входной вектор)
Управляющее воздействие
(отклик сети)
W
S1
A1
Si
Ak
Sn
Am
Математическая модель линейной нейронной сети
A1(tk )
A2 (tk )
……..
Am(tk )
=
W11 W12 W13 ….W1 i ….. W1n
W21 W22 W23 ….W2 i ….. W2n
……………………………….
Wm1 Wm2 W23 ….W2 i ….. Wmn
*
S1(tk )
S2 (tk )
.......
Sn(tk )
75
Процесс обучения нейронной сети
S1(t1) S2(t1) .. Sn(t1)
0 ….. ………………..… ……………………………
0
0
.. … 0
S1(t1) S2(t1) .. Sn(t1) 0 ……………………………..
0
… ……
… …
… …… …
… … ….
0 ……………………………………………………… …….0 S1(t1) S2(t1) .. Sn(t1)
S=
S1(t2) S2(t2) .. Sn(t2)
0
0
S1(t2) S2(t2) .. Sn(t2)
……..
0
…… …………………………………………….
0
0 ………………………………
0
… ……
… …
…………………
………..
0 ……………………………………………………… …….0 S1(t2) S2(t2) .. Sn(t2)
………………………………………………………………………………………….
S1(tp) S2(tp) .. Sn(tp) 0
…… ………………………………………………… 0
0
……
0
S1(tp) S2(tp) .. Sn(tp) 0 ……………………………… …. 0
… ……
… …
…………………
………..
0 ……………………………………………………………. S1(tp) S2(tp) .. Sn(tp)
F(w) = IIS∙w-aII + IIwII
w = (ST S +  E) –1 ST a
ОПЕРАТОР
Обучающие
s (Tk), ( Si Tk),
i=1..Ns )
Teaching
Set I (Tk)
k=1….p
Обучающий
интерфейс
“Teaching”
Actor Set a(Tk)
( Ai(Tk)
i=1..Na )
Parameterized
Control System
Wi
i=1..Nw
Данные с
сенсоров
s(t)
Среда
“Real “
Actor
Signal a(t)
Environment
Conditions
Optimal Parameter
Set w
УЧИТЕЛЬ
Данные, собранные во время обучения
S1(T1)
S2(T1)
S1(T2)
S2(T2)
S1(Tp)
S2(Tp)
…….
……
…….
SNs(T1)
Sn(T2)
Sn(Tp)
Обучающие данные с сенсоров
A1(T1)
……
Am(T1)
A1(T2)
…….
Am(T2)
A1(Tp)
…….
Am(Tp)
Векторы управления оператора
76
Математическая модель робота
Y
∆Rr(t)
Rc
(t+∆t)
∆φ
φ
Dw
Rr(t+∆
t)
Rr(t)
l
Rp
Rc (t)
X
Система дифференциальных уравнений и вектор начальных условий
 dRr
Dr (1  2 )
sin  ( P01x  P02 x )  cos  ( P01y  P02 y ) ,
 dt 
4l
x

 dRr
D (  2 )
 r 1
 cos  ( P01x  P02 x )  sin  ( P01y  P02 y ) ,

4l
 dt y
 d D

 r  ( 2   1 ),
dt
2l


k
 d1  k11

1  12 I1 (t ),

dt
M
M
r
r

 d2  k 21
k 22

2 
I 2 (t ),

Mr
Mr
 dt
 dI
R
1
 1   1 I1  U1 (t ),
dt
L
L

1
1
 dI
R
1
 2   2 I 2  U 2 (t ),
 dt
L2
L2




 P01 
P 
 02 
 
 
 1 
 2 
 
U1 
U 
 2

Верификация математической модели
Токи в двигателях
Перемещение робота
77
Инструментарий
Dark Basic Professional
 Встроенные функции для работы
o 3d
o 2d
o текст
o файлы
o операционная система
 Поддержка большинства современных графических форматов
 Поддержка внешних устройств управления – джойстики, рули
 Возможность использования внешних библиотек
 Развитая система технической поддержки
 Невысокая стоимость
 Простота использования и удобство интерфейса
 Работа в операционной среде Windows XP
MathCad






Простота использования и удобство интерфейса
Большое количество встроенных функций
Возможность программирования
Работа с внешними файлами
Относительно невысокая стоимость
Работа в операционной среде Windows XP
Реализация математической модели
Для решения системы дифференциальных уравнений в среде Mathcad
использовался метод Рунге-Кутта, который реализован в виде отдельной
функции в этом пакете.
В симуляторе для решения системы дифференциальных уравнений
используется метод Эйлера. Он прост в реализации, надежен и быстр.
Соответствие с методом Рунге-Кутта была достигнута с помощью
варьирования величины шага (точности).
78
Общая схема работы
Файл настроек
Механические
параметры робота
Электрические
параметры робота
Параметры
эксперимента
Изображения с
виртуальных
камер
Параметры
среды
Общая
математическая
модель
Управление
MathCad
Результаты
эксперимента
Dark Basic
Клавиатура
Джойстик
Внешний файл
данных
Si (tk )
Траектория
движения
79
Эксперименты
Окно симулятора
Файл данных
Результаты в Mathcad
Download