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

Система управления поведением мобильного робота обладает следующими входами:

  • STDIN - вход запроса. На этот вход поступает строка запроса пользователя.
  • Click - Логический сигнал, возникающий после клика мышкой на видеоизображение на экране, и сохраняющийся после этого в состоянии "1" в течение 8 сек. Предназначен для организации диалога, при котором пользователь указывает мышкой на какой-либо предмет на видеоизображении и вводит команду "это что-либо". При этом сами координаты, указанные пользователем, для системы управления поведением не важны. Подразумевается, что эти координаты без участия системы управления поведением подаются на блок обучения образам.
  • isTrg - логический сигнал, определяющий наличие целевой точки для системы управления движением.
  • FigCnt - на этот вход поступает число обнаруженных системой технического зрения образов с заданным на выходе FindFig идентификатором (см. далее).
  • LearnRes - На этот вход поступает код результата обучения базы данных образов. Этот сигнал принимает ненулевое значение после окончания процесса обучения базы данных образов, инициированного сигналом Reason (см. далее).

Выходы:

  • STDOUT - выход строки ответа оператору.
  • FindFig - идентификатор образа, который следует обнаружить на видеоизображении. Данный сигнал поступает на вход модуля поиска образов. Этот модуль на входе FigCnt формирует общее число найденных образов с заданным идентификатором.
  • SeekFig - Сигнал на данном выходе задает идентификатор образа объекта, относительно которого формируются координаты x, y и before (см. далее). Данный сигнал поступает непосредственно на модуль слежения за образами. Координаты найденного таким образом объекта используются для формирования целевой точки.
  • x, y и before - На этих выходах формируются координаты целевой точки относительно объекта, идентификатор которого выводится на выходе SeekFig (Рис. 1). Значение сигналов на выходах x и y фиксируется только в момент назначения целевой точки (т.е. по переднему фронта импульса trg (см. ниже)). Затем в процессе движение относительное местоположение целевой точки относительно заданного объекта будет сохраняться. Сигнал before задает смещение целевой точки на заданную величину в направлении текущего положения робота (Рис. 1). Этот сигнал актуален и в начальный момент времени, и в процессе движения.
    Рис. 1. Принцип назначения целевой точки (Ц.Т.) системой управления поведением: а) в начальный момент времени; б) в процессе движения к целевой точке


  • trg Передний фронт импульса этого сигнала устанавливает значение сигнала о наличии целевой точки в значение "1". Задний фронт импульса этого сигнала устанавливает значение сигнала о наличии целевой точки в значение "0". Этот сигнал также сбрасывается в "0" при достижении роботом целевой точки. Входной сигнал isTrg определяет текущее состояние этого сигнала. Кроме того, по переднему фронту этого импульса фиксируется положение целевой точки относительно заданного объекта, исходя из совокупности сигналов x, y и SeekFig. Полученное местоположение целевой точки относительно объекта сохраняется в течение всего времени движения робота к ней.
  • q - Определяет направление поворота робота (-1 - влево, 1 - вправо, 0 - на месте). Поступает напрямую на приводной уровень.
  • v - Определяет направление движения робота (-1 - назад, 1 - вперед, 0 - на месте). Поступает напрямую на приводной уровень.
  • Reason - код причины обучения базы данных образов, входящей в состав СТЗ. Список этих кодов перечислен здесь. По умолчанию имеет значение 0.
  • NewFig - идентификатор нового объекта для обучения базы данных образов. Значение данного сигнала актуально только в момент перехода значения сигнала Reason из нуля в какое-либо другое состояние. Экранные координаты нового образа формируются пользователем и поступают на модуль базы данных образов без участия системы управления поведением. Актуально для реализации диалогов типа "Это что-либо".
  • ActiveFigPg - Интерфейс робота задуман таким образом, что по переднему фронту импульса этого сигнала перед пользователем появляется окно с видеоизображением, на котором он может указать мышкой объект. Актуально для реализации диалогов типа "Это что-либо".


С помощью встроенного редактора (Рис. 2) создадим для этой системы управления поведением новую базу знаний. При этом автоматически сгенерируются командный тип фреймов "события", фреймы которого обладают наивысшим приоритетом. В состав этого типа фрейма входят рассмотренные ранее фреймы: "ПРИ_ИНИЦИАЛИЗАЦИИ", "ЗАПРОС_ПОНЯЛ" и "ЗАПРОС_НЕ_ПОНЯЛ".



а)
б)
в)
Рис 2. Внешний вид экранного интерфейса редактора базы знаний системы управления поведением интеллектуального мобильного робота: а) в процессе редактирования словесной предпосылки; б) в процессе редактирования алгоритмического следствия; в) в процессе отладки


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

Создадим следующие фреймы данного типа: "назад", "вперед", "направо", "налево". Словесная предпосылка этих фреймов будет состоять из одного единственного слота (соответственно: "назад", "вперед", "направо" и "налево"). Для фреймов "направо" и "налево" слот помечен, как слово с синонимами. Синонимами словам "налево" и "направо" являются слова "влево" и "вправо" соответственно. Алгоритмическое следствие этих четырех фреймов будет выполнять следующие действия: модифицировать выходные переменные q и v таким образом, чтобы робот начал движение в соответствующем направлении, выжидать определенный интервал времени (~500 мс) и устанавливать нулевые значения этим переменным.

Кроме того, создадим фреймы "езжай вперед" и "езжай назад". По смыслу данные команды должны инициировать движение вперед или назад без остановки, в отличие от команд "вперед" и "назад". Словесная предпосылка этих фреймов состоит из двух слотов. Первое слот обозначен как слово с синонимами. В качестве синонимов для слова "езжай" выступают слова "ехай" и "ехать". Для фрейма "езжай вперед" второй слот тоже обозначен как слово с синонимами. В качестве синонима слову "вперед" выступает слово "прямо". Алгоритмическое следствие этих двух фреймов модифицирует значение выходных переменных q и v таким образом, чтобы обеспечить движение вперед или назад соответственно. Далее с помощью блока "Ждать" система ожидает модификации входной переменной STDIN, которая отвечает за строку запроса. Как только строка изменяется, алгоритм останавливает движение робота.

Создадим фреймы "езжай направо" и "езжай налево". Слово езжай содержит те же синонимы, что и в предыдущем случае. Алгоритмическое следствие этих фреймов будет выполнять следующие действия: с помощью переменных q и v и блока задержки поворачивать робота направо или налево соответственно, а затем с помощью блока "запрос" формировать запрос "езжай вперед". Таким образом, наблюдается вложенность алгоритмического следствия фреймов.

Обучим робот некоторым элементам предметной области. Условимся, что база данных образов, имеет возможность распознавать кубик (образ с идентификатором 1), цилиндр (образ с идентификатором 2) и шар (образ с идентификатором 3).

Тогда в базе знаний системы управления поведением создадим новый некомандный тип фреймов "объекты". В состав этого типа фреймов включим фреймы: "ты", "кубик", "цилиндр" и "шар".

Словесная предпосылка каждого из этих фреймов состоит из одного слота. Этот слот обозначен как "слово и его синонимы". В качестве синонимов выступает названия фрейма во всех падежах и числах. Например, для фрейма "кубик" список синонимов включает слова "кубика", "кубику", "кубиком", "кубике", "кубики", "кубиков", "кубиками", "кубиках". Отметим, что для склонения слова по падежам применяется встроенная опция редактора. Алгоритмическое следствие каждого такого фрейма состоит из одного единственного оператора "возвратить", возвращающего идентификатор объекта: для объекта "ты" - 0, для кубика - 1, для цилиндра - 2, для шара - 3.

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

Опишем некоторые манипуляции над объектами предметной области. Для этого в созданном ранее типе фреймов "задания" создадим следующие фреймы.

Фрейм "найди объект". Словесная предпосылка этого фрейма состоит из двух слотов. Первый слот "найди" обозначен, как слово с синонимами: "найти", "ищи", "искать", "поищи", "поискать". Второй слот "объект" обозначен, как параметр типа "объекты". Программное следствие этого фрейма определяет алгоритм поиска объекта. Поиск осуществляется путем поворота робота на месте. Для поиска алгоритм присваивает выходной переменной FindFig значение параметра "объект" (т.е. помещает в переменную FingFig идентификатор объекта), а на входе FigCnt ожидает ненулевое количество найденных объектов заданного типа. Полностью алгоритм поиска приведен здесь.

Фрейм "подойди к/ко объекту" входит в состав типа фреймов "задания". В словесной предпосылке этого фрейма слово "объект" является параметром типа "объекты". Алгоритмическое следствие этого фрейма производит запрос в базу данных "встань перед объектом". Сам запрос "встань перед объектом" будет описан далее.

Фрейм "это что-либо". Данный фрейм введен для реализации процессов обучения базы знаний новым объектам предметной области. Словесная предпосылка данного фрейма состоит из двух слотов. Второй слот обозначен, как параметр типа "объекты" с атрибутом "обучаемый параметр". Алгоритмическое следствие этого фрейма определяет локальную переменную ID, в которую записывает значение параметра "что-либо". В случае, когда в запросе на месте параметра стоит незнакомое слово, значение параметра будет являться пустой строкой, в противном случае - числовым идентификатором объекта. В случае пустой строки присвоим локальной переменной ID значение случайного идентификатора. После этого алгоритмическое следствие фрейма "это что-либо" реализует диалог с пользователем и предлагает пользователю показать на объект на видеоизображении. Затем алгоритм активизирует механизм обучения базы данных образов. При этом в качестве идентификатора нового образа на выходе NewFig используется значение переменной ID. Если процесс обучения базы данных образов завершился успехом (о чем свидетельствует код результата обучения на входе LearnRes), то алгоритм с помощью блока "обучение" генерирует новый фрейм-объект с идентификатором ID. Полностью данный алгоритм приведен здесь.

Фрейм "это не что-либо причина". Данный фрейм предназначен для коррекции базы данных образов в случае некорректного их распознавания. Словесная предпосылка данного фрейма состоит из четырех слотов. Третий слот "что-либо" обозначен как параметр типа "объекты". Четвертый слот "причина" обозначена как параметр типа "причины удаления" (см. далее), причем имеет атрибут "умалчиваемое слово". Кроме того, по умолчанию он принимает значение "БЕЗ_ПРИЧИНЫ". Алгоритмическое следствие фрейма инициирует процесс удаления образа из базы данных, причем в качестве причины удаления на выходе Reason алгоритм формирует значение параметра "причина". В случае, когда модуль базы данных образов с помощью соответствующего кода ошибки на входе LearnRes сообщил о том, что требуется уточнить причину, алгоритм организует диалог с пользователем, в результате которого выясняет причину. Эта причина сохранятся в локальную переменную D, а затем формируется с помощью блока "запрос" формируется запрос "Это не <что-либо> потому что [D]". При этом конструкция <что-либо> заменяется на значение параметра "что-либо", а конструкция [D] заменяется на значение локальной переменной D. Полностью алгоритмическое следствие данного фрейма приведено здесь.

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

Фрейм "встань куда-либо". Словесная предпосылка этого фрейма состоит из двух слотов. Первый слот - слово с синонимами "встань", "встать", "переместись", "переместиться". Второй слот - параметр типа "место" (см. далее). Алгоритмическое следствие этого фрейма открывает значение параметра "куда-либо" (т.е. запускает алгоритм фрейма, переданного в качестве параметров). Если алгоритм этого параметра увенчался успехом, то выходной переменной trg присваивается значение 1, тем самым инициируется процесс начала движения, после в течение некоторого времени ожидается выполнение условия isTrg=0, что будет соответствовать приходу робота в заданную целевую точку, а затем переменной trg присваивается значение 0.

Определим новый некомандный тип фреймов "причины удаления", в котором фреймами перечислим причины удаления, необходимые для фрейма "это не что-либо причина". Словесная предпосылка этих фреймов содержит ключевое слово причины удаления. Алгоритмическое следствие этих фреймов содержит единственный блок "возвратить", который определяет код причины удаления. Важно наличие фрейма "БЕЗ_ПРИЧИНЫ", т.к. именно это значение фрейм "это не что-либо причина" использует по умолчанию в качестве параметра "причина".

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

Для этого типа фреймов определим фреймы: "перед объектом", "слева от/о объекта", "с левой стороны объекта", "справа от/ото объекта", "справой стороны объекта", "за объектом", "с передней стороны объекта", "с задней стороны объекта", "у/около объекта". Во всех этих фреймах слово "объект" выступает в качестве параметра типа "объекты". Программное следствие этих фреймов делает запрос в базу знаний "найди объект". Если при этом процесс поиска увенчается удачей, то соответствующим образом модифицируются выходные переменные SeekFig, x, y и before. Заметим, что алгоритм не инициирует начало движения, а лишь модифицирует указанные переменные. Полностью алгоритмическое следствие данного фрейма приведено здесь здесь.

Таким образом, сформированная база знаний системы управления поведением обладает следующими свойствами:

  1. Наличие команд низкого уровня. Это позволяет делать запросы типа "отъехать вперед", "отступи назад", "повернись направо", "найди шар" и т.д.
  2. Наличие команд высокого уровня, которые позволяют делать запросы типа "встань слева от шара", "подъехать к шару" и т.д.
  3. Наличие механизмов обучения новым объектам. Это позволяет делать запросы типа "это апельсин", "а это не апельсин, потому что он маленький".
  4. Наличие механизмов обучения новым действиям. Это позволяет организовывать диалоги типа:
    Пользователь: начинаю тебя обучать.
    Робот: Введите команду.
    Пользователь: провести инспекцию.
    Робот: что я должен сделать?
    Пользователь: подъехать к кубику, затем встать слева от шара, развернуться и подъехать к цилиндру.
    Робот: я понял.



Назад ]
Дизайн: DynSoft 

Рейтинг@Mail.ru
Используются технологии uCoz