| |||
: О проекте :: Устройство робота :: Фото и видео :: Демострационный софт :: О авторе : | |||
Пример настройки базы знаний системы управления поведением интеллектуального мобильного робота на основе команд оператораСистема управления поведением мобильного робота обладает следующими входами:
Выходы:
С помощью встроенного редактора (Рис. 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. Заметим, что алгоритм не инициирует начало движения, а лишь модифицирует указанные переменные. Полностью алгоритмическое следствие данного фрейма приведено здесь здесь. Таким образом, сформированная база знаний системы управления поведением обладает следующими свойствами:
| |||
Дизайн: DynSoft |