roboforum.ru

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

Что почитать по архитектуре роботов?

Что почитать по архитектуре роботов?

catBasilio » 16 ноя 2012, 11:37

Есть задача сделать робота который по заданному алгоритму ездит.
По железу - все понятно. По софту - отдельные подзадачи - понятны. А как вместе все собрать непонятно
если на человеческом языке алгоритм описать то он будет выглядеть так:
1. находим дверь справа впереди
2. заезжаем в нее
3. находим дверь слева впереди
4. заезжаем в нее.
5. находим объект.
6. подъезжаем к нему.

Собственно определить дверь и объект - не проблема
получть информацию от камеры и обработать ее - не проблема
заставить двигаться робот в разных направлениях - тоже не проблема

но вот как все вместе собрать - хз.
По логике тут конечных автомат использовать надо. Но непонятно как переходы между состояниями обрабатывать. Что делать если при какой-то проверке мы поняли что не в правильном состоянии находимся? делать связи все состояния со всеми?

Хотелось бы почитать полезные книжки по управлению роботами и исходники готовых проектов (желательно на matlab) поизучать.
Пока нашел
http://books.google.com.au/books?id=hdkytqtBcyQC&printsec=frontcover&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false
и
http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470630213.html
но там тоже рассматриваются все аспекты по отдельности. А как все это вместе собрать - непонятно.
Вообщем киньте в меня ссылками! :)

Re: Что почитать по архитектуре роботов?

cjA » 25 дек 2012, 13:46

ну не так
дверь.найти
дверь.найдена (справа=1, впереди=1)
граница.пересечь (дверь, справа, впереди)

Вроде сейчас, Си никуда не ушел выглядеть должно вот так.
catBasilio, Вы совсем полную ерунду написали, а не человеческом языке алгоритмов. Может человеческим, но не моймет его компилятор.

Re: Что почитать по архитектуре роботов?

yozik0ff » 26 дек 2012, 13:59

Ну что могу сказать, добро пожаловать в мир объектно-ориентированного программирования!
Читаем банду четырех, точнее паттерн "стратегия".

Re: Что почитать по архитектуре роботов?

slovak » 12 апр 2013, 16:19



Очень хорошая книга. Сам её курил.

Примеры кода на Матлаб и другие материалы могу предоставить.
Только недавно проходил онлайн курс на курсере.

slovak194@gmail.com

Re: Что почитать по архитектуре роботов?

daner » 26 окт 2013, 18:22

1. можно и автомат применять.
В нем главное как можно полнее описать ВСЕ возможные состояние системы. в этом и сложность и минус FSM. Тут правдо надо отметить, что состояния можно и нужно обобщать друг с другом везде где это возможно. Но если они все описанны, то вы в принципе не можете попасть в не состояния. При попадании в определенное состояние, включается определенный алгоритм, кторый управляет роботом в этом состоянии, пока состояние не поменяется.
Переходы, тоже в общем не сложно. На них должно висеть все, что отличает одно состояние от другого.

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

3. можно использовать деревья решений.
ну тут все просто (это наиболее старая технологуя). строится логическое дерево (но это чисто для оптимизации), где терминальные узлы, это действия. вообще, если упростить, то это обычный список правил типа
IF CONDITION[1] THEN ACTION[1]
IF CONDITION[2] THEN ACTION[2]
....
IF CONDITION[N] THEN ACTION[N]
этот список проверяется при каждом цикле принятия решения.

4. можно использовать деревья поведений
Очень похоже на FSM, т.е. так же есть состояния в которых срабатывает какой-то алгоритм занимающийся обработкой этого состояния. Только состояние -- это не состояние самой системы, а поведенческие состояния робота, т.е. какое-то поведение.
И переходы между поведениями происходят не когда меняется состояние системы, а когда поведение "решает" прекратить свое выполнение и возвращает причины этого решения (в простейшем случае это ОК/Ошибка). На основе причины прекращения выбирается следующее поведение.
Методы отбора строго регламентированны. Существует sequencer, selector, parallel. Первый аналог for i in count(behs); do if behs[i].run() == FAIL; then break; done. Второй, аналог for i in count(behs); do if behs[i].run() == OK; then break; done.
Третий просто запускает все поведения параллельно, пока одно из них не остановится. Есть еще декораторы, т.е. правила модифизирующие одно поведение (т.е. одну ветку). Например меняющие результат поведения (типа НЕ), или организующие циклы (типа ПОКА). Все это организуется иерархически. Если добавить возможность возвращать не только результат остановки, но и динамически созданный план, можно реализовать полноценную архитектуру 3-Т (т.е. три уровня : планировщик, дривера и между ними sequencer который ими управляет). Еще можно сказать про эту архитектуру, что на отлично подходит по иерархические планировщики, так как реализует идею иерархической логики.
На мой взгляд это наиболее удобный инструмент для реализации алгоритмов чуть более сложных чем вы описали. Хотя... короче, я бы посоветовал вам либо его, лиго HFSM.


Rambler\'s Top100 Mail.ru counter