Интеллектуальные робототехнические системы


Программирование в CLIPS экспертной системы управления технологическим процессом.


Программа ЭС управления ТП по обработке деталей сложной формы, разработанная на основе табл. 7.1 и табл. 7.2, выглядит следующим образом.

Листинг 7.1. Программа ЭС управления ТП по обработке деталей сложной формы. (html, txt)

Эта программа сохраняется в виде файла с именем, например, robot.clp, далее в среде CLIPS выполняются команды: clear; load robot.clp; reset и run. Эта программа начинает работать. Входные воздействия заданы в данном примере через deffacts initial-state.

Активизация правил БЗ для конкретных воздействий, заданных в программе, дает конфликтное множество (базу целей) - правила rule5 и rule6_7, а затем по критерию максимальной достоверности первым выбирается управляющее воздействие на систему низшего уровня:

Rule5: Vr=B, Vm=60, T=4, I=2, G= line, Rm=60, J=70, S=70

В реальной жизни входные воздействия поступают через оператор read (ввод данных с заданного устройства), например, следующим образом:

(defrule Dar_parameter (declare (salience 9101)) (Dar ? num)

(printout t "Ds parameter has value "crlf" 1) 10 "crlf" 2) 300 "crlf" 3) 800 "crlf" Choose 1—3

") (assert (Dar =(read))))

Читателю предлагается самостоятельно дописать правила останова программы (halt) по условиям Da=Dar или достижению заданного значения Ds, а также правила для проверки граничных условий. Дотошный читатель, разобравшийся в программе, может спросить, зачем мне CLIPS, если такую простую программу я могу написать на любом языке программирования. Во-первых, это учебный пример с простейшей базой знаний. Во-вторых, в реальной жизни база знаний содержит сотни правил, управляющие параметры постоянно считываются с датчиков и видеокамер, и сразу же отрабатывается поиск в сети продукций новых управляющих воздействий. Простой программой в таком случае не обойтись.

Примером более сложной программы для решения задачи планирования последовательности действий робота (лекция 3, рис. 3.4) является фрагмент программы Д. Грим-шоу (www.ryerson.ca/~dgrimsha).
Эта программа управления роботом по перекладыванию кубиков. Начальное состояние положения кубиков в стеке 1 и стеке 2 определяется путем перечисления кубиков сверху вниз. Задавая различные комбинации в deffacts initial-state, мы получим конкретные последовательности действий робота.

(deftemplate goal (slot move) (slot on-top-of)) (deffacts initial-state (stack A B C) (stack D E F) (goal (move C) (on-top-of E))) (defrule move-directly ?goal < — (goal (move ?block1) (on-top-of ?block2)) ?stack-1 < — (stack ?block1 $?rest1) ?stack-2 < — (stack ?block2 $?rest2)



(retract ?goal ?stack-1 ?stack-2) (assert (stack $?rest1)) (assert (stack ?block1 ?block2 $?rest2)) (printout t ?block1 "moved on top of" ?block2 crlf)) (defrule move-to-floor > ?goal < — (goal (move ?block1) (on-top-of floor)) ?stack-1 < — (stack ?block1 $?rest)


(retract ?goal ?stack-1) (assert (stack ?block1)) (assert (stack $?rest)) (printout t ?block1 "moved to the floor." crlf)) (defrule clear-upper-block (goal (move ?block)) (stack ?top $? ?block $?)


(assert (goal (move ?top) (on-top-of floor)))) (defrule clear-lower-block (goal (on-top-of ?block)) (stack ?top $? ?block $?)


(assert (goal (move ?top) (on-top-of floor))))

Результат работы CLIPS в данном случае будет следующий:

CLIPS$>$ (run) A moved to the floor. B moved to the floor. D moved to the floor. C moved on top of E CLIPS$>$

В завершение лекции читателю может быть рекомендована книга Ж.Гурратано [94], содержащая множество примеров программирования ЭС на основе CLIPS.

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


Содержание раздела