roboforum.ru

Технический форум по робототехнике.

Мысли вслух: набор модулей RoboBrain

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 26 окт 2009, 12:11

Ну, например, есть задачка - какой высоты нужно поставить столб, чтобы тень от него в полдень завтра была длиной 50см? Как это может быть решено через продукционные правила?

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 26 окт 2009, 12:58

=DeaD= писал(а):Ну, например, есть задачка - какой высоты нужно поставить столб, чтобы тень от него в полдень завтра была длиной 50см? Как это может быть решено через продукционные правила?
Это геометрическая задача. Я обычно такие задачи решаю на бумаге, а не в уме. Но особо продвинутые могут и в уме все посчитать.
Для этого нужно заранее иметь, либо перед такими расчетами получить извне определенные знания: об угле возвышения Солнца в нужный час в указанной местности, систему измерения (в каких попугаях мерить высоту столба), основы геометрических построений (треугольники, соотношения сторон и др.), понятия что такое тень в 3D пространстве.
Вариант когда в робот жестко вмонитрован алгоритм такого вычисления и все параметры уже записаны числами в формулах я не рассматриваю.
Допустим, что система заранее располагает всеми вышеуказанными необходимыми знаниями.
Решение такой задачи с пом. продукционных правил должно происходить приблизительно так:
1. Каким- то образом нужно озадачить систему, например, с пом сообщения типа Query. В конечном итоге в его списке активированных фактов появятся факты о постановке задачи - что есть, что нужно. Это задача, где есть цель и нужно найти исходные условия, приводящие к такому результату. Система сама может определить это, проверив исх. условия, сам процесс и результаты. Ага, нет некот. исходных параметров. Есть цель - тень длиной 50 см.
Двигаемся назад от цели к исходным посылкам согласно механизму обратного логического вывода. Тут трудно описать все этапы. Но суть в том, что решение задачи синтезируется, оно не было заранее заложено в систему

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 26 окт 2009, 13:14

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

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

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 26 окт 2009, 13:44

В обычной Rules Engine разрозненные факты явл. текущими данными, а правила - знаниями.
Но Давайте рассмотрим ранее данную простейшую онтологию:
Class: Woman
SubClassOf: Person
Тогда если в рабочем списке появится новый факт Woman, то можно легко пройтись по связи: Woman - это субкласс класса Person. Это можно записать в виде правила

Class: Woman
=>
Class: Woman
SubClassOf: Person

Т.е. если есть класс Woman, то он будет являться субклассом класса Person.
Если в рабочем списке появится новый факт Person, то это можно записать в виде правила:

Class: Person.
=>
Class: Person
SuperClassOf: Woman

Т.е. если есть класс Person, то он будет являться суперклассом класса Woman.
Онтологичесий способ описания даже на двух понятиях оказался удобнее чем с пом. правил, т.к. правила легко выводятся из онтологии. Еще больше будет разница в случае сопоставления более длинных веток онтологии. Но правила сами могут быть описаны в виде онтологии. Они нужны тогда, когда нужно связать что-то неочевидное, либо выполнить опр. действие. Например, если свет красный, то включить сирену. Такие правила могут быть легко созданы, модифицированы, удалены. Я такие правила и хотел бы реализовать.

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 28 окт 2009, 15:00

Начну потихоньку разработку частей RoboBrain, ответственных за автономное поведение.
Сразу упрощу систему насколько это возможно. Робот - простейший. Его предстоит изготовить для экспериментов или купить. Сенсоров минимум. Нужен один или несколько датчиков препятствий. М.б. что-то еще.
Исхожу из идеи том, что богатая сенсорика и наличие удовлетворительного поведения робота в окружающей обстановке - хотя и связанные, но разные вещи.
Что хочу разработать и исследовать на первом этапе:
1. Построение модели окружающего мира в виде простейшей онтологии.
2. Самообучение, адаптация в простейшем виде.
3. Разработка простейших черт личности - упорство в достижении цели, страх и т.д.
4. Отработка дистанционного диалога с пользователем.
Сложность в том, что параметры МК весьма ограничены.

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 28 окт 2009, 15:25

Озадачен, как можно будет сделать пункт 1.

Не лучше ли сделать робота простейшего как веб-камеру + управляемый по радио автомобильчик в загончике? :)

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 28 окт 2009, 15:33

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

Re: Мысли вслух: набор модулей RoboBrain

EdGull » 28 окт 2009, 15:37

Виктор а ты читал книжку "Оркестр играет без дирежера"?
viewtopic.php?f=6&t=3481#p44724

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 28 окт 2009, 16:00

2Виктор: Я просто затрудняюсь оценить, как можно будет без развесистых сенсоров типа камеры строить модель мира в онтологии?

Можно какой-то пример разобрать, как с дальномером на серве эти онтологии заполняться будут?

Re: Мысли вслух: набор модулей RoboBrain

contr » 28 окт 2009, 16:40

Даже с примитивными сенсорами и мозгами муха или комар или стрекоза показывают чудеса.

Это у ботов они примитивные, а муха химические, оптические, тепловые и пр. датчики имеет куда круче искусственных. Да и скорость обработки информации, реакции, алгоритмы значительно лучше.
Последний раз редактировалось contr 28 окт 2009, 17:02, всего редактировалось 1 раз.

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 28 окт 2009, 19:49

2Виктор: Кстати, не факт что в комаре или мухе можно нарыть онтологию какую-то. Я полагаю, что их уровень развития не настолько крут, чтобы внутри могли быть такие вещи. Это же ближе к абстрактному мышлению, как я понимаю?

Добавлено спустя 3 часа 3 минуты 31 секунду:
Почистил тему от мух, оставил только котлеты :D

Re: Мысли вслух: набор модулей RoboBrain

setar » 28 окт 2009, 21:51

AndreiSk писал(а):А чего он тогда за MobileC схватился? Давайте лучше C#
Кроссплатформенность кому нибудь нужна? Откликнитесь.. зачем она вам.
Сделаем все под винду и все дела.

Ай маладца :)
а у меня нет например форточек, в принципе.
Пишу сейчас с мака, на работе в основном gentoo linux , AIX

Добавлено спустя 10 минут 9 секунд:
Виктор , могу помочь с компиляцией MobileC
если ещё актуально.

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 28 окт 2009, 23:10

EdGull писал(а):Виктор а ты читал книжку "Оркестр играет без дирежера"?
viewtopic.php?f=6&t=3481#p44724
Эту книгу не читал. Но аналогичные компоненты давно внедряются в агентов. В науке это назывется поведениями. Да и я много раз на других форумах писал о том, что разум - это не иерархия последовательно выполняющейся основной программы и вложенных функций. Необходимо разум строить в виде социума атомарных параллельных интеллектов. Но если они одновременно будут пытаться выполнять одну и ту же работу или претендовать на одни и те же ресурсы, то возникнут трудноразрешимые коллизии. Поэтому все же нужна какая-то организация этих поведений. Т.о. считаю, что нужен баланс децентрализации и централизации. Можно это увидеть на пример различных государств.

Добавлено спустя 52 минуты 48 секунд:
=DeaD= писал(а):Можно какой-то пример разобрать, как с дальномером на серве эти онтологии заполняться будут?
Попробую гипотетически это представить. Итак, имеем дальномер, кот. "смотрит" только вперед и жестко прикреплен к шасси, а также робот имеет возможность перемещаться вперед-назад, вправо-влево. Обычный автомобильчик.
Теперь мозги:
Вставляем ему простейшую онтологию, где есть лишь такие необходимые для него временнЫе понятия (процесс, событие...), геометрические (угол, расстояние, плоскость, полуплоскость ...), понятие "Я" - лишь в смысле его отделения от мира. Это "Я" - важное понятие, т.к. все что он насенсирирует, будет отмерять лишь относительно себя в текущий момент времени. Оставим "за бортом" его побуждения, а рассмотрим построение модели.
Итак, он включается, имея внутри себя лишь врожденную онтологию. он не знает где находится и включает дальномер Д. Д выдает дистанцию. Это - индивидуал события, который можно добавить в пользовательскую часть онтологии как один из экземпляров класса "Событие". Одним из свойств события будет набор узлов- понятий, описывающих показания дальномера. Затем робот может начать совершать поворот. При этом в онтологию при существенном изменении показаний дальномера записывается след. событие. Существенность зависит от степени его внимания или важности данной информации для него. Но тут очень важный момент. Можно указать кроме абсолютного показания дальномера и дельту - насколько изменились его показания с предыд. события. Тут не только количественная дельта, но и качественная (+ или -). Аналогично и с записью информации о сервах (токи, кол. оборотов или углы - если есть такие показания).
Важно, чтобы робот строил не математическую модель, состоящую из формул длин, углов, дистанций, а в первую очередь качественную. Например, дальномер показывает дистанцию 6 метров. Маленький робот - игрушка может отметить в онтологии - далеко. И все. Но если ему важна эта информация, он может записать и число 6 м.
При перемещении робота для каждого наблюдаемого в дальномер объекта может быть два разных варианта. 1. Объект неподвижен. 2. Объект подвижен. На это может накладываться изменение геометрии объекта, например, колыхание шторы на сквозняке. Тут нужно обратиться к таким способностям робота, как выдвижение гипотез. Если он "тупой", то будет предполагать неизменность положения и формы всех окр. объектов. Тогда если он будет по прямой линии двигаться вслед за кошкой, которая с такой же скоростью двигается от него (испугалась), то не сможет построить адекватную модель этого кусочка мира. Ему нужно будет выдвигать гипотезы - либо он сам никуда не движется - застрял, сломался, либо что наблюдаемый объект тоже движется. Выдвинув эти гипотезы робот может поставить эксперимент, например, повернуть в сторону.
Качественное описание мира нужно для выявления инвариант, которые, в свою очередь нужны для распознавания
Последний раз редактировалось Виктор Казаринов 28 окт 2009, 23:17, всего редактировалось 2 раз(а).

Re: Мысли вслух: набор модулей RoboBrain

=DeaD= » 28 окт 2009, 23:15

2Виктор: Как накопить кучу данных в памяти пользуясь онтологией более менее понятно (хотя лучше 1 пример бы с дальномером для полноты картины) - вопрос в том, как эти данные потом можно будет использовать. Ведь сбор данных - это ничто, если мы ими потом не можем эффективно пользоваться. :pardon:

Re: Мысли вслух: набор модулей RoboBrain

Виктор Казаринов » 28 окт 2009, 23:28

Онтологическое описание нужно не само по себе а для удобного и эффективного использования. Допустим, что робот после путешествия вернулся в ту же точку наблюдения под тем же углом. Он получил такое же показание дальномера. При этом в онтологии активируется узел этим показанием. Теперь можно:
1. Утверждать, что а)такое событие уже было ранее. Идет повторение. либо б)это наблюдение мира до неразличимости похоже на ранее наблюдаемое но не то же самое.
2. Сделать обобщение, а точнее - создать узел - класс, индивидуалами кот. будут 2 события - нынешнее и прошлое.
3. Если сделать такое обобщение, то можно дважды не записывать одинаковое показание дальномера, а отнести это свойство к новому вышестоящему классу. Это экономит память (компрессирует информацию без потерь) и позволяет автоматически абстрагировать, в дальнейших рассуждениях использовать и его.
4. Кроме того, располагая узлом в онтологии, можно легко предсказать будущее, если действовать как записано в онтологии. Но это лишь в случае, если точка наблюдения именно та же. Поставив эксперимент - начав двигаться, робот может обнаружить, например, что показания дальномера лишь случайно совпали. Тогда он отбрасывает эту гипотезу, считая, что местность иная. Это, в общем то и есть часть распознавания и самообучения и абстрагирования. Все "в одном флаконе".


Rambler\'s Top100 Mail.ru counter