roboforum.ru

Технический форум по робототехнике.
Текущее время: 27 ноя 2024, 02:33

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Обсудим принципы определения задач для сложных роботов?
СообщениеДобавлено: 06 окт 2004, 21:30 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Интересуют мысли по поводу:
1. Определением приоритетов между задачами;
2. Выполнения нескольких задач одновременно;
3. Вообще способов определения задач роботу (не фиксированных 2-3 команд, а принципов определения задач);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2004, 21:38 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
И сразу же несколько своих мысле по этому поводу:

1. Задачи деляться на "выполнимые" и на "правила":
Пример "правила" - "Не разрушать окружающие объекты";
Пример "выполнимой" задачи - "Переместиться из точки А в точку Б";

2. Задачи имеют приоритет, приоритет может быть определен заранее и может определяться субъектами, для каждого субъекта есть ограничение на приоритет, который он может назначить задаче, и на приоритет, который смогут назначить его доверенные субъекты;

3. Выполнимые задачи имеют крайний срок выполнения и флажок "сделать максимально быстро, даже если не успели в срок";

4. Выполнение каждой задачи контроллируется соответствующей программой. Действия вызываемые одной программой проверяются программами с более высоким приоритетом на непротиворечивость. (т.е. если надо переместиться из точки А в точку Б, нельзя делать это через стекло, потому что это нарушение правила "не разрушать окружающие объекты")

Но тут есть миллион разных вопросов, в общем обсудим, если есть желающие :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2004, 21:41 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
:D Желание есть!
Вот почитал я сейчас эти пункты,
и моментально на ум пришла ассоциация с языком логического программирования , например пролог.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2004, 21:46 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Для сложного робота рационально выделить следующие задачи
(список будет пополняться):

  • обеспечение жизнедеятельности (подзарядка, починка, профилактика)
  • периодическая связь с управляющим центром ( дабы не потерять контроль), ну и для получения новых "выполнимых задач"
  • пополнение базы знаний об окружающем мире ( самообучение )
  • определение своего места в этом мире (ориентация)
  • исполнение поставленных задач в соответствии с их приоритетами
  • ...

Вообще то по грамотному сюда нужно добавить набор правил, регулирующий отношения между роботом и человеком ( которые Азимов сформулировал в декабре 1940-го в письме Джону Кэмбеллу, редактору журнала Astounding Scince Fiction)


Последний раз редактировалось setar 06 окт 2004, 21:58, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 окт 2004, 21:57 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
По поводу одновременного выполнения задач, есть у меня некоторые соображения, которые я попробую сформулировать несколько позже - нужно добраться до бумажной памяти :wink:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 07 окт 2004, 21:00 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
setar писал(а):
Для сложного робота рационально выделить следующие задачи
  • обеспечение жизнедеятельности (подзарядка, починка, профилактика)
  • периодическая связь с управляющим центром ( дабы не потерять контроль), ну и для получения новых "выполнимых задач"
  • пополнение базы знаний об окружающем мире ( самообучение )
  • определение своего места в этом мире (ориентация)
  • исполнение поставленных задач в соответствии с их приоритетами

Думаю можно сделать так:
  • Приоритет 100% - "Неразрушающее" правило.
  • Приоритет 095% - Первому (с момента сброса робота) назвавшему себя хозяином дать приоритет на задачи 090% и на делегирование - 080%, кроме этого ему запрещается понижать свой приоритет.
  • Приоритет 050% - Обеспечение жизнедеятельности.

Приоритет команд хозяина выше, чтобы всегда можно было сказать "стоять!", чтобы робот в случае чего не ломился к зарядному устройству.

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

setar писал(а):
Вообще то по грамотному сюда нужно добавить набор правил, регулирующий отношения между роботом и человеком ( которые Азимов сформулировал в декабре 1940-го в письме Джону Кэмбеллу, редактору журнала Astounding Scince Fiction)

С ними все ужастно, потому что, чтобы их проверить надо написать искуственный интеллект :)

Есть гораздо более простые, хотя и ущербные, но для наших целей видимо годные, варианты таких правил, например:

Не оказывать на объекты действия, за исключением поверхности по которой движемся и объектов, которые нам указали задействовать.

Однако здесь имеем проблему - если робот будет знать что молоко в холодильнике, надо будет ему вместо
"Принеси молоко"
сказать
"Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне"

Хорошо, если при этом двери на кухню и из комнаты будут открыты :shock: :D

----------------------------------------------------------------------------------
Еще видимо надо будет сделать "пунктик", если 2 команды противоречат друг-другу и имеют одинаковый приоритет, то действует последняя данная.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 окт 2004, 11:55 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Я думаю так: прежде чем говорить о "озадачивании" робота, мы должны решить каким образом задача будет интерпретироваться.

Я знаю два типа интерпритации
1. Алгоритмическая
   "Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне"

2. Логическая
   "Принеси молоко"

Как видно в алгоритмической интерпретации поставить задачу сложнее, и цепочка операций может быть прервана неожиданными изменениями, например если у холодильника оторвали дверцу  :wink:

Но есть и в прологе некоторые НО, я пока не знаю получится ли переложить его на программируемые микропроцессоры или же он годится лишь для palm и более сложных мозгов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 окт 2004, 12:44 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
setar писал(а):
Я знаю два типа интерпритации
1. Алгоритмическая
2. Логическая

Как в случае логической интерпретации может быть определен порядок выполнения команды?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 окт 2004, 12:53 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Да примерно так:
1. есть 3 пула задач :
   выполненные задачи, выполняемые задачи, и будующие задачи.

будующие задачи нужны для скидывания хвоста текущих задач при недробящейся последовательности текущих задач.

2. задача имеет приоритет, возможно класс (для глобальных приоритетов), а так же набор параметров которые обязательно включают в себя признак выполненности задачи и результат выполнения.

3. Далее организуется  циклический процесс выполнения задачи и модификации пула задач в соответствии с приоритетами, входными данными и новыми задачами.

P.S. пример пула задач

Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне

                             отдаю молоко
                             направляюсь к исходной точке
                             ищу маршрут к исходной точке
                             закрываю холодильник
                             беру молоко
                             открываю холодильник
                             иду к холодильнику
                             ищю маршрут к холодильнику
текущая задача ->  запоминаю исходную точку

пул может модифицироваться при внешних воздействиях, например при закрытой двери в комнату в текущие задачи вставится неделимый блок
                             закрыть за собой дверь
                             пройти за дверь
                             окрыть дверь


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсудим принципы определения задач для сложных роботов?
СообщениеДобавлено: 08 окт 2004, 23:54 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
=DeaD= писал(а):
Интересуют мысли по поводу:
1. Определением приоритетов между задачами;
2. Выполнения нескольких задач одновременно;
3. Вообще способов определения задач роботу (не фиксированных 2-3 команд, а принципов определения задач);


Немного непонятно название темы, в частности слова сложных роботов...
Сложные роботы могут быть и для простых задач.

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

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

Способов определения задач? Это наверное для универсальных роботов...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсудим принципы определения задач для сложных роботов?
СообщениеДобавлено: 09 окт 2004, 06:02 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Виталий писал(а):
Немного непонятно название темы, в частности слова сложных роботов...
Сложные роботы могут быть и для простых задач.

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

Предлагается именно эти темы и обсудить :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 ноя 2004, 04:23 
Не в сети
Модератор

Зарегистрирован: 11 ноя 2004, 03:18
Сообщения: 1274
Откуда: Москва
Эко вас понесло! Завтра присоеденюсь к обсуждению, сегодня уже поздно, спать хочется...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: двери
СообщениеДобавлено: 13 дек 2004, 21:09 
Не в сети

Зарегистрирован: 09 дек 2004, 23:49
Сообщения: 101
Откуда: Санкт-Петербург
Почему такое интересное обсуждение и вдруг - прервалось???
Вы тут обсуждали, что если робот будет знать, что молоко в холодильнике, надо будет ему вместо "Принеси молоко" сказать "Открой холодильник, возьми молоко, закрой холодильник, принеси молоко мне". Хорошо, если при этом двери на кухню и из комнаты будут открыты.
Но ведь участники форума строят самообучающиеся системы. Во всяком случае, стремятся к этому. Надо только научить робота открывать и закрывать двери, и тогда он сам сообразит, что нужно каждый раз производить эти действия, чтобы достать то, что находится за какой-нибудь дверью. В этом случае команда будет выглядеть так "Принеси молоко из холодильника". Все двери по дороге робот откроет сам.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 дек 2004, 00:16 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Это как он так вдруг "сам сообразит" ?

Подробней в этом месте :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 14 дек 2004, 00:35 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
И еще, хочется услышать ответ на вопрос. А как узнать, что перед тобой дверь-то? И при этом настоящая, а не нарисованная =)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO