|
TOBEX-CD. Третье перерождение Rug Warrior, Часть II
8.07.2004
Рассмотрев вкратце техническую сторону, посмотрим теперь, что предлагается в качестве 'мозгов' Тобекса. Я закладываю поведенческий принцип построеня модели ИИ. 'Настроение' робота, его текущее 'эмоциональное' состояние постоянно определяется на основе текущей сенсорной информации, предыдущем статистическом и событийном опыте, а также событий, происходящих вокруг. Как уже отмечалось, никто здесь пока не собирается создавать супер-ИИ академика. Для Тобекса хватит и подобия домашнего пса. Блок-схема системы приведена на рисунке ниже.
Задействовано две группы сенсоров: основные, такие как ambient light, ambient sound, power control, и дополнительные: Touch, Point light, Radar, IR sensor. Основные мониторят состояние окружающей среды и 'самочуствие' робота. Опытным путем и на основе здравых рассуждений, была построена некая зависимость данных, снятых с сенсоров при различных уровнях освещенности, звука и состояния заряда батарей, и результирующего ФАКТОРА, положительно или отрицательно влияющего на 'настроение' робота. Например, тишина вокруг никак не влияет, а вот повышенный уровень звука влияет положительно и, наоборот, через чур громкий звук производит негативное впечатление. Так же и с освещенностью. Так как на роботе установлена солнечная батарея, логично предположить, что чем больше света, тем лучше! Совсем ярко- плохо, возможен перегрев, а вот темнота располагает ко сну... С батареями также все логично: чем меньше осталось заряда, тем больше ИИ волнуется за свою жизнь, целеноправленнее должен искать светлые уголки, а при совсем низком заряде безусловно бежать к кормушке (блоку питания).
Таким образом мы опять пытаемся заложить в наш ИИ некоторые 'врожденные' инстинкты и правила поведения:
- много света- хорошо, мало света- плохо (плюс крайности!)
- много звука- хорошо, мало звука- ничего(плюс крайности!)
- много энергии- хорошо, мало- плохо
На основе вышесказанного были построены графики зависимости ФАКТОРА от состояния сенсоров сначала в несколько угловатом виде (бинарные значения: -1, 0, +1), а затем с помощью Excel-а получил аппроксимирующую полиномную функцию (на рис справа они указаны красным цветом), в которую теперь можно подставить реальные значения сенсорных данных и получить ФАКТОР, причем не в виде 0 или 1, а вполне float значения типа 0.345 или 0.794
Кроме таких простых определений, я ввожу и более 'сложные' инстинкты, подражая все тому же домашнему псу. Ведь собака радуется, когда с ней играет хозяин, и боится когда он ее ругает. Так и тут, благодаря дополнительным сенсорам система понимает, что человек пытается общаться с ней и делает соответствующие выводы, настраивая свое поведение. Дополнительные сенсоры опрашиваются в особых случаях (Point light, Radar), а интерактивные выявляют момент 'общения' с человеком. Например, группа Touch sensors состоит из трех контактов, один из которых используется для установочного режима, а два других условно обозначены 'YES' и 'NO'. Если робот делает что-то, что Вам нравится, Вы, в качестве поощрения, можете тронуть сенсор 'YES' и тогда ИИ поймет то, что он сейчас делает- это хорошо. И запомнит! Но об этом позднее. Аналогию можно провести с той же домашней собакой. Если она принесла Вам мячик- вы гладите ее по голове (YES); если она укусила Вас за палец- Вы даете ей пинка по зад (NO).
Помимо Touch sensors используется инфракрасная пара, установленная, как видно из фото на предыдущей странице, непосредственно на захвате манипулятора. Вы можете поиграть с роботом, поводив предметом перед клешней. Нехитрая программка поймет, чего хочет от нее человек, сцапает предмет и отнесет куда нужно... Но это детали исполнительных п/программ. Главное же для робота- это факт, что человек с ним играет, а это, как мы уже знаем, хорошо.
Также события в системе генерят два основных сенсора: освещенности и звука. Под событием понимается резкое изменение показаний сенсора. Если Вы, например, подошли к Тобексу и гаркнули ему в микрофон- он должен испугаться! А Вы испугаетесь?! То то! Или если вдруг в темноте резко зажгут свет... Тут реакция не столь одназначна и результат зависит от текущего состояния робота.
Из блок-схемы видно, что на сумматор поступают также данные из двух баз данных: 24х7 и Events. Первая накапливает статистику за предыдущие часы и дни недели. По окончании каждого часа, система записывает в эту БД текущее значение Сумматора функций для данного часа и данного дня недели. Вторая БД- это база хранения специфических событий, произошедших в прошлом с указанием ФАКТОРА (снижающего или повышающего эмоциональное состояние робота), времени иместа события и некоторой дополнительной служебной информацией.
Сумматор по своему алгоритму обрабатывает поступившие из разных источников ФАКТОРЫ, приводит их, так сказать, к общему знаменателю, получает результирующий обобщенный ФАКТОР и выдает его на Анализатор состояния (он же интегратор, он же Диспетчер задач). Этот блок анализирует массу служебной информации, текущие настройки систем, текущий список задач, предысторию событий и состояний, запрашивает доп инфомацию из баз данных, если необходимо и т.д. и в конце-концов определяет роботу дальнейший стиль поведения. На рисунке ниже мы видим упрощенную модель Интегратора и линейку состояний Тобекса: от безмерного счастья, до тревоги, сна и обязательной 'заправки'. Каждый такой блок из линейки состояний включает целый набор специфических алгоритмов и п/программ-примитивов, которые собственно визуально и реализуют это состояние: поиск, игра, убегание, поиск парковки и проч.
Продолжение следует...
|