roboforum.ru

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

Как правильно писать сценарии поведения робота?

Re: Как правильно писать сценарии поведения робота?

Dmitry__ » 23 ноя 2016, 01:59

SkyStorm писал(а):за многократное нарушение 5.1.8.

Ух ты, нашел за что меня можно было всегда наказывать, вот это поворот :shock:
сленга и грамматических ошибок.


Scorpio писал(а): Любая программа - это бесконечный цикл.

Бесконечный цикл должен быть только в менеджере процессорных ресурсов, который или будет греть небо лишними тактами или думать о сохранении энергии батареи. Остальной код должен выполняться ровно столько, сколько надо для алгоритма и не такта больше (идеально + драйверописатели + асмщики). Например прерывания надо вылизывать до такта. Тогда можно gpeg декодировать на stm32 180 мгц. в реалтайме, и это совершенно невозможно на cpu овер 1000 мипс под какой-нибудь ос/фреймворком. Но это так, больше из моей практики: выжать из железяки все.

Кста, для компа, виндузятники так и сидят на мелкософте? Или есть продвижение в сторону, например Qt? Мне он очень понравился. Был удивлен, когда программа написанная для линуха собралась для виндов и работала шустро. С учетом того, что в виндах пришлось бы пользоваться directX и directInput-ом, которые мелкософт тоже убил...

Re: Как правильно писать сценарии поведения робота?

Scorpio » 23 ноя 2016, 02:02

В Visual Studio ключевое слово Visual :) В Qt такое есть?
А циклы циклам рознь. Можно приостанавливать свой процесс, вообще ни тратя никаких ресурсов.
Последний раз редактировалось Scorpio 23 ноя 2016, 02:14, всего редактировалось 1 раз.

Re: Как правильно писать сценарии поведения робота?

Dmitry__ » 23 ноя 2016, 02:16

Scorpio писал(а):В Qt такое есть?

Есть, но лично я начинаю уходить от этого. Qt позволяет нарисовать форму в графич. интерфейсе, дополнить проводочками для слотов и сигналов, а потом сгенерить код из формы, который можно поправить, а графич. часть можно потом полностью удалить. Это очень помогает для понимания перехода на чистый текстовый описатель форм, при этом не нужно быть профи в формописании. Я так понял как устроены мои старые программы на VisualBasic :)
Надо это для масштабируемых форм. Я не понимаю как в Visual делать такие вещи, и всегда бесили кривые невыровненные окошки в один пиксель. А в текстовом варианте - хрясь - хрясь, все размеры через константы, все ровно как в армии :)
Если я правильно понял вопрос про Visual...

Добавлено спустя 2 минуты 7 секунд:
Scorpio писал(а):А циклы циклам рознь. Можно приостанавливать свой процесс, вообще ни тратя никаких ресурсов.

Это да, но опять же - стиль. Ты можешь забыть обработать "вечное ожидание" с таким стилем. А в событийном стиле это по умолчанию решено.

Re: Как правильно писать сценарии поведения робота?

Scorpio » 23 ноя 2016, 02:16

VS просто генерирует описательный код. Но его всегда можно подправить.

Re: Как правильно писать сценарии поведения робота?

Dmitry__ » 23 ноя 2016, 02:25

Ну я и говорю, я только через Qt понял что в vb6 эти странные тексты - была форма, и ее можно менять чуть ли не из самой программы. Дошло поздно, но и vb6 умер. Помню каких родов мне стоило написать появляющийся spinBox по клику мышки в разных местах формы в vb6, и как потом с этого удивлялись другие программисты. Спрашивали: "Ты где купил/достал этот активикс" :) Но там пока обойдешь все формы и не дай бог там есть фреймы - умрешь высчитывать координаты. Но это все - дела давно минувших дней.
Лублу кьют :)

Re: Как правильно писать сценарии поведения робота?

Scorpio » 23 ноя 2016, 03:01

vb6 не умер, а остался жить в стареньких ноутах на XP, которые порой управляют такими же старыми роботами :)
Я его уже разлюбил слегка в пользу c#. На си-подобных как-то ловчее получается.
Почитал про Qt. Действительно концепция сигнал/слот весьма интересна в плане управления роботами. Позволяет уйти от сильносвязанной архитектуры в асинхронных процессах. Похожая концепция, как я понял, применяется в ROS.

Re: Как правильно писать сценарии поведения робота?

Виктор Казаринов » 23 ноя 2016, 10:20

Автоматов в роботе может быть много разных и полезных. Даже в Ардуино писать в автоматном стиле очень комфортно. Я недавно и на Verilog писал аппаратный конечный автомат для FPGA совершенно в той же манере. Работает все прекрасно. Меня, кстати, учили проектированию этих автоматов в институте и я сдавал по ним курсовые.
Не отвергая конечные автоматы которые просто необходимо делать там, где они наиболее подходят, скажу, что имеется более продвинутая парадигма программирования - деревья принятия решений. На ее основе долгое время строились и строятся те компьютерные игры, где требуются зачатки ИИ. Действующие в игре автоматические персонажи можно считать обычными реальными роботами, только действующими в виртуальной среде, в симуляторе.
Деревья решений тоже очень полезная парадигма, которой я часто пользуюсь и которую нужно изучить и взять на вооружение всем, кто хотел бы заниматься созданием автономных роботов.
Однако и эта парадигма имеет ряд изъянов. Об этом можно почитать хотя бы тут: https://www.progamer.ru/dev/utility-ai.htm
Имеется интересная книга: http://www.aiportal.ru/files/books/ai-in-computer-games-by-champandard.zip Пароль на архив: http://www.aiportal.ru
Советую хотя бы взглянуть на ее оглавление.

Кроме конечных автоматов и деревьев решений существует еще одна парадигма программирования, основы которой задал один из отцов ИИ Марвин Минский в своей книге "Фреймы для представления знаний". На эту книгу я также рекомендую взглянуть хоть одним глазком.
Для имплементации фреймого подхода имеется интересное программное средство - язык CLIPS.
CLIPS можно использовать с его собственной оболочкой в OsX и Windows, а также встроить во многие другие языки а также в микроконтроллеры, т.к. он написан на ANSI C.
Для этого языка в нашей стране вышло несколько книг, одна из которых содержит более 1000 страниц. Этот язык и в настоящее время поддерживается и развивается авторами - сотрудниками NASA. Я даже реализовал его в браузере Chrome в виде нативного клиента(NaCl). В реальных роботах я его начал использовать в 2010 г. Если кому интересно, могу поделиться различной информацией.
Естественно, фреймовый подход к созданию сценариев тоже имеет определенные ограничения, но для множества случаев он может оказаться вполне достаточным.
На CLIPS можно писать сценарии в стиле языка STRIPS ( http://ai-center.botik.ru/planning/index.php?ptl=materials/03languages.htm ), о котором, кажется, я упоминал в теме РОЖДЕНИЕ РОБОТА на данном форуме.

Re: Как правильно писать сценарии поведения робота?

linvinus » 23 ноя 2016, 12:14

Виктор меня опередил , в общем вот ещё одна ссылка про деревья http://www.pirobot.org/blog/0030/
Почитал про Qt. Действительно концепция сигнал/слот весьма интересна в плане управления роботами. Позволяет уйти от сильносвязанной архитектуры в асинхронных процессах. Похожая концепция, как я понял, применяется в ROS.

и не только, мне очень нравится подход учебного робота thymio , у него своя среда разработки https://www.thymio.org/en:asebausermanual
программы полностью событийные

Re: Как правильно писать сценарии поведения робота?

Dmitry__ » 23 ноя 2016, 13:54

Во всех этих C# и других обертках есть одно но - привязка к определенным ос и программам. Лично мне было бы жалко тратить время на написание сложных алгоритмов, которые нельзя будет перенести на свое железо. Интерес к таким фреймворкам - нулевой. Должен быть голый си...
И тут опять реклама кьюта :)
В нем все эти слоты/сигналы во время компиляции переводятся в чистый c++ и потом собираются стандартными make и.т.д.
Но повторюсь, важнее не Qt, а отсутствие привязки кода к определенным платформам. Я вообще не понимаю, как у людей что-то поднимается на написание программ под мелкософт.net
Интеллект написанной программы должен запуститься на утюге...

Re: Как правильно писать сценарии поведения робота?

linvinus » 23 ноя 2016, 18:20

странно такое слышать, и при этом советовать artcam

нормально всё у .net-чиков https://ru.wikipedia.org/wiki/Microsoft ... per_Studio
народ в бою использует forum102/topic13837-15.html#p300818

Re: Как правильно писать сценарии поведения робота?

smur » 23 ноя 2016, 18:57

Спасибо Виктору за книжку "Искусственный интеллект в компьютерных играх. Алекс Дж. Шампандар.djvu"
Пароль на архив: www.aiportal.ru
Нашел ссылку на практическую реализацию автоматного программирования при создании игры со сложным поведением объектов:
https://tproger.ru/translations/finite- ... mentation/

Да, хотел сказать Scorpio, что он мой кумир :) Мало попадается реально работающих проектов такого прекрасного уровня.
Как Вы думаете, Vanessa ещё по ссылке реально прикупить?
Vanessa Guile 3D Studio
http://www.guile3d.com.br/vanessa_page.asp
Тк ссылка на головной сайт идёт на другую компанию я не уверен, что оплатив 13 долларов я получу ссылку на скачивание.
Бесплатные синтезаторы работают плохо, разобрать слова трудно.
А тут ещё и аватар такой симпатичный :)

Re: Как правильно писать сценарии поведения робота?

Dmitry__ » 23 ноя 2016, 19:14

linvinus писал(а):нормально всё у .net-чиков
народ в бою использует

Там:
На ARM вообще (и который у Odroid в частности), кривовато реализована поддержка Mono.
Так что я остыл по отношению к Odroid, хотя плата хороша.

Дальше не читал...

linvinus писал(а):странно такое слышать, и при этом советовать artcam

А ты изучи хоть один cad/cam, а потом я посмотрю как ты с него будешь слезать. :wink:
Это моя боль - изученный софт из вендов. До сих пор не вижу альтернативы pcad-у

Re: Как правильно писать сценарии поведения робота?

ilalexey » 23 ноя 2016, 20:35

Dmitry__ писал(а):не вижу альтернативы pcad-у

фу отстой :)
Ёгле+Протеус наше фсё!

Re: Как правильно писать сценарии поведения робота?

Scorpio » 23 ноя 2016, 22:52

Во, сколько интересного чтива тут наприсылали, пока меня не было. Будет, чем заняться в выходные.
smur, спасибо за "кумира" - не ожидал. Аватара Ванессы могу выложить для скачивания всем желающим. Не забывайте, что она под MSAgent - технологию умершую вместе с XP. Синтезатор речи - это старая версия акапеловской Алёны под SAPI4. Т.е. к аватару он никакого отношения не имеет. Пробовал ставить крякнутые "алены" под Win8. Из своей софтины не работае ни фига.

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

Re: Как правильно писать сценарии поведения робота?

Eruman » 24 ноя 2016, 11:05

К сведению: есть неплохой синтезатор голоса RHVoice, с открытым исходным кодом, доступный в версиях для операционных систем Windows и Linux. https://github.com/olga-yakovleva/rhvoice


cron
Rambler\'s Top100 Mail.ru counter