roboforum.ru

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

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




Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 22  След.
Автор Сообщение
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 11:59 
Не в сети

Зарегистрирован: 22 ноя 2016, 22:00
Сообщения: 90
Графы нас всех спасут ! :)
Посмотрел
https://habrahabr.ru/post/241941/
и не мог удержаться от повторного размещения ссылки:
http://is.ifmo.ru/books/_book.pdf
Там всё это прописано с разбором задач и с академическим подходом, те всё разложено по полочкам и с картинками.
Чтобы не путаться в построении сценариев рисуются графы. Есть даже программы преобразующие графы в код. Это описано там же, в конце книги.
По графам легко искать проблемы в логике. При этом копаться в коде не надо. Рисуем граф (на Visio или из другого варианта) и переводим в код сценария, вручную или программой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 13:11 
Не в сети
Аватара пользователя

Зарегистрирован: 05 фев 2008, 15:33
Сообщения: 2687
Откуда: St. Petersburg - Moscow
Skype: SkyStorm77
ФИО: Костюк Константин Вячеславович
Графы это просто способ визуализации, и это кому как нравится.
Можно графами а можно как тут уже писали таблицу состояний + таблицу переходов.

Но все в результате сводится к конечному автомату.

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

_________________
Никто кроме нас!!!
4Robots.ru - Все для роботов!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 13:30 
Не в сети

Зарегистрирован: 22 ноя 2016, 22:00
Сообщения: 90
Графы могут быть не только простой визуализацией, а и средством разработки в том числе и с автоматической генерацией кода, в этом то вся прелесть метода.
На компактной картинке с графами легче понять логику, чем листая страницы кода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 18:03 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Графы - штука удобная, с этим не поспоришь. Но мне кажется, что они дают не полную картину: только состояния и переходы между ними. А должны быть вроде еще и действия. Вот, как, например, приведенный мной выше простенькие вариант сценария описать с помощью графов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 18:15 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
выше - это где?

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 18:39 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Скучный про Ванессу. На самом деле, он тоже не дает полную картину, потому что не говорит, что произойдет, если роботу не удастся добраться до места (непреодолимое препятствие, перегрев мотора, отказ системы навигации и т.д.). При неуспешном выполнении функции GoMapPos сценарий просто прекращается, т.к. реакции на такие ситуации находятся на более низком уровне в функции движения.


Последний раз редактировалось Scorpio 30 ноя 2016, 20:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 19:52 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Ну тебя там напрягает бесконечный цикл ожидания - это же не проблема сценария, а архитектурная проблема. Если у тебя есть сигналы, то не обязательно ждать в цикле события.
А если нет - ну это просто одна из ветвей графа - проверка состояния кнопки. Она начинается и заканчивается на узле "idle"

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 20:17 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Допустим. Хотя уже по твоему ответу видно, что написать тебе проще, чем нарисовать. Значит не очень-то удобны эти графы. Но, все равно я не представляю, если я захочу заменить в сценарии фразу, произносимую роботом, с "Добро пожаловать" на "Привет Вася", в каком месте графа я должен это сделать? А ведь именно для этого нужны сценарии. Для оперативного вмешательства в логику поведения, даже если ты не помнишь, как там твоя программа устроена. Но, Бог с ней с Ванессой.
Я бы предложил желающим потренироваться на простом примере:
Допустим у нас задание сделать игрушку луноход (по аналогии со старым советским луноходом, который программировался кнопками), но с условием, что пользователь может загружать в него сценарии поведения, написанные на изобретенном нами языке сценариев (текстовом или графическом).
В распоряжении есть не хитрые действия: движение на заданное в см расстояние {Вперед(), Назад(),Влево(), Вправо()}, Останов и воспроизведение звукового сигнала из набора - {Звук()}.
Также имеются 3 события: кнопки ПУСК, СТОП и срабатывание датчика ПРЕПЯТСТВИЕ.

Вот пример событийного сценария на изобретенном только что языке:
Код:
СТОП->{Стоп()}
ПРЕПЯТСТВИЕ->{Стоп(),Звук("Ошибка"}
ПУСК->{Вперед(50),Вправо(30),Влево(80),Звук("ОК")}

В описании языка сказано, что событие, занимающее верхнюю строчку имеет приоритет над тем, которое под ним.

Вроде все предельно ясно и наглядно. Но, это очень простой сценарий даже для такого примитивного робота. Что если пользователь захочет, чтобы робот хотябы продолжил выполнять задание после того, как препятствие убрали с его пути? Уже получается нужны какие -то логические структуры. А, если опишем с помощью графов, то как? Только с примерами, а не с голыми ссылками на книги и статьи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 20:40 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Блин, ты же прописываешь не автомат, а сценарий. Вот попробуем взять пример из статьи хабровской.
Код:
struct transition FSM_table[3][3] = {
    [state_idle][signal_start] = {state_execute, fxn_execute},
    [state_idle][signal_stop]  = {state_idle, NULL},
    [state_idle][signal_block] = {state_idle, NULL},
    [state_execute][signal_start] = {state_execute, NULL},
    [state_execute][signal_stop]  = {state_idle, fxn_halt},
    [state_execute][signal_block] = {state_blocked, fxn_block},
    [state_blocked][signal_start] = {state_blocked, NULL},
    [state_blocked][signal_stop]  = {state_idle, fxn_halt},
    [state_blocked][signal_block] = {state_blocked, NULL},
};

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

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 21:00 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Думаешь, твой код покажется легко читаемым пользователю лунохода (не программисту со стажем) от 6-ти до 99 лет? Хрен кто купит такой луноход :) И сам ты его читать замучаешься через пару лет.
ПРЕПЯТСТВИЕ, допустим, генерирует событие при любом изменении состояния, т.е. 2 события ЕСТЬ ПРЕПЯТСТВИЕ, НЕТ ПРЕПЯТСТВИЯ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 21:09 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Не, ну в этом ты прав. Но сохранив логику и переделав представление можно все это решить. Просто какой-то вариант может разобрать компилятор, а для какого-то варианта надо будет парсер писать.
ПРЕПЯТСТВИЕ, допустим, генерирует событие при любом изменении состояния, т.е. 2 события ЕСТЬ ПРЕПЯТСТВИЕ, НЕТ ПРЕПЯТСТВИЯ.
Ну и проверяй в обработчике - есть ли препятствие, и если нет, возвращай в состояние "выполнение программы".
Ты же понимаешь, что в состоянии "выполнение" работает вложенный автомат?

Добавлено спустя 35 секунд:
Но это я все теоритизирую, конечно. Надо книжки читать и делать что-то.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 21:18 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Я хоть хреновый, но всеже программист-любитель. Я представляю, как это реализовать несколькими способами. Я просто хочу сподвигнуть вас, а главным образом, себя на формирование концепции стиля "правильного" написания сценария поведения робота, чтобы было самому потом понятно и не только мне. Идя от простых примеров к более сложным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 21:26 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
кстати, g-code - это тоже оно и есть

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 21:43 
Не в сети
Аватара пользователя

Зарегистрирован: 13 янв 2011, 15:25
Сообщения: 8033
Откуда: Санкт-Петербург
Вопрос смахивает на неразрешимую задачу. Мне непонятен пример с "Скучный про Ванессу". Все-таки это программа, а не сценарий. И с точки зрения VB6 - эта программа совершенна. Программисту поставить 5 и отпустить :)

Второй пример:

Scorpio писал(а):
Вот пример событийного сценария на изобретенном только что языке:

Scorpio писал(а):
Что если пользователь захочет, чтобы робот хотябы продолжил выполнять задание после того, как препятствие убрали с его пути?


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

А вообще, сложно вам программистам, кто учился по книгам. Загоняют вас в определенные рамки. :)

Добавлено спустя 1 минуту 22 секунды:
dccharacter писал(а):
кстати, g-code - это тоже оно и есть

По идее, весь вопрос и сводится к написанию такого языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно писать сценарии поведения робота?
СообщениеДобавлено: 30 ноя 2016, 22:13 
Не в сети
Аватара пользователя

Зарегистрирован: 30 сен 2008, 18:49
Сообщения: 2681
Откуда: Где-то в Латинской Америке
Dmitry__ писал(а):
Программисту поставить 5 и отпустить :)

Раньше ты помнится говорил, что надо плясать от события и никаких циклов ожидания.
Сценарий - это основной стержень программы, вокруг которого все и крутится. типа g-code, только более гибкий.
Совершенно не обязательно, чтобы он был отдельно от программы и не на языке программы. Дело не в грамматике, а мыслях и последовательности их изложения. Нарисуйте лучше граф про луноход, раз они такие удобные.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 316 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9, 10, 11 ... 22  След.

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


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

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


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

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