|
||||
|
Глава 8 Поведенчески ориентированные схемы роботов, нейронные сети, организация нервной системы и предикативная архитектура В этой главе обсуждается класс роботов, не имеющих ЦПУ в основе схемы управления. Подобные роботы функционируют на принципах стимул-реакция, характерных для нейронных сетей. Стимульно-реактивные механизмы, используемые в роботах, носят ряд названий, таких как нейронные сети, поведенчески ориентированные схемы, схемы нервной организации и системы предикативной архитектуры. Пионером данных работ является Вильям Грей Вальтер, создавший поведенчески ориентированные системы в конце 40-х годов. Независимо от работ Вальтера схемы реагирования роботов, построенные на принципах нейронных сетей, были научно разработаны и усовершенствованы Валентино Брайтенбергом в 80-х годах, что нашло отражение в его книге: Передвижные устройства: опыты синтетической психологии. Вдохновленный работами Вальтера профессор Массачусетского технологического института Родни Брукс разработал свою версию реагирования на стимулы, названную им «предикативной архитектурой». В свою очередь Марк Тилден, воодушевленный работой, проделанной Родни Бруксом, создал систему BEAM роботов, использующих «нервные сети». Тема поведенчески ориентированных роботов является очень актуальной в настоящее время и, безусловно, окажется еще более важной в будущем. В системах подобной архитектуры механизмы типа «стимул-реакция» могут надстраиваться один над другим. Устройство с иерархически многослойным построением механизмов стимул-реакция может демонстрировать поразительно «разумное» поведение, как робот-охотник за «светом», описанный ниже. До определенного времени для описания механизма «стимул-реакция» я буду использовать термин «поведенчески ориентированный». Поведенчески ориентированный подход явялется одним из двух основных подходов к снабжению роботов «интеллектом», как это было описано в гл. 6. Один из них называется интеллект «сверху вниз», а второй – интеллект «снизу вверх». Для внесения «интеллекта» в устройство управления функциями передвижного робота (используя термин «функция» я ограничиваю для простоты возможную область обсуждения функциями движения и обследования окружающего пространства, но это является, несомненно, действительным ограничением для использования иных подходов) необходимо решить, какой из подходов окажется наиболее успешным для выполнения задания. Интеллект, управляющий функционированием устройства «сверху вниз», представляет собой экспертную систему или программу для осуществления заданного типа поиска и обнаружения. Подход «снизу вверх» опирается на создание системы искусственного поведения робота, которая обусловливает его поисковые действия. На первый взгляд, между этими двумя подходами нет существенной разницы, однако имеется одно очень важное различие. Если экспертная система окажется в ситуации (или внешних обстоятельствах), не предусмотренных программой, то робот окажется в «нерешительности». С другой стороны, система поведения, не ориентированная на поиск шаблонных «запрограммированных» ситуаций для расчета вариантов реагирования, не придает «значения» окружающим обстоятельствам – она просто продолжает поиск. Экспериментальная работа, проведенная в течение 30 лет, показала, что подобные системы с типом «интеллекта» «снизу вверх», т. е. поведенчески ориентированные, в ряде случаев успешно справлялись с заданиями, когда экспертные системы терпели поражение. Пионеры в робототехнике Как уже отмечалось, одним из пионеров в разработке поведенчески ориентированного подхода («снизу вверх») в робототехнике был Вильям Грей Вальтер. Он родился в Канзас Сити штат Миссури в 1910 году. Когда ему исполнилось пять лет, его семья переехала в Англию. Там он посещал школу и окончил Королевский колледж в Кембридже в 1931 году. После окончания он занялся фундаментальными исследованиями в области нейрофизиологии, которые проводил в госпиталях. В начале своей карьеры Вальтер заинтересовался работами русского физиолога И.П. Павлова, знаменитого своими исследованиями механизмов «стимул-реакция», проводимых на собаках. В своих экспериментах Павлов звонил в звонок непосредственно перед тем, как дать пищу подопытным собакам. Через некоторое время собаки реагировали слюноотделением на сам звонок. Другой современник Вальтера Ганс Бергер изобрел электроэнцефалографический аппарат. Во время визита Вальтера в лабораторию Бергера он предложил некоторые усовершенствования электроэнцефалографа. После переделки чувствительность прибора возросла, и в человеческом мозгу были обнаружены ЭЭГ кривые с частотами ниже 10 Гц. Изучение Вальтером работы человеческого мозга привело его к изучению нейронных сетей мозга. В силу их исключительной сложности биологические нейронные сети оказалась недоступными для точной топологической картины или воспроизводства. По этой причине он выбрал объектом изучения отдельный нейрон и его электрический аналог. Он стремился узнать, какой тип поведения может быть получен в системе, состоящей из нескольких нейронов. Для ответа на этот вопрос в 1948 году Вальтер построил трехколесный робот, имеющий вид черепахи. Размеры робота составляли 12" в высоту и около 18" в длину. Что оказалось удивительным – этот робот использовал только два электрических нейрона и при этом демонстрировал достаточно сложное и интересное поведение. Первые два робота были нежно названы Элмер и Элси (ЭЛектро МЕханический Робот и Electro Sensitive (Светочувствительный)). После наблюдений за сложным типом поведения, который демонстрировали роботы, Вальтер переименовал их в Machina Speculatrix (рассуждающая машина). Помните, что в 40-годы транзистор еще не был изобретен, поэтому в электронных нейронах робота были использованы электронные лампы. Поскольку электронные лампы потребляют значительно большую мощность, чем транзисторы, оригинальная конструкция содержала аккумуляторы большого размера. Нервная система или система рефлексов робота состояла из двух датчиков, соединенных с двумя нейронами. Один из датчиков представлял собой фотосопротивление, а другой – контактный выключатель, соединенный с внешней оболочкой робота. Три колеса робота были расположены в виде треугольника. Переднее направляющее колесо было снабжено рулевым приводом и при этом могло вращаться на 360° в одном направлении. Кроме того, с этим же колесом был соединен ходовой двигатель, обеспечивающий поступательное движение робота. Поскольку рулевой механизм мог поворачиваться на полные 360°, питание ходового двигателя осуществлялось через два контактных кольца, установленных на оси привода. Фоторезистор был также закреплен на оси привода рулевого механизма колеса. Это позволило автоматически совместить ось «взгляда» фоторезистора и направление движения робота. Четыре режима работы Еще до появления конструкций роботов – охотников за светом данный робот демонстрировал четыре режима работы. Необходимо отметить, что в данной конструкции как ходовой двигатель, так и двигатель рулевого привода были практически постоянно включены. • Поиск. Окружающее пространство слабо освещено или находится в темноте. Реакция робота: двигатель рулевого механизма – полные обороты, ходовой двигатель – половинные обороты. • Движение. Найден источник света. Реакция робота: двигатель рулевого механизма отключен, ходовой двигатель – полные обороты. • Ослепление. Яркий свет. Реакция робота: двигатель рулевого механизма – половинные обороты, ходовой двигатель – реверсивный режим. • Касание. Столкновение с препятствием. Реакция робота: двигатель рулевого механизма – полные обороты, ходовой двигатель – реверсирование. Наблюдаемое поведение В 1950 году Вальтер написал две статьи для Scientific American («Имитация жизни», май 1950 г. и «Машина, которая учится», август 1951 г.), а затем и книгу под названием «Живой мозг» (Norton, New York, 1963). Взаимодействие между нейронной системой и окружающей средой породило неожиданные и сложные типы поведения. В одном из экспериментов Вальтер построил укрытие, куда Элси могла заходить и подзаряжать свои аккумуляторы. Укрытие было оборудовано небольшим источником света, которое должно было привлечь внимание робота к нему по мере расходования аккумуляторов. Робот мог бы заходить в укрытие и автоматически перезаряжать аккумуляторы. После завершения процесса зарядки робот мог покидать укрытие в поисках новых источников света. В другом эксперименте Вальтер прикрепил небольшие лампочки к панцирю каждой черепахи. Роботы демонстрировали взаимодействие, которое напоминало наблюдателю некоторый тип социального поведения. Роботы танцевали вокруг друг друга, временами приближаясь и затем расходясь, что напоминало общение роботов по типу ритуального поведения или пометки территории. Строим черепаху Вальтера Мы можем воспроизвести большинство функций знаменитой черепахи Вальтера. Используемая нами программа имитирует работу нейронов, использованных в оригинальной конструкции. Для изготовления шасси потребуются некоторые слесарные работы. Слесарные работы сильно упростятся при использовании следующих инструментов: • Кернер. Используется для нанесения углублений на лист металла для облегчения сверления. Если не наметить центр отверстия с помощью кернера, то сверло легко может «увести». Для нанесения отметки поставьте острие кернера в точку предполагаемого отверстия. Ударьте молотком для нанесения углубления. • Ручные ножницы по металлу. Используются для резки листового металла. Я бы рекомендовал ножницы размером 75 см. Процесс резки аналогичен использованию обычных ножниц. Примечание: резка металла значительно труднее резки бумаги. • Тиски. Используются для фиксации металлических деталей для сверления и сгибания. • Дрель • Молоток Вы можете найти эти инструменты практически в любом магазине слесарного оборудования. Там же можно найти тонкие листы металла и алюминиевые полосы, необходимые для изготовления шасси. Я изготовил шасси из прямоугольной алюминиевой полосы сечением 3х 12 мм и листа нержавеющей стали толщиной 0,6 мм. Нержавеющая сталь хуже поддается обработке в сравнении с обычным холодным листовым прокатом, поэтому в следующий раз я предпочел бы алюминий или прокат. Ходовой и поворотный двигателиХодовой двигатель представляет собой двигатель с редуктором 100:1 (см. рис. 8.1). Мне нравится этот двигатель, поскольку он имеет скобу для крепления. Для поворотного двигателя я использовал стандартный сервомотор с усилием на валу 1,3 кгс. Для шасси потребуются три куска листового металла. Рис. 8.1. Двигатель постоянного тока 1,5–3 В с редуктором 100:1 Ходовой двигатель и переднее колесо закреплены на П-образном швеллере (см. рис. 8.2). П-образный швеллер изготовлен из стальной полосы размерами 25 мм на 125 мм и толщиной 0,4 мм. В центре полосы необходимо просверлить три отверстия для крепления фланца сервомотора. Диаметр центрального отверстия (3 мм) больше диаметра крайних отверстий (1,5 мм). Отсоедините фланец от сервомотора путем выворачивания центрального винта и вытягивания фланца вверх. Положите фланец на скобу швеллера и разметьте положения центрального и боковых отверстий. Просверлите три отверстия. Присоедините фланец к сервомотору и заверните центральный винт. Для крайних отверстий используйте винты с гайками диаметром 3 мм. Просверлите три отверстия 3,1 мм для бокового крепления Г-образной скобы ходового двигателя. Просверлите два соосных отверстия диаметром 3 мм для крепления переднего колеса. Рис. 8.2. П-образная скоба крепления ведущего колеса Зажмите полосу в тиски и согните ее концы под углом 90°, чтобы получилась П-образная скоба. Используйте Г-образную скобу для крепления ходового двигателя к П-образному швеллеру (см. рис. 8.3). Размеры Г-образной скобы 38х 76 мм. Наметьте отверстия на пластине согласно положению соответствующих отверстий на корпусе редуктора. Убедитесь, что три отверстия на Г-образной скобе соответствуют отверстиям на П-образной скобе швеллера. Рис. 8.3. Г-образная скоба крепления редуктора к П-скобе На рис. 8.4 изображен чертеж основания с изображением позиции сервомотора с крутящим моментом 1,3 кгс. Размеры основания 76х140 мм. На основании будут смонтированы источник питания и электрическая схема. Для вырезания отверстия под сервомотор воспользуйтесь чертежом. Рис. 8.4. Чертеж основания конструкции с вырезом под сервомотор с крутящим моментом 1,3 кгс и отверстиями под скобу крепления задней оси Сперва просверлите четыре отверстия диаметром 3 мм по краям прямоугольника. Затем высверливайте отверстия по сторонам прямоугольника. Такой способ существенно легче, чем выпиливание или «выкусывание» металла по периметру необходимого отверстия. После высверливания отверстия для подравнивания краев можно использовать кусачки. Окончательная обработка краев производится напильником, после чего можно монтировать сервомотор. Просверлите сзади два отверстия для крепления скобы задней оси. Чертеж скобы крепления задней оси приведен на рис. 8.5. Она изготовлена из алюминиевой полосы размерами 3х12х250 мм. Перед сгибанием просверлите в алюминиевой полосе четыре отверстия диаметром 3 мм. Для задней оси я использовал проволоку от вешалки для одежды. Рис. 8.5. Скоба крепления задней оси Потом мы должны закрепить переднее ведущее колесу на оси редуктора ходового двигателя. Я использовал резиновое колесико, садящееся с трением на ось 3 мм, а диаметр вала редуктора 100:1 ходового двигателя составляет 2 мм. Для решения этой проблемы я насадил на ось 75 мм отрезок пустотелой металлической трубки с внешним диаметром 3 мм. Для насаживания 3-миллиметровой трубки на 2-миллиметровый вал я использовал шлицевую отвертку и молоток. Чтобы не повредить шестерни редуктора, я положил вал с надетой на него трубкой на гладкую металлическую поверхность. Затем, поставив жало отвертки на трубку, аккуратными ударами молотка по отвертке немного сжал трубку, что должно обеспечить хорошее сцепление между валом и трубкой. Для надежного исключения проскальзывания достаточно сплющить трубку в двух – трех местах. Если посмотреть внимательно на вал редуктора, то можно заметить плоскую канавку на поверхности вала. Если аккуратно сплющить трубку по канавке, то можно добиться очень надежного крепления трубки. Ведущее колесо просто надевается на 3-миллиметровую трубку. Трения между колесом и осью достаточно, чтобы вращение колеса и движение робота осуществлялось без проскальзывания. Если вы хотите постоянно закрепить колесо на оси (чего я обычно не делаю), то достаточно развести немного эпоксидного клея и нанести его на ось перед надеванием колеса. БалансировкаКогда ходовой двигатель закреплен на одной стороне П-образной скобы, то он своим весом разбалансирует конструкцию. Для ее балансировки необходимо закрепить от 100 до 125 г свинца на противоположной стороне скобы. Я применил кусочки свинца толщиной 3 мм, которые ранее использовал для хранения радиоактивных изотопов. Резка и сверление свинца не представляет трудности. Понятно, что для балансировки вы можете прикрепить любой подходящий тяжелый предмет (как это делается в барабане стиральной машины). ПанцирьВ оригинальной конструкции робота черепахи был использован прозрачный пластиковый панцирь. Панцирь был соединен с выключателем, который при срабатывании переключал схему робота в режим «убегания». Я испробовал несколько типов конструкций, но остался неудовлетворен ими. В конце концов, мне ничего не оставалось, как создать свою конструкцию панциря. Вместо того чтобы делать цельный панцирь, я изготовил бампер, опоясывающий робота. Бампер изготовлен из алюминиевой полосы размерами 3х12х810 мм (см. рис. 8.6). Центр полосы и каждый изгиб отмечены с помощью карандаша. Полосу необходимо зажать в тиски и изогнуть в требуемых местах на нужный угол. Два конца полосы сходятся в задней части бампера. Эти концы скрепляются вместе с помощью отрезка полосы размерами 3х12х25 мм. В каждом из концов полосы сверлится отверстие диаметром 3-миллиметров. Соответствующие отверстия сверлятся на концах бампера. Полоса скрепляется с бампером с помощью двух 3-миллиметровых винтов с гайками (см. рис. 8.7). Рис. 8.6. Размеры бампера, согнутого из алюминиевой полосы 3х12х815 мм Рис. 8.7 Детальный вид части алюминиевой полосы в месте соединения концов бампера Для крепления бампера к роботу используется верхняя скоба, повторяющая размеры и форму передней части бампера (см. рис. 8.8). Верхняя скоба изготовлена из алюминиевой полосы размерами 3х12х370 мм. Аналогично бамперу центр полосы и места необходимых изгибов отмечены карандашом. Полоса изгибается в тисках таким же образом, как и бампер. Рис. 8.8. Боковой вид верхней скобы, изготовленной из алюминиевой полосы 3х12х370 мм Поиск центра тяжести бампера Очень важно найти линию центра тяжести бампера, поскольку она будет являться наилучшим местом прикрепления верхней скобы. Поставьте бампер на торец алюминиевой полосы. Подвигайте его в разные стороны до нахождения положения равновесия. Отметьте карандашом соответствующие места на боковых сторонах бампера. Просверлите на каждой стороне отверстие диаметром 3 мм. Соответствующие отверстия просверлите на концах верхней скобы. Прикрепите верхнюю скобу к бамперу при помощи 3-миллиметровых винтов с гайками. Крепление бампера к основанию конструкции роботаБампер прикрепляется к «телу» робота с помощью верхней скобы. Просверлите три отверстия диаметром 3 мм в верхней части скобы. Одно отверстие сверлится по центру; два других на расстоянии 28 мм от центра (см. рис. 8.9). Три соответствующих отверстия нужно просверлить в основании робота за сервомотором. Положение отверстий должно быть выбрано таким образом, чтобы зазор между бампером и задними колесами лежал в переделах 3–6 мм. Положение соответствующего центрального отверстия на основании должно быть передвинуто вперед примерно на 6 мм. Рис. 8.9. Боковой вид расположения отверстий в горизонтальной части верхней скобы Скоба крепится к основанию при помощи двух 3-миллиметровых винтов длиной 25 мм, четырех гаек 3 мм, и двух пружин длиной 25 мм, внутренним диаметром 3 мм и усилием натяжения порядка 900 г (см. рис. 8.10). Жесткость крепления бампера может быть отрегулирована затягиванием или отпусканием крепежных гаек. После установки бампера, при касании или столкновении робота с препятствием бампер будет отклоняться назад и замыкать контакты выключателя. Рис. 8.10. Боковой вид крепления верхней скобы к основанию робота при Выключатель бампера Для изготовления выключателя использованы центральные отверстия в верхней скобе и основании робота. Как видно из рис. 8.10, в центральное отверстие скобы вставлен винт 3 мм, затянутый обычной оцинкованной гайкой и дополнительной латунной контргайкой. К латунной гайке припаян контактный провод. Такая конструкция обеспечивает надежный электрический контакт между проводом и скобой бампера. Латунная гайка используется потому, что к ней легко надежно припаять проводник. Обычные оцинкованные гайки с трудом поддаются пайке, что снижает надежность электрического контакта. Другая половина выключателя состоит из пластмассового винта 3 мм длиной 25 мм и трех гаек, одна из которых латунная и к которой припаивается второй контактный провод выключателя (см. рис. 8.11). На рис. 8.12 изображен чертеж выключателя в сборе. Регулировка выключателя заключается в том, чтобы расположить нижнюю контактную латунную гайку непосредственно под верхней алюминиевой скобой, но без взаимного касания. Когда верхняя скоба наклоняется вперед, то она касается латунной гайки, замыкая, таким образом, электрический контакт. Рис. 8.11. Боковой вид датчика «касания» (половина датчика на основании робота), пластиковый винт с верхней латунной гайкой Рис. 8.12. Детальная фотография крепления датчика «касания» и пружинной подвески верхней скобы Фоторезистор В моем прототипе устройства использованы CdS фоторезисторы с темновым сопротивлением порядка 100 кОм и сопротивлением на свету порядка 10 кОм. Наилучшим местом для закрепления фоторезисторов является верхняя часть 100:1 редуктора ходового двигателя (см. рис. 8.13). Для крепления фоторезисторов я использовал небольшую пластиковую пластинку, закрепленную под углом 45° вверх и светонепроницаемый козырек, помещенный между фоторезисторами (см. рис. 8.14). Закрепление фоторезисторов на площадке переднего колеса автоматически обеспечивает совпадение направления приема светового излучения с направлением движения. Такой тип повторяет конструкцию оригинальной черепахи робота. Рис. 8.13. Детальная фотография конструкции узла переднего ведущего колеса, содержащая противовес, ведущее колесо, двигатель с редуктором и датчики освещенности Рис. 8.14. Изометрический вид блока датчиков Использование двух CdS фоторезисторов сильно облегчает вычисления, необходимые для решения задачи следования за источником света. Для этого требуется алгоритм, аналогичный алгоритму действия устройства системы слежения за направлением источника света, описанный в гл. 6. Работа блока фоторезисторов проиллюстрирована на рис. 8.15. Когда оба датчика освещены одинаково, то их сопротивления приблизительно равны. Если разность показаний каждого их датчиков не превышает ±10 единиц, программа PIC полагает их равными и не отдает команду на устройство поворота. Когда один из датчиков попадает в тень источника света, то разность сопротивлений превышает ±10 единиц. Соответственно PIC микроконтроллер включает устройство поворота для обеспечения равной освещенности датчиков. При этом переднее колесо поворачивается, и робот движется прямо к источнику света. Если освещенность превышает пороговую, то робот переходит в режим «избегания». Рис. 8.15. Функциональное реагирование блока датчиков Принципиальная схема Принципиальная схема робота изображена на рис. 8.16. «Интеллект» робота обеспечивается работой двух микроконтроллеров PIC16F84. Сигнал для управления рулевым механизмом сервомотора снимается с шины RB3 PIC микроконтроллера 2. Ходовой двигатель с редуктором 100:1 соединен с мостовой схемой, состоящей из компонентов Q1-Q4, D1-D4 и R1-R4. Мостовая схема управляется с шин входа/выхода RB1 и RB2. Показатели световых CdS датчиков считываются шинами RB6 и RB7 микроконтроллера 1. Показания датчика касания считываются шиной RB5, что сигнализирует о наличии препятствия. Монтаж устройства я осуществил на двух небольших макетных платах без применения пайки. Макетные платы закреплены на основании робота на крышке батарейного отсека. Рис. 8.16. Принципиальная электрическая схема робота-черепахи Для точного моделирования функций исходной конструкции (точного повторения поведения оригинального робота-черепахи конструкции Вальтера) необходимо два микроконтроллера. Распределение вычислительных функций между двумя процессорами обеспечивает более четкую и слаженную работу робота. Основной причиной использования второго микроконтроллера является задача управления рулевым механизмом сервомотора. Мощности одного микропроцессора оказалось недостаточно для считывания показаний двух CdS фоторезисторов и одновременного управления рулевым механизмом. Если бы я использовал для руления обычный двигатель с редуктором, то и одного микропроцессора оказалось бы достаточно. Если оптимистично смотреть на вещи, преимуществом такого подхода к решению проблемы является возможность создания робота с двумя процессорами, работающими в паре (т. е. системы с разделением времени). Одному микроконтроллеру, названному микроконтроллером 1, я назначил функции отслеживания направления источника света и контроля датчика столкновений. Управление двигателями хода и поворота обеспечивается вторым микроконтроллером, имеющим номер 2. Чтобы схема работала, необходимо обеспечить связь между микроконтроллерами. В данном случае двухсторонняя связь не требуется: один микроконтроллер подает управляющие сигналы, а второй – «слушает». Микроконтроллер 1. Микроконтроллер 1 считывает информацию со световых CdS датчиков и с датчика столкновений. Его связь с микроконтроллером 2 осуществляется с помощью трех шин ввода/вывода. • Шина ввода/вывода 1 отображает состояние CdS датчика 1. Если сила света, попадающего на CdS 1 больше, чем на CdS 2, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня. • Шина ввода/вывода 2 отображает состояние CdS датчика 2. Если сила света, попадающего на CdS 2, больше, чем на CdS 1, то на шине появляется сигнал низкого уровня. Если сила света на обоих датчиках равна, то на выходе присутствует сигнал высокого уровня. • Шина ввода/вывода 3 отображает либо состояния датчика столкновений, либо слишком большую засветку CdS датчиков. В обоих случаях на выходе появляется сигнал высокого уровня. Микроконтроллер 2. Микроконтроллер 2 проверяет состояние трех шин ввода/вывода и на основании полученной информации управляет движением и поворотом согласно таблице: Соответственно шины 1 и 2 отражают состояние датчиков CdS, а шина 3 – состояние датчика столкновений. Добавление состояния «спячки»Я добавил состояние «спячки», соответствующее общему низкому уровню освещенности. Если оба CdS датчика освещены примерно одинаково, то робот движется вперед. Если датчики освещены в разной степени, то робот поворачивается соответственно направо или налево. Если поступает слишком много света или срабатывает датчик столкновений, то робот переходит в режим избегания. ПитаниеБатарейный отсек робота содержит четыре элемента АА, обеспечивая напряжение питания 6 В. При проверке функционирования робота есть основания предполагать, что истощение батарей происходит достаточно быстро. Программа Блок-схема программы изображена на рис. 8.17. После включения питания ходовой двигатель отключен, и микроконтроллер начинает искать наиболее яркий источник света, поворачивая сервомотор. Если источник света имеет слишком большую яркость, то включается режим избегания. В режиме избегания ходовой двигатель включается в режим реверса; при этом ведущее колесо поворачивает направо или налево. Если освещенность не достигает уровня режима избегания, то робот поворачивается в направлении источника света и движется вперед. При замыкании датчика столкновений робот предполагает наличие препятствия и переходит в режим избегания. При выключении датчика столкновения (препятствия нет) программа переходит на начало, и процесс поиска и движения к наиболее яркому источнику света продолжается. Рис. 8.17. Блок-схема программы Программа написана для компилятора PICBASIC и введена непосредственно в PIC16F84. Без особых изменений программа может быть написана на версии PICBASIC Pro. Программа может быть подстроена под имеющиеся экземпляры CdS датчиков, используемых двигателей и т. п. Программа 1 ‘Микроконтроллер 1 start: High 4: low 4 ‘Мигание светодиода b7 = 0 button 5,0,255,0,b7,1,avoid ‘Проверка препятствия pot 7, 255, b0 ‘Считывание датчика CdS 1 pot 6, 255, b1 ‘Считывание датчика CdS 2 if b0 <= 250 then skip ‘Достаточно темно? If b1 >= 250 then slp ‘Да skip: ‘Нет if bo > 25 then skip 2 ‘Слишком много света if b1 < 25 then avoid ‘Да skip2: ‘Нет if bo = b1 then straight ‘Освещенность одинакова, вперед if bo > b1 then greater ‘Проверить освещенность if bo < b1 then lesser ‘Проверить освещенность straight: high 0: high 1: low 2 ‘Сообщение микроконтроллеру 2 goto start ‘Движение прямо greater: b2 = b0 – b1 ‘Проверка разности освещенности if b2 > 10 then rt ‘Если больше 10, поворот направо goto straight ‘Если нет, движение прямо lesser: b2 = b1 – b0 ‘Проверка разности освещенности if b2 > 10 then lt ‘Если больше 10, поворот налево goto straight ‘Если нет, движение прямо rt: ‘Поворот направо, посылка high 0: low 1: low 2 ‘Сообщение микроконтроллеру 2 goto start lt: ‘Поворот налево, посылка low 0: high 1: low 2 ‘Сообщение микроконтроллеру 2 goto start slp: ‘Режим спячки, посылка low 0: low 1: low 2 ‘Сообщение микроконтроллеру 2 goto start avoid: ‘Режим избегания, посылка low 0: low 1: high 2 ‘Сообщение микроконтроллеру 2 goto start Программа 2 ‘Микроконтроллер 2 b4 = 150 ‘Установка среднего положения сервомотора start: peek 6, b1 ‘Чтение данных микроконтроллера 1 let b0 = b1 & 7 ‘Маскирование кроме первых трех битов if b0 = 0 then slp ‘Время спячки if b0 = 1 then rt ‘Поворот направо if b0 = 2 then lt ‘Поворот налево if b0 = 3 then fw ‘Движение прямо if b0 = 4 then avoid ‘Режим избегания goto start slp: low 4: low 5 ‘Выключить двигатель pulsout 3, b4 ‘Запустить сервомотор pause 18 ‘Задержка включения сервомотора goto start ‘Чтение данных микроконтроллера 1 rt: ‘Поворот направо high 4: low 5 ‘Движение вперед if b4 > 200 then rt1: ‘Поворот направо максимален b4 = b4 + 1 ‘Нет rt1: ‘Да pulsout 3, b4 ‘Поворот сервомотора pause 18 ‘Задержка ( 55 Гц) goto start ‘Чтение данных микроконтроллера 1 lt: ‘Поворот налево high 4: low 5 ‘Движение вперед if b4 < 100 then lt1: ‘Поворот налево максимален b4 = b4 – 1 ‘Нет lt1: ‘Да pulsout 3, b4 ‘Поворот сервомотора pause 18 ‘Задержка (55 Гц) goto start ‘Чтение данных микроконтроллера 1 fw: ‘Прямо high 4: low 5 ‘Движение прямо pulsout 3, b4 ‘Поворот сервомотора pause 18 ‘Задержка (55 Гц) goto start ‘Чтение данных микроконтроллера 1 avoid: low 4: high 5 ‘Движение назад if b4 > 150 then vr ‘Проверка. Перемена направления направо? if b4 <= 150 then vl ‘Проверка. Перемена направления налево? vr: ‘Перемена направления вправо b5 = b4 – 30 ‘Направление поворота for b6 = 1 to 120 ‘Цикл задержки 2 с pulsout 3, b5 ‘Поворот сервомотора pause 18 ‘Задержка (55 Гц) next b6 ‘Конец цикла goto start ‘Чтение данных микроконтроллера 1 vl: ‘Перемена направления влево b5 = b4 + 30 ‘Направление поворота for b6 = 1 to 120 ‘Цикл задержки 2 с pulsout 3, b5 ‘Поворот сервомотора pause 18 ‘Задержка (55 Гц) next b6 ‘Конец цикла goto start Фотография конструкции робота в сборе показана на рис. 8.18 Рис. 8.18. Вид спереди готовой конструкции Поведение Для нормального функционирования робота необходима достаточно низкая общая освещенность, на фоне которой выделяется один яркий источник света. Для моего робота потребовался столь низкий уровень общей освещенности, что мне пришлось изготовить из цветного пластика два небольших светофильтра, чтобы снизить поток света, попадающего на CdS фотоэлементы. Робот-прототип демонстрирует следующее поведение. При равномерном освещении (нет отдельного яркого источника) робот движется по прямой или описывает круги, в зависимости от наличия ярких источников в предыдущие моменты времени. При слишком большой общей освещенности он откатывается назад. Если имеется источник средней интенсивности, то он «находит» его и движется прямо по направлению к этому источнику. Программа может быть доработана для исследования более интересных и экзотических типов поведения. Перед тем как это делать, давайте посмотрим, как работает стандартная программа. Программа 1 микроконтроллера 1 первоначально опрашивает датчики и посылает информацию в микроконтроллер 2. В этой программе вы можете изменить чувствительность датчиков, чтобы подстроиться под имеющийся датчик. Для этого необходимо изменить строки: if b0 <= 250 then skip ‘Достаточно темно? If b1 >= 250 then slp ‘Да skip: ‘Нет Максимальное значение показаний датчика может быть равно 255 (полная темнота). Это значение можно увеличить, чтобы поднять средний уровень освещенности для «спячки». Уровень освещенности, необходимый для включения режима избегания, можно изменить с помощью строк: if bo > 25 then skip 2 ‘Слишком много света if b1 < 25 then avoid ‘Да skip2: ‘Нет Увеличение значения, которое в данном случае равно 25, снизит уровень освещенности, при котором робот перейдет в режим избегания. В свою очередь уменьшение численного значения повысит интенсивность света для режима избегания. В большинстве случаев вы захотите уменьшить численное значение параметра. Однако я бы не советовал уменьшать его ниже 9, поскольку даже в режиме полного насыщения сопротивление CdS фотоэлементов никогда не падает до нуля. Моя проверка показала, что сопротивление при полном насыщении не падает ниже 5 единиц. Пороговая разность показаний двух CdS фоторезисторов может быть увеличена или уменьшена изменением соответствующего параметра в процедурах greater и lesser. greater: b2 = b0 – b1 if b2 > 10 then rt goto straight lesser: b2 = b1 – b0 if b2 > 10 then lt goto straight В дополнение к этому возможно создание преимущественного направления поворота робота (право– или леворукости) через изменение параметров процедур greater и lesser, но не обеих одновременно. Это означает, что робот будет поворачиваться в одном направлении более «охотно», чем в другом. Например, если мы заменим строку if b2 > 10 then lt в процедуре lesser на if b2 > 15 then lt, то наш робот более охотно будет поворачиваться направо. Конструкция робота предоставляет много возможностей для экспериментаторов в области робототехники как с точки зрения самой конструкции, так и ее программного обеспечения. Список компонентов для робота-черепахи Вальтера • (1) 300x300 мм лист металла толщиной 0,4–0,6 мм • (1) 3х 12х 300 мм алюминиевая полоса • (1) сервомотор с крутящим моментом 1,3 кгс • (1) двигатель с редуктором 1:100 • винты и гайки 3 мм • винты и гайки 2 мм • (1) 3х 12х 810 мм алюминиевая полоса • (1) 3х 12х 370 мм алюминиевая полоса • (1) 3х 12х 50 мм алюминиевая полоса • (1) стандартный сервомотор с крутящим моментом 1,3 кгс • (1) двигатель постоянного тока с редуктором 100:1 • (1) ведущее колесо 51 мм под ось 3 мм • (1) трубка (сталь, латунь) внешний диаметр 3 мм, внутренний диаметр 2 мм • (2) фоторезистор CdS, темновое R – 100 кОм, световое R – 10 кОм • (4 Q1-Q4) транзистор NPN 2N2222 • (4 D1-D4) диод 1N914 • (1 D5) светодиод красный • (4 R1-R4) резистор 1 кОм, 0,25 Вт • (6 R5-R7, R9-R11) резистор 10 кОм, 0,25 Вт • (1 R8) резистор 470 Ом, 0,25 Вт • (4) конденсатор 22 пФ • (2 C1, C2) конденсатор 0,1 мкФ • (2 X1, X2) кварцевый резонатор 4 МГц • (1 Q5) регулятор напряжения 7805 • (2 IC1, IC2) микроконтроллер PIC16F84-04 • Комплектующие: винты 3 мм, пластиковые винты 3 мм длиной 25 мм, гайки латунные 3 мм, пружины длиной 25 мм (усилие 800 грамм) Поставщики • Алюминиевые полосы, винты, трубки, пружины можно приобрести в соответствующих магазинах. • Сервомоторы можно приобрести в специализированных магазинах или заказать у дистрибьюторов. • Микроконтроллер PIC и переднее ведущее колесо можно заказать в компании Images Company. Images Company 39 Seneca Loop Staten Island, NY 10314 (718) 698-8305 Jameco 1355 Shoreway Rd. Belmont, CA 94002 (650) 592-8097 JDR 1850 South 10 St. San Jose, CA 95112 (800) 538-5005 Строим робота-охотника за светом Посмотрим, сможем ли мы сконструировать робота-охотника за светом, обладающего в некотором смысле «интеллектуальным» поведением. В главе 6 мы уже рассматривали систему слежения за источником света на фоторезисторах. Система слежения фиксировала источник света и поворачивалась в его направлении. Когда мы поместили следящую систему на копию робота-черепахи Вальтера, она направляла движение робота на источник света. Такой тип «ориентировочного» поведения мы будем называть первым уровнем системы «стимул-реакция». Программа иллюстрирует, как алгоритмически управляемые микроконтроллеры могут имитировать функции нейронов. Для строгости примера приведем нейронную схему, которая исполняет те же функции без участия алгоритмически заданного «интеллекта». На рис. 8.19 показано использование двойного симметричного операционного усилителя с однополярным питанием. Два ОУ включены в схемы компараторов. Работу компаратора мы подробно рассматривали в гл. 5. Если у вас возникли какие либо вопросы по поводу рис. 8.19, перечитайте гл. 5. Два фоторезистора CdS включены последовательно и образуют делитель напряжения. Выход этого фоторезистивного делителя подключен к инвертированному входу одного ОУ и неинвертированному входу другого. Рис. 8.19. Нейронный компаратор на двух ОУ Потребуются еще два делителя напряжения. Конструктивно они являются зеркально симметричными. Один делитель составляют резистор 3,9 кОм, подключенный к ИП, и резистор 4,7 кОм, соединенный с землей. Во втором делителе используются резисторы тех же номиналов, но в обратном включении. Когда оба фоторезистора освещены одинаково, то ни один из светодиодов не горит. Если прикрыть один из фоторезисторов, то соответствующий светодиод загорится. Каждый из ОУ функционирует как одиночный электронный нейрон. Когда значение электрического стимула превышает или падает ниже заданного порога (зависит от того, какой из ОУ мы рассматриваем), который определяется соответствующим резистивным делителем 3,9 кОм и 4,7 кОм, то «нейрон» активируется. Активация нейрона (т. е. сигнал на выходе ОУ) может быть использована для включения двигателя постоянного тока через NPN транзистор (см. рис. 8.20). В свою очередь двигатели могут обеспечивать перемещение и направление движения робота охотника. Рис. 8.20. Управление двигателями постоянного тока с помощью нейронного компаратора Для изготовления простого робота-охотника было использовано шасси, имеющее два двигателя постоянного тока с редукторами (см. рис. 8.21). Когда оба двигателя включены, робот движется вперед по прямой. Если один из двигателей выключен, то другой двигатель поворачивает конструкцию направо или налево. Рис. 8.21. Общая схема робота – светоохотника Для нашего робота-охотника при одинаковом освещении фоторезисторов нам необходимо подавать питание на оба двигателя. Для этого между выходом каждого из ОУ и базой NPN транзистора необходимо включить инвертирующий буферный каскад (см. рис. 8.22). Рис. 8.22. Управление двигателями постоянного тока с помощью нейронных компараторов с инверторами Поведение Когда на один из фоторезисторов падает меньше света, чем на другой, один из двигателей соответственно выключается, а другой двигатель поворачивает устройство в направлении источника света. Когда световые потоки сравниваются, включаются оба двигателя и робот движется прямо по направлению на источник света. Избегание светаЕсли мы поменяем местами выходы ОУ, управляющие двигателями, то поведение изменится на противоположное. Вместо того чтобы двигаться по направлению к источнику света, робот будет избегать света и искать «убежище». Дополнительный тип поведения (питание) Мы можем усложнить поведение робота-охотника, добавив еще один уровень «стимул-реакция» (см. рис. 8.23). Для этой цели подойдет еще одна управляемая светом схема компаратора, которая будет обеспечивать тип поведения «питание». Напомню, что принцип работы компараторов был изложен в гл. 5. Если у вас появились вопросы по рис. 8.23, то прочитайте еще раз эту главу. Второй слой надстроен сверху над первым. Когда интенсивность светового потока достигает критической величины, опорный детектор снимает напряжение с цепей первого слоя и системы питания двигателей. Если мы разместим на конструкции солнечную батарею и диод, то напряжение, генерируемое батареей, будет немного подзаряжать батарею NiCd аккумуляторов. Эту функцию мы назовем «питание». Рис. 8.23. Схема компаратора для поведения типа «питание» Еще один тип поведения (отдых) Понятно, что у нас нет желания, чтобы робот-охотник перемещался в темноте, теряя при этом драгоценную энергию. Поэтому мы добавим еще один слой поведения. Третьим слоем будет еще один пороговый детектор (см. рис. 8.24). Этот детектор отключает напряжение от цепей первого слоя, системы питания двигателя и цепей второго слоя при уровне освещенности, близком к темноте. При повышении среднего уровня освещенности система восстанавливает питание первого слоя, подает напряжение на двигатели и цепи второго слоя. Рис. 8.24. Схема компаратора для поведения типа «отдых» Новый тип поведения Посмотрим на поведение робота-охотника по трехуровневой (трехслойной) схеме «стимул-реакция» и посмотрим, можно ли классифицировать это поведение как «разумное». В полной темноте робот неподвижен, сосредоточивая всю активность на слое 3. При повышении уровня освещенности слой 3 индуцирует включение питания двух нижних слоев и активирует питание двигателей. На этом этапе слой 1 перехватывает управление устройством и направляет действия робота. Робот ищет и движется по направлению к источнику света. По мере продвижения к источнику света уровень освещенности нарастает. Когда освещенность достигнет критического порогового значения, схема слоя 2 отключит питание двигателей, переведя робота в режим «питание», что позволит ему «питаться» (подзаряжать аккумуляторы) с помощью солнечной батареи. Решите ли вы считать такое поведение разумным или нет – зависит от вашего личного предпочтения. Подобные вопросы обсуждаются «с обеих сторон баррикад». В конце концов, подобное устройство иллюстрирует тот факт, насколько сложным может оказаться поведение при использовании иерархически уровневого построения системы по типу «стимул-реакция». ВЕАМ-робототехника Идеология ВЕАМ-робототехники была предложена Марком Тилденом во время работы в университете Ватерлоо в Канаде. Заинтересованность в роботах стиля BEAM возникла у Марка после лекции, прочитанной Родни Бруксом в Массачусетском технологическом институте, который Марк посетил в 1989 году. Профессор Родни Брукс рассматривал подход к конструированию роботов как систему по типу «стимул-реакция», названному «предикативной архитектурой». Сокращение ВЕАМ (по-русски БЭАМ) представляет собой многозначный акроним, имеющий некоторое отношение к вопросам биологии, электроники, эстетики и механики. Я сказал «некоторое отношение», поскольку данный акроним можно толковать, например, как Биотехнологию, Эволюцию, Аналоговые системы и Модульные принципы. Соревнования ВЕАМ-роботов Для конструкторов ВЕАМ-роботов ежегодно проводятся соревнования по Олимпийской системе, программа которых включает 14 пунктов. Традиция подобных ВЕАМ-игр началась с первых международных соревнований, проведенных в Глазго, Шотландия, в 1990 году. Основной идеей философии ВЕАМ-робототехники является эволюция роботов: развитие от простых конструкций к сложным системам. Примером является идея отказа от обычных схем построения робота, управляемого «сверху» с помощью ЦПУ в пользу поведенчески ориентированных снизу вверх систем типа «стимул-реакция», построенных по иерархически «слойному» принципу (нейронные сети, системы нервных волокон). Марк Тилден назвал подобные стимул-реактивные конструкции «нервной сетью». Тилден разработал несколько интересных конструкций роботов (см. рис. 8.25). В них использованы нервные сети, смоделированные на транзисторах. Поскольку Марк Тилден запатентовал схемы подобных нервных сетей, то найти публикации подобных схем в открытой печати не представляется возможным. По этой причине я не могу сейчас представить вам образцы подобных схем. Тем не менее среди работ Тилдена имеется книга «Living Machines». Рис. 8.25. BEAM-роботы Рисунок 8.26 озаглавлен Gumby Trks. Это «существо» представляет собой тип биомеханического «ходока», рассчитанного на передвижение по поверхностям различных типов. Здесь представлен Gumby 1.0, собранный на восьми транзисторах и имеющий длину 30 см, который оставляет след на песке пустыни, передвигаясь с помощью двух стерженьков с зацепами. Рис. 8.26. Путешественник Gumby На рис. 8.27 представлен робот Walkman 1.0. Эта первая модель 12-транзисторных «микростержневых» передвигающихся роботов, собранная из остатков пяти одинаковых кассетный плееров типа Walkman. Робот имеет семь чувствительных датчиков, включая два «глаза», и с помощью системы из пяти моторов может преодолевать поверхности достаточно сложного рельефа. Рис. 8.27. Walkman 1.0 Электронный утиль Конструкторы ВЕАМ-роботов гордятся тем, что используют в своих конструкциях различные, отслужившие свой век части электронных устройств: например, солнечные батареи от калькуляторов, экономичные двигатели от плееров Walkman и других кассетных магнитофонов, прижимные ролики, выключатели, конденсаторы, редукторы, соленоиды и прочие детали. Сбор электронного «утиля» и превращение его в работающие конструкции является проектом использования электронного «вторсырья». Соревнования по ВЕАМ-робототехнике доступны всем. Все участники соревнований имеют равные условия для старта. Семилетние конструкторы имеют те же шансы на победу, что и профессора престижных колледжей. Был случай, когда победителем оказался семилетний ребенок. Соревнования Следующая информация является кратким конспектом программы соревнований по ВЕАМ-роботам. Полную информацию о программе и правилах соревнования можно получить в Калифорнийском университете. Адрес будет указан в конце главы. Солнечная повозкаСоздать робот с питанием от солнечных батарей, который вмещается в куб со стороной 150 мм. Максимальный размер солнечной батареи 12х 65 мм. (7 кв. см.). Длина дорожки 1 м, ширина 150 мм. Соревнования проводятся при ярком солнечном свете (допустима замена галогенной лампой 500 Вт). • Класс А. Гонки на гладком листовом стекле • Класс В. Гонки по пересеченной местности СветоохотникиСоздать робот с питанием от солнечных батарей, способный отыскивать цель и вмещающийся в куб со стороной 175 мм. Робот помещается вместе с соперниками в закрытый «Парк Юрского периода» на 30 часов. Победителями будут считаться роботы, продемонстрировавшие лучшие способности к выживанию, исследованию местности, противоборству, скорости и использованию мощности. Оценка этих качеств производится с помощью фото– и видеосъемки. Водные трапперыСоздать робот с питанием от солнечных батарей, вмещающийся в куб со стороной 175 мм, который способен переплыть в длину аквариум объемом 250 литров (расстояние примерно 1 м). На полпути имеется препятствие – стенка высотой 150 мм, которую робот должен преодолеть, чтобы достичь финишной прямой. Робот-заключенныйСоздать робота, вмещающегося в куб со стороной 175 мм, способного пройти простой лабиринт. Для этих соревнований питание от солнечных батарей необязательно, но желательно. Робот, взбирающийся по канатуСоздать робота, способного взобраться по веревке метровой длины и спуститься обратно. Побеждает самый быстрый. Используется нейлоновая рыболовная леска с усилием на разрыв 18 кг. Размеры робота должны вписываться в куб со стороной 520 мм. Робот-прыгун в высоту и в длинуКласс А. Создать робота, способного прыгнуть три раза подряд в воздух, используя один комплект батарей. Объем робота не должен превышать 0,01 кв.м. Класс В. Создать робота, способного прыгнуть в длину три раза подряд, используя один комплект батарей. Объем робота не должен превышать 0,01 кв.м. Шагающие роботыШагающие роботы соревнуются друг с другом. Роботам начисляют очки согласно их возможностям к передвижению по различным рельефам и преодолению препятствий. Ограничений на размеры нет. Инновационные устройстваСоздать новое устройство, с неочевидной целью его использования. Соревнующиеся оцениваются по качеству исполнения, «широте» взгляда на проблему и необычности применения. Искусство роботов/соревнования по необычным применениямСоздать робота, который умел бы рисовать или создавать произведения искусства. Сами движения робота можно рассматривать также как произведение искусства. Примером может служить цветок, который медленно раскрывается и быстро закрывается при попадании прямых солнечных лучей. Класс А. Роботы, сделанные на скорую руку (конструкции выходного дня). Класс В. Переделанные устройства, игрушки, приспособления и т. д. Соревнования роботов по борьбе сумоКласс А. Роботы разбиваются попарно. Каждый пытается столкнуть другого с круглой платформы размером 150 см. Робот может быть полностью автономным, управляемым с проводного пульта или по радио. Класс В. Роботы стараются столкнуть друг друга с края круглой платформы размером 180 см. Соревнования наномышейСоздать несущую себя робот-мышь, способную пройти через лабиринт. Размер «подошвы» мыши не должен превышать 10х 10 см. Ограничения веса нет. Соревнования микромышейСоздать несущую себя робот-мышь, способную пройти через лабиринт. Размер «подошвы» мыши не должен превышать 25х 25 см. Ограничения веса нет. Соревнования летающих роботовСоздать летающего робота, способного осуществить самозапуск в воздух, достичь площадки сброса размером 7,5х 7,5 м, найти произвольно расположенную цель в зоне сброса и сбросить на нее маркер, а потом вернуться на стартовую площадку. Смешанные соревнованияЕсли вы построили робота, не попадающего в указанные категории, то можете поучаствовать в смешанном зачете. Руководство по ВЕАМ-роботам Вы можете заказать 120-страничное руководство по ВЕАМ за $20,00. Платежный чек нужно отправить в Университет Калифорнии, ВЕАМ games. Текущую переписку можно вести по адресу: BEAM Robot Olympics c/o Mark W. Tilden Mail Stop D449 Los Alamos National Labs Los Alamos, NM 87545 (505)667-2902 Интернет-адрес для ВЕАМ games: http://www.nis.lan1.gov/projects/robot/ Принимайте участие Соревнования по ВЕАМ доступны всем любителям робототехники. Вы можете поучаствовать в соревнованиях или просто получить удовольствие. Для получения текущей информации свяжитесь с Олимпийским комитетом по ВЕАМ-играм по адресу, указанному выше. На следующем сайте вы найдете информацию по изготовлению робота – солнечного шара. |
|
||
Главная | Контакты | Прислать материал | Добавить в избранное | Сообщить об ошибке |
||||
|