Текст книги "Создаем робота-андроида своими руками"
Автор книги: Джон Ловин
Жанр: Зарубежная образовательная литература, Наука и Образование
сообщить о неприемлемом содержимом
Текущая страница: 13 (всего у книги 22 страниц)
‘Микроконтроллер 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 м, найти произвольно расположенную цель в зоне сброса и сбросить на нее маркер, а потом вернуться на стартовую площадку.
Смешанные соревнования
Если вы построили робота, не попадающего в указанные категории, то можете поучаствовать в смешанном зачете.
Правообладателям!
Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.