Технический форум по робототехнике.
galex1981 » 16 ноя 2009, 11:15
А каким образом ты хочешь сделать усоподобные сенсоры, определяющие помеху на расстоянии? (емкостные датчики?)
Виктор Казаринов » 16 ноя 2009, 11:19
Проволочки какие-нибудь а там, откуда "ус" растет - датчики - магнитные или оптические - парочку поставить по 2 осям. Можно таких усиков но покороче по роботу разместить несколько. Так шерсть у животных работает. Можно короткие не из проволоки а из толстой лески сделать.
galex1981 » 16 ноя 2009, 11:24
Очень нравится задумка, но пока не могу представить реализацию. Может сделать отдельную тему по этому вопросу?
Виктор Казаринов » 21 ноя 2009, 18:57
Буду двигаться в реализации разумного поведения на экспериментальной платформе Robosonic EX, которую я пока не до конца собрал.
Картинки и выдержки из книги Рассел, Норвиг. Искусственный интеллект.Современный подход.
Нужно выбирать первоначальный вид агента.
Агент на рис 2.3. меня не интересует, т.к. его поведение очень примитивно. Все знания заранее помещаются в агента в виде правил "Условие-действие". Всегда на одни и те же сигналы внешнего мира он будет реагировать одинаково. Основным условием его адекватной работоспособности является полностью наблюдаемый мир. При внесении малейшей ненаблюдаемости может привести к нарушениям его работоспособности.
Агент на рис 2.4. должен поддерживать свое внутреннее состояние, которое зависит от истории актов восприятия и поэтому отражает по крайней мере некоторые из ненаблюдаемых свойств текущего состояния мира. Знания от том, "как работает мир" называются моделью мира. В таком агенте текущее восприятие комбинируется с прежним внутренним состоянием для выработки обновленного описания текущего состояния.
Знаний о текущем состоянии среды не всегда достаточно для принятия решения о том, что делать. Агенту требуется не только описание текущего состояния, ни и информация о цели, которая описывает желаемые ситуации. Агент на рис 2.5. может комбинировать эту информацию с информацией о результатах возможных действий для выбора действий, позволяющих достичь этой цели. В таком агенте принятие решений имеет фундаментальные отличия от правил условие-действие, т.к. ему приходится размышлять о будущем, отвечая на 2 вопроса:
1. Что произойдет если я сделаю то-то и то-то?
2. Позволит ли это мне достичь удовлетворения?
Агент на рис 2.6. В большинстве вариантов среды для выработки высококачественного поведения одного лишь учета целей недостаточно. Цели позволяют провети лишь жесткое бинарное различие мкжду состояниями "удовлетворенности" и "неудовлетворенности", тогда как более общие показатели производительности должны обеспечивать сравнение различных состояний мира в точном соответствии с тем, насколько удовлетворенным станет агент, если их удастся достичь. Функция полезности отображает состояние (или последовательность состояний) на вещественное число, которое обозначает соответствующую степень удовлетворенности агента.
Функция полезности позволяет принимать рациональные решения, когда этого не позволяют сделать цели в след. случаях:
1. Если имеются конфликтующие цели, такие, что могут быть достигнуты только некоторые из них, то ф-ция полезности позволяет найти приемлемый компромисс.
2. Если имеется несколько целей, к кот. может стремиться агент, но ни одна из них не может быть достигнута со всей определенностью, то ф-ция полезности предоставляет удобный способ взвешенной оценки вероятности успеха с учетом важности целей.
Агент на рис 2.7. может подразделяться на 4 компонента:
1. Обучающий компонент, кот. отвечает за внесение усовершенствований.
2. Производительный компонент, кот. обеспечивает выбор внешних действий. Это вышерассмотренные агенты.
3. Критик. Он оценивает то, как дейтвует агент, и определяет, каким образом д.б. модифицирован производительный компонент для того, чтобы он успешнее действовал в будущем.
4. Генератор проблем. Его задача состоит в том, чтобы предлагать действия, кот. должны привести к получению нового информативного опыта.
- Вложения
-
![1.png (84.46 КиБ) Просмотров: 4757 1.png](./download/file.php?id=12546&t=1&style=9&sid=059e9e375546ab21c0bd54700b97502a)
-
![2.png (92.38 КиБ) Просмотров: 4770 2.png](./download/file.php?id=12545&t=1&style=9&sid=059e9e375546ab21c0bd54700b97502a)
-
![3.png (101.56 КиБ) Просмотров: 4774 3.png](./download/file.php?id=12543&t=1&style=9&sid=059e9e375546ab21c0bd54700b97502a)
-
![4.png (117.32 КиБ) Просмотров: 4770 4.png](./download/file.php?id=12542&t=1&style=9&sid=059e9e375546ab21c0bd54700b97502a)
-
![5.png (101.81 КиБ) Просмотров: 4782 5.png](./download/file.php?id=12541&t=1&style=9&sid=059e9e375546ab21c0bd54700b97502a)
Последний раз редактировалось
Виктор Казаринов 21 ноя 2009, 19:38, всего редактировалось 2 раз(а).
frig » 21 ноя 2009, 19:35
схемки замечательные, но вопросов по их реализации, мне кажется довольно много.
для простоты, думаю, можно рассматривать достаточно простую, с одной стороны, задачу, но которая позволит реально работу разобрать. предлагаю рассматривать лайнтрейсер. простейший набор из 5-ти, например, датчиков линии и 2 мотора.
имхо лайнтрейсер достаточно интересная платформа, так как на ней можно получить реальный эффект от работы "умного" алгоритма.
с первой схемкой вроде как все понятно - жесткая связь между состоянием датчиков и моторами. меняется состояние датчиков - меняем пропорции работы моторов.
во втором варианте, как я понимаю, робот должен предполагать как изменится состояние датчиков линии при изменении отношения моторов. так?
Виктор Казаринов » 21 ноя 2009, 22:08
frig писал(а):предлагаю рассматривать лайнтрейсер. простейший набор из 5-ти, например, датчиков линии и 2 мотора.
имхо лайнтрейсер достаточно интересная платформа, так как на ней можно получить реальный эффект от работы "умного" алгоритма.
Т.к. я лайнтрейсерами не занимался, то могу судить об этом лишь по ютубу. Если вас не затруднит, хотелось бы получить от вас информацию об этом виде соревнований. О целях, трудностях, ньюансах действий роботов при этом. Нужно понять этот мир, чтобы попробовать создать "умного" лайнтрейсерного робота. А м.б. в лайнтрейсинге достаточно САУ (рефлекторного поведения - рис 2.3.)?
frig писал(а):во втором варианте, как я понимаю, робот должен предполагать как изменится состояние датчиков линии при изменении отношения моторов. так?
Да, на основании предыдущего опыта, полученного им при обучении либо заложенного в него при создании.
Vovan » 21 ноя 2009, 22:23
2 Виктор Казаринов: очень интересно наблюдать Вашу разработку и, хоть порой, возмущаешься или восхищаешься отдельным мыслям, невольно вспоминается замечательный рассказ Днепрова "Суэма".
ЗЫ: это не тролинг и не офф - это ассоциации, кроме того, в этом рассказе, поверьте, нет ничего обидного... ![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
contr » 21 ноя 2009, 22:26
Боты работают по схеме 2-3, даже если трейсер анализирует предстоящее изменение траектории. 2-4 это уже машинка умеющая играть в шахматы. Для релиза такого поведения нет нужды в платформе, что собственно и предлагалось ранее.
Виктор Казаринов » 21 ноя 2009, 23:17
Vovan писал(а):2 Виктор Казаринов: очень интересно наблюдать Вашу разработку и, хоть порой, возмущаешься или восхищаешься отдельным мыслям, невольно вспоминается замечательный рассказ Днепрова "Суэма".
Спасибо за внимание к моим скромным усилиям. Рассказ этот я прочитал с большим интересом. Написан давно, а проблемы все те же.
Виктор Казаринов » 22 ноя 2009, 10:55
С точки зрения реального поведения робота в мире обычно пользуются трехзвенной архитектурой:
1. Реактивный уровень, обеспечивает низкоуровневое управление роботом. Отличительная черта - жесткий цикл "восприятие-действие". Время принятия решения на этом уровне порядка нескольких миллисекунд.
2. Исполнительный уровень служит в качестве посредника между реактивным и алгоритмическим уровнями. Он принимает директивы от алгоритмического уровня и упорядочивает их для передачи на реактивный уровень. Время принятия решения на исполнительном уровне порядка одной секунды. Исполнительный уровень отвечает также за интеграцию сенсорной информации в виде представления внутреннего состояния.
3. На алгоритмическом уровне вырабатываются глобальные решения сложных задач с использованием методов планироавния. Из-за вычислит. сложности время принятия решений на этом уровне составляет несколько минут. На алгоритмическом уровне используются модели.
Кроме этих уровней могут существовать и др., например, уровень пользовательского интерфейса или уровень координации робота с действиями других роботов.
Получается, что робот-агент может включать в себя одновременно все разновидности агентов, показанных на рисунках 2.3 -2.7. Каждый такой внутренний агент робота обычно называется поведением. Правильно выстроив иерархию поведений, можно создать сложного и интересного робота.
Приведу простой пример. Если ударить молоточком под коленную чашечку человеку, нога дернется. Это-поведение рис 2.3. Можно одновременно ударить под обе коленные чашечки - увидим параллельное действие двух поведений низшего уровня. Но мы можем (не все конечно из нас) усилием воли частично или полностью подавить этот рефлекс на одной или обеих ногах. Это - управление поведением более высокого уровня поведениями более низких уровней.
Еще пример. Водитель ведет автомобиль по дороге. Резкий звук справа приводит к непроизвольной реакции, например, повороту руля влево (реактивный уровень). Реакция водителя на загоревшийся красный сигнал светофора приводит к подсознательному плавному нажатию на педаль тормоза. Это совместное действие исполнительного и реактивного уровней. Если водитель собирается пересечь город и добраться до дома своего знакомого, то он в уме строит план действий и в зависимости от дорожной ситуации движется по улицам города. Это - действие алгоритмического уровня, выливающееся в последовательно-параллельные действия исполнительного и реактивного уровней.
Виктор Казаринов » 22 ноя 2009, 19:38
Чтобы не засорять моими наивными мыслями чужие ветки форума, поразмышляю здесь на предмет противостояния МК и PC в применении на мобильном роботе. Это имеет прямое отношение к выбору реализации агентов на целевой платформе.
То, что сейчас я буду отлаживать на PC, не значит, что я считаю эту платформу идеальной. Для первоначальных разработок - да, она наиболее гибкая. Но когда встанет вопрос в мелкосерийной реализации, если до такого дело дойдет, то, скорее всего, узкоспециализированное устройство будет лучшим решением. Поэтому я и лелею еще надежду на разработку модулей RoboBrain.
Робот - это система реального времени.
На роботе много процессов должно протекать параллельно.
Робот имеет специфический набор периферии.
PC не отвечает в полной мере вышеуказанным и др. условиям.
8 разрядные МК предназначены для работы с периферией в системах реального времени. Однако их 8-разрядность не позволяет производить сложные расчеты и адресовать значительные объемы памяти.
Считаю, что истина где-то между этими крайностями. Хотел бы получше приглядеться к контроллерам на базе ARM. Их выпускают несколько фирм - Филипс, Атмел и др. Но что-то на форуме о таких контроллерах мало информации. М.б. их соотношение цена/производительность окажутся оптимальными? Или присмотреться к AVR32?
Последний раз редактировалось
Виктор Казаринов 22 ноя 2009, 20:47, всего редактировалось 1 раз.
frig » 22 ноя 2009, 20:46
Т.к. я лайнтрейсерами не занимался, то могу судить об этом лишь по ютубу. Если вас не затруднит, хотелось бы получить от вас информацию об этом виде соревнований. О целях, трудностях, ньюансах действий роботов при этом.
а все просто. есть трасса, форма которой роботу не известна. трасса представляет из себя линию шириной 2 сантиметра, черного цвета начерченную на белом листе. задача пройти трассу как можно быстрее.
обычно на роботах ставится линейка датчиков впереди и иногда еще сзади ставят датчики.
проблемы с которыми приходится сталкиваться:
- если скорость слишком велика, то робот не успевает среагировать или его заносит и он вылетает с трассы. на трассу надо вернуться.
- сложности на трассе в усложненных вариантах - разрывы трассы, эстакады, "кирпич" который надо объезжать
вещи, которые хорошо бы реализовать, что позволит получить преимущество.
- прохождение поворотов как автогонщики, не просто по радиусу
- верный выбор скорости и корректировка скорости в процессе, определение сноса.
- быстрый поиск линии после потери
- запоминание трассы и ускорение на втором круге.
ну и собственно удержание линии "в прицеле". описанный выше "умный" подход должен позволить как минимум сократить до минимума время поиска линии. ПИД алгоритм имеет в этом отношении недостатки, так как возвращает на линию не наиболее быстрым способом с точки зрения прохождения трассы, а наиболее быстрым с точки зрения помещения линии линии в середине датчика. что в предельном случае представляет собой движение под прямым углом к линии а потом поворот. а двигаться надо по гипотенузе.
в общем вопросы интересуют КАК можно накапливать опыт, строить модель и так далее в таком простом мире как лайнтрейсер.
Michael_K » 22 ноя 2009, 21:47
М.б. их соотношение цена/производительность окажутся оптимальными? Или присмотреться к AVR32?
С моей личной колокольни:
AVR32 - не рекомендую - имхо неоправданные навороты.
Наиболее удобными из армов считаю LPC
Последний раз редактировалось
Michael_K 22 ноя 2009, 21:57, всего редактировалось 1 раз.
Angel71 » 22 ноя 2009, 21:49
Виктор, вы как-то pc и мк непонятно сравниваете, как буд-то это 2 абсолютно разных объекта, как яблоко и подводная лодка. +систему реального времени и парралельные вычисления можно реализовать на большинстве "вычислялок". в общем тежи ...
![Embarassed :oops:](http://roboforum.ru/images/smilies/blush.gif)
камни
а по поводу арм vs авр32. арм намного привлекательней выглядит по многим причинам. основное это:
- громаднейший выбор чипов, с различным типом корпусов, перефирии, сопроцессоров, частотами,... от многих фирм
- доступные для армов операционные системы
- количество свободного по, примеров, документации,...
и куча всего по мелочам, например стоимость программатора
Michael_K » 22 ноя 2009, 22:01
pc и мк непонятно сравниваете
PC и МК - это действительно разные объекты - как штаны и бегемот.
Одно - это железный ящик с клавиатурой, монитором и блоком питания.
А другое - микросхемка.
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)