Реферат: Внастоящей работе описывается практическая реализация продукционной модели управления техническим объектом мобильным роботом


Российский Государственный Гуманитарный университет, отделение интеллектуальных систем в гуманитарной сфере,

Лаборатория робототехники и искусственного интеллекта Государственного Политехнического музея


Управление мобильным роботом при помощи Visual Prolog

Татьяна Волкова


студентка 3 курса Института лингвистики РГГУ, Отделения интеллектуальных систем в гуманитарной сфере.


Москва, 2008

Управление мобильным роботом при помощи Visual Prolog

Введение


В настоящей работе описывается практическая реализация продукционной модели управления техническим объектом – мобильным роботом. Работа была выполнена в Лаборатории робототехники и искусственного интеллекта Государственного Политехнического музея под руководством к.т.н. Добрынина Д.А. и к.т.н. Карпова В.Э.


Актуальность работы подтверждается тем, что существует мало робототехнических проектов на Visual Prolog. Одним из таких проектов является исследование голландца Бена Хоуиенги (Ben Hooijenga), которое заключалось в решении проблемы удержания шеста в равновесии (Broomstick problem). На движущейся машинке установлен шест; задача в том, чтобы удерживать шест в вертикальном положении, изменяя направление и скорость движения машинки. Бен Хоуиенга решает эту задачу с помощью нейросетей, для чего и использовал Visual Prolog. Более подробно этот проект описан на его странице в Интернете [Projektgroep B-AI-kar].

^ Устройство робота

Робот «Зенон» представляет собой автономное мобильное устройство, управляемое микроконтроллером. Микроконтроллер работает на тактовой частоте 7 MHz и имеет FLASH-память 8 Kb, ОЗУ 1 Kb RAM.

Робот имеет различные органы для взаимодействия с окружающей средой. Они делятся на:

рецепторы, с помощью которых робот воспринимает окружающую среду:

датчик освещённости внешней среды (выдаёт сигнал от 0 до 5 вольт в зависимости от освещённости окружающего пространства)

инфракрасные приёмники (два «глаза», которые способны принимать сигнал от маяка)

инфракрасные датчики препятствий (левый и правый, две зоны обнаружения по дальности)

фотодатчики линии (два датчика выдают сигнал от 0 до 5 вольт в зависимости от освещённости поверхности)

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

двигатели

светоизлучатель

звуковой динамик



Рис. 2. Органы робота

Мир робота состоит из белого полигона с чёрной полосой, по которой робот может следовать, используя датчики линии. Также на полигоне есть «дом» - прямоугольный лист серого цвета.

На «доме» две полоски – чёрная и белая. На них робот стартует, и первые несколько секунд после включения калибрует датчики линии.



Рис. 3. Мир робота.


В мире робота имеются следующие объекты:

ИК-маяк, испускающий инфракрасные сигналы. Располагается в «доме» и является ориентиром для робота.

Источник видимого света (фонарик). Служит для создания резкой смены освещения, и, следовательно, испуга робота.

Препятствия, которые робот может огибать при помощи инфракрасных датчиков препятствий.



Рис. 4. Объекты мира робота.

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

Робот имеет связь с управляющим компьютером (далее - УЭВМ) по интерфейсу RS-232.

На рис.5 приведена схема объекта управления, построенная в соответствии с работой «От амёбы до робота: модели поведения»[Гаазе-Рапопорт, 1987].



Рис. 5. Схема объекта управления (робота)

^ Архитектура системы

Систему управления робота можно разделить на низкоуровневые действия, которые выполняются самим роботом (запрограммированы в бортовом компьютере робота), и на высокоуровневые последовательности действий, которые поступают со стационарной управляющей ЭВМ (далее - УЭВМ).

Задачи низкого уровня включают:

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

объезд препятствия

испуг от резкой смены света

поиск дома

следование на маяк

и несложные процедурные действия, такие как

мигание светодиодом

следование линии

поиск маяка

Высокоуровневые задачи – это, прежде всего,

планирование

запоминание (составление модели мира).



Рис. 6. Два уровня управления

Если робот не получает сигналов от УЭВМ в течение некоторого времени, то считает себя «потерявшимся» и совершает случайные перемещения, осуществляя безусловные рефлексы.

Если УЭВМ подключается вновь и перехватывает управление, то робот становится пассивным и подчиняется высокоуровневым командам УЭВМ.

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

Идея об иерархии в системе управления далеко не нова, но в робототехнике используется не очень часто: из последних реализаций можно отметить [Карпов, 2007].


^ Коммуникационная программа


Для того, чтобы установить соединение с роботом, необходима терминальная программа на Visual Prolog. Такую терминальную программу для VIP 7.1 CE написал Бен Хоуиенга (Ben Hooijenga), она доступна на официальном форуме [Visual Prolog Discussion Forums] и на [Visual Prolog Wiki].


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


Для осуществления канала связи между УЭВМ и роботом был разработан протокол.


^ Описание протокола


Основная проблема при управлении техническим объектом в реальном времени заключается в необходимости синхронизации. Чтобы обойти эти проблемы, был применён таймер и установлен достаточно жёсткий алгоритм взаимодействия робота и УЭВМ


Каждые 100 миллисекунд происходит акт коммуникации, сценарий которого приведён в таблице 1.





^ Действия УЭВМ

Действия робота

1.

УЭВМ посылает роботу 1 байт – запрос о состоянии и сигналах на датчиках.




2.




Робот отвечает 2 байтами. Первый байт содержит информацию о состоянии робота и о его перемещениях. Второй байт представляет двоичные сигналы на рецепторах.

3.

Используя базу правил, УЭВМ принимает решение и посылает роботу 1 байт - команду. Возможны 255 разных команд.





Таблица 1.


УЭВМ посылает роботу команду опроса датчиков, закодированную одним байтом. Робот получает её и отвечает двумя байтами. Детальное описание ответа робота см. на рис. 7 и 8.



Рис. 7. Первый байт – информация о состоянии робота и его перемещениях в пространстве


Примеры состояний робота:

Испуг (паника)

Поиск линии

Обход препятствия спереди

Калибровка




Рис. 8. Второй байт – двоичные сигналы на датчиках


Фрагмент реализации протокола на стороне УЭВМ


Ниже приведён фрагмент кода обработки прерывания по таймеру, в котором и осуществляется коммуникация между роботом и УЭВМ.


%прерывание по таймеру (происходит каждые 100 миллисекунд)
predicates
    onTimer : window::timerListener.
clauses
    onTimer(_Source, _timer):-

% начать коммуникацию                 

send("TELL_ME_YOUR_STATE"), 
% получить ответ робота о его состоянии и перемещениях                
        readStateAndMovements(),

% получить сигналы с рецепторов         
        readSensors(),
% Если автоконтроль (использование базы правил)  включён,                
        if auto_control=true() then 

% вывести команду, используя правило из базы
          (rule(CommandToRobot), 

% послать команду
          send(CommandToRobot), 
          fail;  % откат, чтобы попробовать применить все правила в базе
          succeed())
         end if,    

% перерисовать карту на экране          
         refresh_map().  


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


predicates
    readSensors: ().
clauses
    readSensors():-%создать двоичный массив длиной 1 байт

        BinaryRead = binary::create(1),
% Прочитать 1 байт (метод класса, написанного Беном Хоуиенга)

        BytesRead = comdevice:readfile_overlapped(BinaryRead,

binary::getSize(BinaryRead)),

%преобразовать двоичный массив в список битов 
        SensorsList = bit::bitSplit(binary::getIndexed_unsigned8(BinaryRead,0)),           
         foreach 

Bit = list::getMember_nd(SensorsList) 

do

% раскодировать сигналы и вставить информацию в базу фактов

if decodeSensorsSignals(Bit, Object), ! then 

% добавить объект, обнаруженный датчиками, к модели мира

placeOnTheMap(Object) 
             end if
       end foreach.


Робот пересылает УЭВМ информацию о своих перемещениях, полученную с помощью энкодеров на обоих ведущих колёсах. УЭВМ получает от робота сигнал вроде «поворачиваю налево» или «движусь назад». Сам робот не знает своих координат. Их УЭВМ вычисляет относительно стартовой точки робота.


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


^ База знаний


В базе знаний хранятся правила, задающие модель поведения робота.


predicates

rule: (string Command) nondeterm (o).

clauses

% Если ты испуган, включи светоизлучатель, чтобы отпугнуть возможного врага

rule("SWITCH_LED_ON_TEMP "):-
    state("Frightened"),
    obstacle_sensor_active("FarIRSensor").

% Если ты дома, включи светоизлучатель (радуйся), и жди одну секунду (отдыхай)
rule("SWITCH_LED_ON_TEMP "):-
    state("AtHome").
rule("WAIT_ONE_SECOND"):-
    state("AtHome").
% Если ты всё ещё дома, выходи и иди по линии  
rule("LOOK_FOR_LINE "):-
    state("AtHome").    


^ Пример взаимодействия робота и УЭВМ.

Модель поведения робота сходна с поведением живого существа.

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

Если яркой вспышкой света испугать робота, он издаёт крик и переходит в состояние паники, беспорядочно двигаясь, пока УЭВМ не скомандует ему зажечь светоизлучатель и следовать по направлению к маяку (полигон устроен таким образом, что маяк находится в центре дома).

Робот ищет маяк и начинает ползти по направлению к нему, проверяя, не находится ли он уже дома. Если робот попадает домой, то команда с УЭВМ говорит ему продолжать движение по линии.



Рис. 9. Модель поведения робота. Красные стрелки обозначают переходы, которые робот совершает только по команде УЭВМ


Литература


[Гаазе-Рапопорт, 1987] Гаазе-Рапопорт М.Г., Поспелов Д.А. От амебы до робота: модели поведения. -М.: Наука, 1987, -286с.


[Карпов, 2007] Карпов В.Э. Импринтинг и центральные моторные программы в робототехнике. IV-я Международная научно-практическая конференция "Интегрированные модели и мягкие вычисления в искусственном интеллекте" (28-30 мая 2007 г.) Сб. научн. трудов, М.: Физматлит, 2007, Том 1, с. 322-332


Добрынин Д.А., Карпов В.Э. Моделирование некоторых форм адаптивного поведения интеллектуальных роботов. //Информационные технологии и вычислительные системы. № 2, 2006, стр. 45-56.


Ссылки на ресурсы в Интернете


[Projektgroep B-AI-kar] http://www.ai.hccnet.nl/projectgroepen/B-AI-kar.html

[Visual Prolog Discussion Forums] http://www.discuss.visual-prolog.com

[Visual Prolog Wiki] http://wiki.visual-prolog.com
еще рефераты
Еще работы по разное