Технический форум по робототехнике.
=DeaD= » 06 окт 2004, 21:30
Интересуют мысли по поводу:
1. Определением приоритетов между задачами;
2. Выполнения нескольких задач одновременно;
3. Вообще способов определения задач роботу (не фиксированных 2-3 команд, а принципов определения задач);
=DeaD= » 06 окт 2004, 21:38
И сразу же несколько своих мысле по этому поводу:
1. Задачи деляться на "выполнимые" и на "правила":
Пример "правила" - "Не разрушать окружающие объекты";
Пример "выполнимой" задачи - "Переместиться из точки А в точку Б";
2. Задачи имеют приоритет, приоритет может быть определен заранее и может определяться субъектами, для каждого субъекта есть ограничение на приоритет, который он может назначить задаче, и на приоритет, который смогут назначить его доверенные субъекты;
3. Выполнимые задачи имеют крайний срок выполнения и флажок "сделать максимально быстро, даже если не успели в срок";
4. Выполнение каждой задачи контроллируется соответствующей программой. Действия вызываемые одной программой проверяются программами с более высоким приоритетом на непротиворечивость. (т.е. если надо переместиться из точки А в точку Б, нельзя делать это через стекло, потому что это нарушение правила "не разрушать окружающие объекты")
Но тут есть миллион разных вопросов, в общем обсудим, если есть желающие

setar » 06 окт 2004, 21:41

Желание есть!
Вот почитал я сейчас эти пункты,
и моментально на ум пришла ассоциация с языком логического программирования , например пролог.
setar » 06 окт 2004, 21:46
Для сложного робота рационально выделить следующие задачи
(список будет пополняться):
- обеспечение жизнедеятельности (подзарядка, починка, профилактика)
- периодическая связь с управляющим центром ( дабы не потерять контроль), ну и для получения новых "выполнимых задач"
- пополнение базы знаний об окружающем мире ( самообучение )
- определение своего места в этом мире (ориентация)
- исполнение поставленных задач в соответствии с их приоритетами
- ...
Вообще то по грамотному сюда нужно добавить набор правил, регулирующий отношения между роботом и человеком ( которые Азимов сформулировал в декабре 1940-го в письме Джону Кэмбеллу, редактору журнала Astounding Scince Fiction)
Последний раз редактировалось
setar 06 окт 2004, 21:58, всего редактировалось 1 раз.
setar » 06 окт 2004, 21:57
По поводу одновременного выполнения задач, есть у меня некоторые соображения, которые я попробую сформулировать несколько позже - нужно добраться до бумажной памяти

=DeaD= » 07 окт 2004, 21:00
setar писал(а):Для сложного робота рационально выделить следующие задачи
- обеспечение жизнедеятельности (подзарядка, починка, профилактика)
- периодическая связь с управляющим центром ( дабы не потерять контроль), ну и для получения новых "выполнимых задач"
- пополнение базы знаний об окружающем мире ( самообучение )
- определение своего места в этом мире (ориентация)
- исполнение поставленных задач в соответствии с их приоритетами
Думаю можно сделать так:
- Приоритет 100% - "Неразрушающее" правило.
- Приоритет 095% - Первому (с момента сброса робота) назвавшему себя хозяином дать приоритет на задачи 090% и на делегирование - 080%, кроме этого ему запрещается понижать свой приоритет.
- Приоритет 050% - Обеспечение жизнедеятельности.
Приоритет команд хозяина выше, чтобы всегда можно было сказать "стоять!", чтобы робот в случае чего не ломился к зарядному устройству.
Приоритет неразрушающего правила выше всего, чтобы этот домашний питомец не ломанулся через стекло выполнять команду, которую никак иначе выполнить не смог.
setar писал(а):Вообще то по грамотному сюда нужно добавить набор правил, регулирующий отношения между роботом и человеком ( которые Азимов сформулировал в декабре 1940-го в письме Джону Кэмбеллу, редактору журнала Astounding Scince Fiction)
С ними все ужастно, потому что, чтобы их проверить надо написать искуственный интеллект

Есть гораздо более простые, хотя и ущербные, но для наших целей видимо годные, варианты таких правил, например:
Не оказывать на объекты действия, за исключением поверхности по которой движемся и объектов, которые нам указали задействовать.Однако здесь имеем проблему - если робот будет знать что молоко в холодильнике, надо будет ему вместо
"Принеси молоко"
сказать
"Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне"
Хорошо, если при этом двери на кухню и из комнаты будут открыты
----------------------------------------------------------------------------------
Еще видимо надо будет сделать "пунктик", если 2 команды противоречат друг-другу и имеют одинаковый приоритет, то действует последняя данная.
setar » 08 окт 2004, 11:55
Я думаю так: прежде чем говорить о "озадачивании" робота, мы должны решить каким образом задача будет интерпретироваться.
Я знаю два типа интерпритации
1. Алгоритмическая
"Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне"
2. Логическая
"Принеси молоко"
Как видно в алгоритмической интерпретации поставить задачу сложнее, и цепочка операций может быть прервана неожиданными изменениями, например если у холодильника оторвали дверцу :wink:
Но есть и в прологе некоторые НО, я пока не знаю получится ли переложить его на программируемые микропроцессоры или же он годится лишь для palm и более сложных мозгов.
=DeaD= » 08 окт 2004, 12:44
setar писал(а):Я знаю два типа интерпритации
1. Алгоритмическая
2. Логическая
Как в случае логической интерпретации может быть определен порядок выполнения команды?
setar » 08 окт 2004, 12:53
Да примерно так:
1. есть 3 пула задач :
выполненные задачи, выполняемые задачи, и будующие задачи.
будующие задачи нужны для скидывания хвоста текущих задач при недробящейся последовательности текущих задач.
2. задача имеет приоритет, возможно класс (для глобальных приоритетов), а так же набор параметров которые обязательно включают в себя признак выполненности задачи и результат выполнения.
3. Далее организуется циклический процесс выполнения задачи и модификации пула задач в соответствии с приоритетами, входными данными и новыми задачами.
P.S. пример пула задач
Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне
отдаю молоко
направляюсь к исходной точке
ищу маршрут к исходной точке
закрываю холодильник
беру молоко
открываю холодильник
иду к холодильнику
ищю маршрут к холодильнику
текущая задача -> запоминаю исходную точку
пул может модифицироваться при внешних воздействиях, например при закрытой двери в комнату в текущие задачи вставится неделимый блок
закрыть за собой дверь
пройти за дверь
окрыть дверь
Виталий » 08 окт 2004, 23:54
=DeaD= писал(а):Интересуют мысли по поводу:
1. Определением приоритетов между задачами;
2. Выполнения нескольких задач одновременно;
3. Вообще способов определения задач роботу (не фиксированных 2-3 команд, а принципов определения задач);
Немного непонятно название темы, в частности слова сложных роботов...
Сложные роботы могут быть и для простых задач.
Предположим, мы придерживаемся модульной архитектуры, и у нас есть предположим 2 модуля, перемещения и например навигации. Первый обеспечивает безопасное перемещение, второй показывает местоположение робота. Тогда вопрос о приоритетах между задачами трансформируется в вопрос ранжирования модулей, и возможно к переходу к "вентильной" системе взаимодействия. Кстати, некоторая "настойчивость" в поведении робота иногда заканчивается успехом. В скором времени заканчиваю эпопею с собственным блоком управления, посему смогу предложить некоторые высказывания на тему обучения робота.
Выполнение нескольких задач...хм, тут на мой взгляд стоит подумать о критерии, который бы указал на (не)возможность этого...
Способов определения задач? Это наверное для универсальных роботов...
=DeaD= » 09 окт 2004, 06:02
Виталий писал(а):Немного непонятно название темы, в частности слова сложных роботов...
Сложные роботы могут быть и для простых задач.
Согласен, кривое название, попробую придумать правильнее.
Однако смысл тот-же, есть несколько задач, и могут добавляться новые, нужно их все выполнять, однако не в случайном порядке, а если еще и сможем комбинировать задачи, разбивая их на подзадачи и выполняя вперемешку, чтобы выполнить их быстрее, то вообще отлично.
Предлагается именно эти темы и обсудить

Kanoka » 11 ноя 2004, 04:23
Эко вас понесло! Завтра присоеденюсь к обсуждению, сегодня уже поздно, спать хочется...
Floksa » 13 дек 2004, 21:09
Почему такое интересное обсуждение и вдруг - прервалось???
Вы тут обсуждали, что если робот будет знать, что молоко в холодильнике, надо будет ему вместо "Принеси молоко" сказать "Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне". Хорошо, если при этом двери на кухню и из комнаты будут открыты.
Но ведь участники форума строят самообучающиеся системы. Во всяком случае, стремятся к этому. Надо только научить робота открывать и закрывать двери, и тогда он сам сообразит, что нужно каждый раз производить эти действия, чтобы достать то, что находится за какой-нибудь дверью. В этом случае команда будет выглядеть так "Принеси молоко из холодильника". Все двери по дороге робот откроет сам.
=DeaD= » 14 дек 2004, 00:16
Это как он так вдруг "сам сообразит" ?
Подробней в этом месте

Виталий » 14 дек 2004, 00:35
И еще, хочется услышать ответ на вопрос. А как узнать, что перед тобой дверь-то? И при этом настоящая, а не нарисованная =)