Курсовая работа студентки 244 группы Дерипаска Анны Олеговны



Скачать 119.2 Kb.
Дата16.09.2014
Размер119.2 Kb.
ТипКурсовая
Санкт-Петербургский Государственный Университет

Математико-механический факультет


Эмуляция поведения робота в проекте QReal:Robots

Курсовая работа студентки 244 группы

Дерипаска Анны Олеговны

Научный руководитель                              Ю. В. Литвинов

ст. преподаватель

Санкт-Петербург

2011

Введение

На кафедре системного программирования СПбГУ в течение нескольких лет разрабатывается среда программирования QReal [1].  QReal, с одной стороны, является CASE-системой, т.е. позволяет проектировать и разрабатывать программное обеспечение с помощью визуальных моделей, а с другой — metaCASE-системой, т.е. позволяет быстро создавать свои собственные визуальные языки. Таким образом можно создавать языки под конкретную задачу. Например, всего за месяц с помощью метаредактора удалось создать  средство программирования роботов, при этом основная часть времени ушла на реализацию взаимодействия с роботом.

Сейчас на основе него разрабатывается система визуального программирования роботов QReal:Robots [3]. Эта система нужна для обучения основам программирования и кибернетики детей в школах. Еще академик А. П. Ершов заметил, что при обучении основам информатики и программирования полезно видеть результаты своей работы, чтобы лучше понимать, как всё устроено. Так он и его группа, к которой принадлежали Г.А.Звенигородский и Н.А.Юнерман, создали наглядного исполнителя, который отображался на экране [9]. А еще ранее такие идеи высказывал психолог-информатик из MIT Сеймур Пейперт, который разработал язык LOGO [8], результатом программирования на котором является движение черепашки по экрану. Но при этом подобные нематериальные исполнители, в отличие от реальных, менее наглядны  для демонстрации работы программы. Поэтому сейчас создают различные вычислительные устройства, в т.ч. робототехнические конструкторы. Одним из самых популярных таких конструкторов считается Lego ® Mindstorms ® NXT 2.0 [2].

Для роботов Lego® Mindstorms® NXT 2.0  наша система QReal:Robots позволяет создавать графические программы и исполнять их, посылая команды роботу через Bluetooth-интерфейс. Программы представляют собой последовательность блоков, соединённых потоком управления. При этом поддержаны такие возможности NXT 2.0 , как датчики нажатия и цвета, ультразвуковой датчик расстояния, управление моторами, динамиком. Также есть условные блоки, таймеры, возможность задавать циклы  и математические выражения.

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

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

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

Обзор существующих решений

1. Язык программирования LOGO

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

При реализации языка программирования LOGO была применена черепашья графика,  один из известных в сфере  образования принципов организации библиотеки графического вывода. Черепашья графика основывается на метафоре Черепахи, т.е. модели роботоподобного устройства, которая перемещается по экрану в соответствии с данными ей командами, оставляя за собой след траектории движения  заданного цвета и ширины. При рисовании этой черепашкой используется полярная система координат относительно её текущего положения. Для управления ею существует набор базовых команд, которые позволяют поворачивать её на указанный угол вправо / влево, перемещать на указанное количество «шагов» вперед / назад, причем есть такие же команды и относительно декартовой системы координат. Также можно задавать цвет, ширину и вообще наличие оставляемого  черепашкой нарисованного следа, прятать и вновь показывать черепашку, стирать всё и получать её текущее состояние (координаты, угол поворота, толщина и цвет пера и т.д.). А в системах, поддерживающих наличие нескольких черепашек, есть специальные команды, позволяющие добавлять или удалять черепах, задавать им имена, назначать черепахе набор команд, которые будут выполнены ею асинхронно, и т.д.

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

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

2. Stage и Gazebo

Стоит упомянуть еще симуляторы для роботов открытого использования Stage [6] и Gazebo [5], предоставляемые проектом Player/Stage. В рамках этого же проекта был создан и Player, сетевой сервер, который предоставляет простой интерфейс для получения данных с сенсоров и управления моторами с помощью сетевого IP-адреса. При этом Player поддерживает большое количество различных устройств для роботов, а также позволяет легко добавлять новые, если это необходимо.

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

Gazebo же симулирует как небольшую популяцию устройств, так и конкретные роботы в трехмерном окружении (рис.1). При этом конкретные роботы, для которых в этом симуляторе описаны модели,  уже эмулируются с высокой точностью воспроизведения. Также помимо заранее созданных разработчиками моделей наиболее часто используемых типов роботов, таких как Pioneer2DX, Pioneer2AT и SegwayRMP, недавно появилась возможность самостоятельно разрабатывать модели необходимых устройств для их дальнейшей симуляции. При этом  есть возможность модифицировать простые геометрические модели при помощи скинов из программ для 3D – моделирования. Еще Gazebo поддерживает множество стандартных сенсоров робота, таких как сонар, сканирующий лазер (который определяет расстояние до объектов), стереокамеру и т.д., а также способен реалистично эмулировать физику твёрдого тела, обеспечивая правдоподобное взаимодействие роботов с миром.



https://lh5.googleusercontent.com/iud7sfsanoltxygcn5um4bnrxowkgbkg24nrix2bks6deaic9oysoisuxa1m9ewd7gyvppql-xuiosotzcnj7svs9nswosh1jx4lvgxhupmz_1hqug

Рис.1


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

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



3. Проект Isenguardemu

Также мы упомянем о проекте Isenguardemu [7], разработке с кафедры «Компьютерные технологии» Санкт-Петербургского государственного университета информационных технологий, механики и оптики. Isenguardemu является логическим продолжением проекта Isenguard. Суть проекта Isenguard заключалась в том, чтобы собрать из конструктора Lego Mindstorms  два конкретных робота, транспортного и поставщика, и  написать программы  для их управления и контроля. Но через некоторое время робот перестал быть доступен авторам проекта, а тестировать и усовершенствовать программы для роботов без самих роботов было сложно, поэтому появилась необходимость создания программной среды эмуляции этих двух роботов. Таким образом был создан Isenguardemu, в рамках которого был разработан симулятор процесса погрузки и пользовательский интерфейс для управления этим процессом, в который был встроен редактор. При помощи этого редактора можно задавать начальные положения роботов, путь и т.д. При этом эмулируется еще пульт дистанционного управления, а также визуализируется область распространения инфракрасных сообщений, которыми обмениваются  роботы друг с другом и с пультом, так как эта область ограничена и под определенным углом.

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

Результат

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

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

https://lh6.googleusercontent.com/qzmead70vcpeck_a7f_tgl1zphhicjf2zbfrta_gfo-dpizus4onet_r6wkit9s68hfeezkzwtvjk2xzyq2tzaky0swyokjswtyi-n5kbbqu-bafwa

Рис.2


Диаграмма представляется набором блоков, соединённых связями. Каждый такой блок был реализован отдельным подклассом класса Block, который представляет высокоуровневое действие над роботом и определяет поведение конкретного элемента на диаграмме. При нажатии кнопки для  интерпретации диаграммы Interpreter обходит все её элементы и строит по ней граф, узлами которого и являются конкретные подклассы класса Block. Далее, найдя стартовый блок, он  вызывает у него метод на исполнение. При этом блоки могут взаимодействовать с логической моделью робота (RobotModel), вызывая методы конкретных её частей (RobotPart) и дожидаясь от них ответов в случае асинхронных запросов. По завершению своей работы, блок передает управление следующему за ним блоком, сообщая об этом интерпретатору, чтобы тот смог подсветить исполняемый блок. Как только интерпретатор доходит до завершающего блока, он заканчивает исполнение программы, нарисованной пользователем.

Логическая модель робота (RobotModel) представляет собой сам робот и набор его частей, предоставляя возможность всем желающим обращаться к логическим частям робота (RobotPart), например, к моторам (Motor), к сенсорам (Sensor) или к блокам управления (Brick). Тем самым, она позволяет добиться более высокоуровневого управления реальным роботом. И поэтому переопределять, как именно диаграмма будет исполняться, т.е. на реальном роботе или на двухмерной модели, нужно именно в логической модели.

Изначально нам показалось логичным, что чтобы иметь возможность встроить двухмерную модель и впоследствии переключаться между ней и исполнением на реальном роботе, надо сделать некую абстрактную модель, подклассами которой и будут модели этих различных видов исполнения программы. Каждая из этих моделей должна была бы иметь свой набор частей, аналогов RobotParts. При такой реализации должно было бы активно использоваться множественное наследование и сохраняться использование сигналов и слотов. Т.е. получалось, что некоторые классы несколько раз (напрямую и через родителей)  наследовались от  QObject, корня иерархии всех классов, что используют сигналы/слоты. Однако, библиотека Qt4, которая используется при разработке QReal, делает невозможным множественное наследование при наличии сигналов и слотов. Были различные попытки обойти подобную проблему, но либо они ни к чему не приводили, либо логика архитектуры абсолютно терялась. Тогда было решено использовать паттерн Мост (Bridge pattern).

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

Более подробно изображено на рисунке 3:

https://lh5.googleusercontent.com/a3lfzvicrbkhffbdaf-pnljtniorostq1rogqvbsfgfnjk7ehksfqxywqtovtokxe8gm8nkec9dpurjcdsnn-mbpyw4tpnjzwtxoi16wcubnrgzd2w

Рис. 3


Отметим, что AbstractRobotModelImplementation возвращает и создаёт ровно один  экземпляр конкретной реализации модели, т.к. в каждый момент времени у нас должен быть ровно один вариант исполнения программы и, тем самым, чтобы не надо было следить отдельно за множеством экземпляров, например при переключении видов моделей. При этом переключаться между различными видами исполнения программы можно, выбрав нужный тип модели робота в «Настройках робота». По умолчанию выбран «Реальный робот».

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

Теперь чуть подробнее остановимся на двухмерной модели. Конкретной реализацией такого способа исполнения программы является класс D2RobotModelImplementation, подкласс  класса AbstractRobotModelImplementation, а также соответствующие реализации частей робота (рис. 4). Но все они в качестве поля содержат экземпляр класса D2RobotModel, который и отвечает за основную логику эмуляции поведения робота. При этом за всю отрисовку отвечает класс RobotDrawer, который умеет только в отдельном окне по уже данным координатам перерисовывать  модель робота и оставляемый им при движении след.

https://lh3.googleusercontent.com/ib1zs43ffljkh60hkhytfqd9app5qip8ngytfu0k39_3e9jqxoegufuxwi05h_m5u_vpknzpeu1wtq6gantffgap33kp0hkur1ce5zcnauh5s8mflq

Рис. 4


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

Заключение

Итак, на данный момент среда QReal:Robots позволяет выполнить программу на нематериальном, но наглядном исполнителе — двухмерной модели робота, двигающегося по экрану монитора и оставляющего за собой след траектории. При этом была использована модель трёхколёсной тележки. Также была поддержана возможность переключения между реальным роботом, двухмерной моделью и пустой моделью в настройках.

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

1). А.Н. Терехов, Т.А. Брыксин, Ю.В. Литвинов и др., Архитектура среды визуального моделирования QReal. // Системное программирование. Вып. 4. СПб.: Изд-во СПбГУ. 2009, С. 171-196

2). С. А. Филиппов, Робототехника для детей и родителей // СПб, Наука, 2010г.

3). QReal:Robots, URL:http://se.math.spbu.ru/SE/qreal, (дата обращения: 8.05.2010)

4). Брыксин Т.А., Литвинов Ю.В., Среда визуального программирования роботов QReal:Robots // Материалы международной конференции "Информационные технологии в образовании и науке". Самара. 2011. С. 332-334

5). Gazebo, URL:http://playerstage.sourceforge.net/index.php?src=gazebo, (дата обращения: 8.05.2010)

6). Stage, URL:http://playerstage.sourceforge.net/index.php?src=stage,  (дата обращения: 8.05.2010)

7). Страница проекта "Isenguardemu, URL:  http://is.ifmo.ru/projects/isenguard/,  (дата обращения: 8.05.2010)

8). Лого (язык программирования), URL:

http://ru.wikipedia.org/wiki/Лого_(язык_программирования),  (дата обращения: 8.05.2010)

9). Робик (язык программирования), URL:



http://ru.wikipedia.org/wiki/Робик_(язык_программирования), (дата обращения: 8.05.2010)

Похожие:

Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 245 группы

Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 4xx группы XXXXXXX. X. X научные руководители: XXXXXXXX. X. X xxxxxxxxxxxxx. X. X москва 200X
Влияние кислотности раствора на сорбцию ароматических карбоновых кислот на ппу 5-30
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 245 группы Мавчун Екатерины Валерьевны
В настоящее время широко используется gps навигация. В частности, современные средства спутникового позиционирования позволяют отслеживать...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 345 группы
Программы могут однозначно сопоставить похожие последовательности ДНК в геномах разных видов; часто такие последовательности несут...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа по линейной алгебре и аналитической геометрии студентки I курса 1033 группы Ярмак Елены Владимировны
Целью курсовой работы является закрепление и углубление полученных студентом знаний и технических навыков по изучению и анализу свойств...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа: Студентки группы №999 Ивлевой О. С. Научный к и. н., доцент
Корейской войны писали американцы. И писали по своим канонам. Наряду со многими достоверными сведениями в трудах, изданных в США...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа по литературе стран изучаемого языка студентки III курса факультета международных отношений группы л-301
Смерть Байрона вызвала на континенте в либеральной части общества чувство печали и была оплакана Гёте (во II ч. "Фауста" в образе...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 3 курса Бабской Евгении Михайловны Однонуклеотидные полиморфизмы ppar-зависимых генов

Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconРеферат по истории студентки факультета ияиод группы фя-119 Субботиной Анны Педагог: Хегай В. К. Москва-2006
Новые веяния распространились и на страны Карибского бассейна, где в 60-80-х годах происходит стремительный процесс образования независимых...
Курсовая работа студентки 244 группы Дерипаска Анны Олеговны iconКурсовая работа студентки 2-го курса Гарушянц С. Тьюторы: Равчеев Д. А., Герасимова А. В
Компьютерный анализ регулона, отвечающего за биосинтез триптофана, в геномах архей
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org