Джон Ловин - Создаем робота-андроида своими руками
goto start: ‘Если внутри границ, измерять снова
cw: ‘Поворот блока по часовой стрелке
high 0 ‘Включить мост
pause 100 ‘Вращение 0,1 с
goto start ‘Новая проверка
сcw: ‘Поворот блока против часовой стрелки
high 1 ‘Включить мост
pause 100 ‘Вращение 0,1 с
goto start: ‘Новая проверка
Работа устройстваПри работе система слежения поворачивается вслед за перемещением источника света. Если оба CdS фотоэлемента освещены примерно одинаково, то поворота не происходит. Для проверки работы устройства закройте пальцем один из CdS датчиков. Это должно вызвать включение двигателя и поворот вала редуктора.
Если вал вращается в направлении, противоположном заданному, то поменяйте либо входные проводники датчиков, либо выходные проводники управления мостовой схемой, но не обе операции одновременно.
Выход, не использующий нечеткую логикуУстройство системы слежения с нечеткой логикой имеет двоичный выход. Двигатель может находиться в трех состояниях: выключено и вращение по и против часовой стрелки. Во многих случаях требуется плавное (градуальное) изменение выходного сигнала. Допустим, вы проектируете устройство управления двигателем лифта. Необходимым условием в данном случае будет постепенное, а не резкое ускорение или остановка лифта (двигатель не должен просто включаться и выключаться).
Возможно ли подобное изменение схемы нашего устройства? Да, конечно. Вместо простого включения двигателя, мы можем запитывать его сигналом ШИМ, который управляет скоростью его вращения.
В идеале скорость вращения двигателя должна быть пропорциональна разнице показаний (сопротивлений) двух CdS датчиков. Большая разница будет приводить к большей скорости вращения. По мере вращения датчика и приближения его к положению равновесия скорость вращения двигателя будет динамически изменяться.
Такая программа управления выходом может быть иллюстрирована графиками, разбиениями на группы и принадлежностью к группе в терминах нечеткой логики. В данном случае использование подобной программы для системы слежения является избыточным.
В целях эксперимента вы можете использовать команды pulsout и pwm для управления скоростью вращения двигателя.
Нейронные датчики (логика)При помощи простой программы мы можем превратить датчики нечеткой логики (CdS фотоэлементы) в нейронные датчики. Нейронные сети представляют собой обширную область, мы же ограничимся одним небольшим примером. Для тех, кто решил углубленно изучить строение нейронных сетей, я рекомендую собственную книгу Understanding Neural Networks (Prompt, Indianapolis, 1998, ISBN 0-7906-1115-5).
Для создания нейронного датчика мы возьмем численные значения каждого датчика, умножим их на соответствующие весовые коэффициенты и суммируем результирующие величины. Полученный результат затем будет сравниваться со значением трехуровневого порогового значения (см. рис. 6.36).
Рис. 6.36. Схема трехуровневого нейрона
Наша небольшая программа и датчики могут выполнять все функции, присущие нейронной сети. Более того, введение многоуровневых пороговых значений является нашей оригинальной разработкой. Существуют ли многопороговые системы в природе (биологические системы)? Да, несомненно. Зуд или чесотка представляет собой очень незначительную по уровню боль, а жжение может ощущаться как жары, так и от действия холода.
Многоуровневые пороговые значенияКак правило, отдельные нейроны нейронной сети имеют единственный порог (положительный или отрицательный). Если значение превышает пороговое, то нейрон активируется. В нашем случае выходной сигнал сравнивается с несколькими пороговыми значениями и попадает, таким образом, в соответствующую группу.
Вместо того чтобы рассматривать группы выхода как диапазоны численных значений, воспользуемся геометрической интерпретацией. Рассмотрим группы как группы круга, квадрата и треугольника соответственно. При накоплении значения «на нейроне» его выходом будет служить геометрическая форма, а не численное значение. Выходные нейроны (светодиоды) могут быть собраны в матрицы соответствующей формы. При попадании сигнала в определенную группу загорается соответствующая матрица.
В нашем случае каждый из уровней выхода нейрона мы будем относить к трем группам характерного «поведения»: спячке, охоте и кормлению, которые отражают основные типы поведения «выживания» для робота «охотника за светом». Выбор типа «поведения» основывается на текущем уровне освещенности. При низком уровне освещенности робот-охотник прекращает охоту и поиски пищи (света). Включается режим сна или спячки. При средних уровнях освещенности робот «охотится» и выискивает места с наибольшим уровнем света. При высоких уровнях освещенности «охотник» останавливается и «питается», подзаряжая солнечные батареи.
В этой главе мы не будем изготовлять полную модель робота-охотника, лишь ограничимся использованием светодиодов как индикаторов типа соответствующего поведения (см. рис. 6.37). Можно обозначить светодиоды как «спячка», «охота» и «питание». Каждый из светодиодов зажигается в зависимости от интенсивности светового потока, принимаемого CdS фотоэлементами.
Рис. 6.37. Схема основной нейронной цепочки
Программа на PICBASIC имеет следующий вид:
‘Демонстрация работы нейрона
‘Установка параметров
low 0 ‘Светодиод 1 «спячка» выключен
low 1 ‘Светодиод 2 «охота» выключен
low 2 ‘Светодиод 3 «питание» выключен
start:
pot 3,255,b0 ‘Считывание показаний первого датчика
pot 4,255,b1 ‘Считывание показаний второго датчика
w2 = b0 * 3 ‘Умножение на весовой коэффициент
w3 = b1 * 2 ‘Умножение на весовой коэффициент
w4 = w2 + w3 ‘Сложение результатов
‘Установка пороговых значений
if w4 < 40 then feed ‘Много света. Питание
if w4 <= 300 then hunt ‘Света среднее количество. Охота
If w4 > 300 then snooze ‘Света мало. Спячка
‘Действия
feed: ‘Кормление
low 0
low 1
high 2
goto start:
hunt: ‘Охота
low 0
high 1
low 2
goto start:
snooze: ‘Спячка * не использовать ключ sleep *
goto start
Список необходимых частей для программирования микроконтроллера
• компилятор PSIBASIC
• компилятор PSIBASIC Pro (включая CodeDesignerLit)
• программатор EPIC
• компилятор PICBASIC и программатор EPIC
• CodeDesigner любительская версия
• CodeDesigner стандартная версия
• 16F84-4 1 шт.
• кварцевый резонатор 4,0 МГц
• конденсатор 22 пФ 2 шт.
• конденсатор 0,1 мкФ
• конденсатор 100 мФ 12 В
• резистор 4,7 кОм 0,25 Вт
• резистор 470 Ом 0,25 Вт
• стабилизатор напряжения 7805
• светодиод миниатюрный
• плата макетная
• Набор для экспериментов PIC–LED-02 (Включает: PIC16F84 (1), кварц 4,0 МГц (1), конденсатор 22 пФ (2), резистор 10 кОм 0,25 Вт (1), регулятор напряжения 7805 (1), макетная плата (2,1" х 3,6", 270 монтажных отверстий)(1), резистор 470 Ом (8), миниатюрный светодиод (8), кнопка-выключатель (1), руководство по двоичному коду, логике и портам ввода/вывода А и В)
• Сервомотор с усилием 1,3 кгс
Список деталей для системы слежения за направлением источника света и демонстрационного нейрона
• (2) CdS фотоэлемент
• (1) датчик изгиба (номинальное сопротивление 10 кОм)
• (2) конденсатор 0,22 мкФ
• (1) конденсатор 0,01 мкФ
• (4) транзистор NPN TIP 120 Darlington
• (2) резистор 10 кОм
• (б) диод 1N514
• (2) резистор 1 кОм
• двигатель с редуктором 4000:1
Детали можно заказать в:
Images Company
James Electronics
JDR MicroDevices
Radio Shack
Images SI, Inc.
39 Seneca Loop
Staten Island, NY 10314
(718) 698-8305
(718) 982-6145 (fax)
• (1) Макетная плата – Radio Shack PN# 276-175
• (1) конденсатор 0,1 мкФ – Radio Shack PN# 272-1069
• (8) Светодиод красный – Radio Shack PN# 276-208
• (8) Резистор 470 Ом – Radio Shack PN# 270-1115
• (1) Резистор 4,7 кОм – Radio Shack PN# 271-1124
• (8) Резистор 10 кОм – Radio Shack PN# 271-1126
• (1) Регулятор напряж. 7805 – Radio Shack PN# 276-1770
• (2) Выключатель 4 позиц. – Radio Shack PN# 275-1301
• Зажим батареи 9 В – Radio Shack PN# 270-325
Детали можно заказать в:
Radio Shack
James Electronics
JDR MicroDevices
Глава 7
Передвижной робот с голосовым управлением
Речь является идеальным способом управления и коммуникации в робототехнике. Схема устройства распознавания речи (УРР), которой будет посвящена эта глава, функционирует независимо от основного «интеллекта» роботы (ЦПУ). Этот факт является позитивным, поскольку ресурс ЦПУ робота не используется для решения задачи распознавания речи. Задача ЦПУ сводится к тому, чтобы время от времени опрашивать шины выхода устройства распознавания для обнаружения возможных поступивших речевых команд. Данный процесс может быть оптимизирован путем подключения одной из выходных шин устройства распознавания к шине прерываний ЦПУ. При этом распознаваемое слово вызовет прерывание, оповещая ЦПУ, что команда была произнесена. Преимущество использования прерывания в том, что при этом отпадает необходимость постоянного опроса состояния устройства распознавания, что, таким образом, экономит ресурс ЦПУ.