Самодельный робот |
Статьи о роботахАлгоритм поиска пути для роботов Выбор и описание алгоритма поиска пути, подходящего для использования при ориентировании мобильных роботов по заранее заданной карте местности Автор: Андрей Маркеев Язык для описания роботов RoboML Стандартизация представления данных является важным моментом любой области знаний. RoboML - язык, который решает эту задачу в области робототехники. Автор: Андрей Маркеев XML-спецификация языка описания роботов, снабженная подробными русскими комментариями. Детальное ее описание - в следующей статье о RoboML. Автор: Андрей Маркеев Рассматривается использование робота, сделанного на основе персонального компьютера, в охранных системах. Автор: Андрей Маркеев Робот и искусственный интеллект Подход к использованию технологий искусственного интеллекта в системе управления роботов. Автор: Андрей Маркеев Общая идея. Краткое описание текущего положения дел в области робототехники, предпосылок для создания описываемого робота, потенциальных возможностей применения и т.д. Автор: Андрей Маркеев |
|
|||||||||||||||||||||||||
вернуться к списку статейРобот и искусственный интеллектАвтор: Маркеев Андрей При участии: Логинов Ярослав Перепечатка материалов статьи ВступлениеПрежде всего, выясним нашу основную цель. Ограничимся краткой записью: Создать робота, обладающего сложным поведением. В этой статье я постараюсь описать, как это можно сделать. Как известно, любой робот состоит из двух частей:
Автор статьи является профессиональным программистом, занимающимся программированием уже более 12 лет. Поэтому подход автора к вопросу создания робота в основном заключается в детальной проработке именно второго пункта. Нестандартно? Однако, если задуматься, в этом подходе есть своя доля истины. Современные технологии программирования ушли далеко вперед и на сотни тысяч корпусов обогнали ассемблеры микропроцессоров, которые до сих пор использует большая часть роботостроителей любительского и полупрофессионального фронта для программирования поведенческих функций своих творений. Налицо плачевный результат: большинство таких проектов добираются до объезда препятствий (который можно, кстати сказать, реализовать простой механикой!), и этим ограничиваются. А ведь объезд препятствий - это каменный век! Дорогой читатель безусловно возмутится: "Как же создать что-то большее в домашних условиях? Нужны промышленные компьютеры, сложные логические цепи, нестандартные периферийные интерфейсы." Не совсем так: вполне можно использовать и обычный старенький персональный компьютер, а лучше - ноутбук. Для начала хватит, а если все пойдет хорошо - можно будет и на промышленные компьютеры пересесть. Использование ПК вместо "мозгов" роботаИтак, что нам дает использование персоналки вместо мозгов будущего робота? Главный вопрос начинающих - как управлять внешними устройствами? Ответ прост: через порты компьютера COM (RS232) и LPT. Это решение дает возможность реализовать как управление двигателями, так и обратную связь. Из недостатков использования компьютера отмечу несколько, наверное, весьма существенных для любителей:
Хотя, в данном случае, на взгляд автора, преимущества перевешивают:
Использование компьютера дает нам шанс сделать что-то по-настоящему стоящее. Есть некоторые сложности с реализацией механики робота - но они решаемы. Все материалы Вы можете найти, например, на сайте автора - robot.paccbet.ru. В этой же статье давайте сконцентрируемся на программировании поведения. Программирование поведенияДавайте рассмотрим, как можно программно задать поведение робота. Если опустить реализацию всевозможных драйверов устройств, необходима некая, пока абстрактная, система управления, которая бы взависимости от состояния окружающей среды принимала бы какие-либо решения о дальнейших действиях. Простейший вариант такой системы управления - конечный автомат (это некоторая математическая модель, отражающая правила изменения состояния абстрактного объекта, в зависимости от внешних факторов, и текущего состояния)
Конечный автомат позволяет реализовать любые "предустановленные" модели поведения, так сказать врожденные линии поведения объекта (в нашем случае - робота).
Более сложный вариант реализации поведенческой функции робота - использование решений из области искусственного интеллекта (ИИ). Прежде всего, здесь стоит выделить нейронные сети. Нейронная сеть - это программная модель взаимодействия нейронов головного мозга человека. Основные задачи, которые решаются с помощью нейронных сетей - распознавание (образов, текстов и т.п.). Важнейшая особенность нейронных сетей - наличие памяти, и способности к обучению. В настоящее время в сети Интернет можно найти множество уже готовых решений, реализующих механизм нейронных сетей. Поэтому сейчас мы сконцентрируемся не на их программировании, а, прежде всего, на их настройке. Обычно для обучения нейронных сетей используют некоторую базу правильных ответов. Это естественно, ведь если наш робот чему-то научился, то ему необходимо знать, правильно ли он этому научился. Как пример, робот вполне может научиться объезжать препятствия - разворотом на 180 градусов! Что, конечно же, является неверным решением. Таким образом, необходимо выяснить основные причины, побуждающие робота к действиям. Что для него - правильно, а что - является ошибкой? Что для него - хорошо, а что - плохо? В этих вопросах на помощь нам придут состояния, которые может принимать робот. Эти состояния жестко заданы механизмом конечных автоматов, рассмотренным выше, и поэтому также жестко можно задать некоторые атрибуты указанным состояниям. В том числе, степень их желанности для нашего механического друга. Для того, чтобы определить, в каких состояниях может находиться робот, давайте рассмотрим причину перехода в различные состояния - возникновение в системе событий. События отражают две вещи:
Список внутренних событий и оценка их :
Список внешних событий намного интереснее. Но и выделить его сложнее. Для начала, рассмотрим, какие объекты внешнего мира могут взаимодействовать с нашим роботом:
С наладчиками все ясно: они подключаются к роботу через wifi, bluetooth или другими методами - и осуществляют настройку, обновление программы и др. Список состояний робота для этих ситуаций небольшой: подключение наладчика, авторизация наладчика в системе, ожидание завершения наладки. Все эти состояния должны иметь положительную оценку, чтобы робот не разрывал соединений и не убегал куда-то по своим делам, когда его хотят запрограммировать. Автор рекомендует также совсем не включать действия наладчиков в работу самообучающихся цепей робота, поскольку наладка - это процесс низкого уровня, имеющий мало общего с собственно поведением робота. Более интересна ситуация с обывателями, т.е. людьми, физически взаимодействующими с роботом. Такие люди могут:
Этот список может быть дополнен, однако здесь видно, что люди-обыватели могут выступать в качестве других перечисленных объектов окружающей среды, поэтому основные состояния робота при взаимодействии со всеми этими объектами будут повторяться. Пожалуй, можно попробовать составить список состояний, обусловленных взаимодействием с внешней средой:
Что нам дает это распределение весов? Оно дает нам главное - список интересов робота, и список того, чего он будет опасаться. Если робот видит, что одни и те же его действия (или даже сложные последовательности действий) приводят всегда к одинаковым результатам (переводят в одни и те же состояния), он будет стремиться либо избегать выполнения подобных действий - если вес состояния отрицательный, либо наоборот, повторять их, если вес положителен. Причем обучение будет происходить автоматически, согласно принципам работы нейронных сетей. Кстати, для того, чтобы робот не зацикливался на чем-то одном, необходимо также ввести состояние "Смена рода деятельности" с приоритетом прекрасно, причем в это состояние робот должен переходить по истечение какого-то времени, если все это время он пребывал в одном или нескольких(небольшом количестве) состояниях. ЗаключениеРеализация представленного выше подхода к управлению роботами поможет создать робота с действительно сложным поведением, и даже с функциями самообучения. Проект программы, реализующей функции сложного поведения - это отдельное исследование, к сожалению, не умещающееся в рамки данной статьи. Поэтому автор может только пожелать уважаемым читателям не размениваться по мелочам, а сразу приступать к созданию таких роботов, которые действительно будут умными. Удачи! |
||||||||||||||||||||||||||
|