Назад в библиотеку

Вы что, с ума сошли? Включите JavaScript!

Управление простым мобильным роботом с помощью нейронной сети

Автор: Mitchell R.J. and Keating D.A.

Автор перевода: Бровкина Д.Ю.

Источник: Department of Cybernetics, The University of Reading, Reading, UK


Аннотация



В последние годы исследователи Кафедры Кибернетики разрабатывали простых мобильных роботов, способных исследовать свое окружение на основе информации, получаемой от нескольких простых датчиков. Эти роботы исспользуются как тестовая основа для изучения различного поведения одного или нескольких организмов: на работу вдохновило изучение природных систем. Данная статья сконцентрирована на той части работы, которая включает нейронные сети и связанные с ними технологии. Эти нейронные сети используются как для обработки информации, получаемой от датчиков, так и для разработки стратегии управления роботом. Далее описаны эти роботы, их датчики и используемая нейронная сеть.


1. Вступление



Разработка интеллектуальных машин, которые могут обучаться с помощью своего окружения, весьма интересна. Были произведены некоторые машины, у которых много датчиков, иногда включая видеокамеры с высоким разрешением, которые требуют значительной компьютерной мощности для обработки информации, которая поступает в машину, а также еще больше обработки необходимо выполнить для определения подходящей реакции на эту информацию.

Исследователи Кафедры Кибернетики Университета Ридинг верят, что лучше всего начинать с более простых систем. Также мы верим, что многому можно научиться у природы, в частности поведению простых организмов, подобных насекомым.

Поэтому было разработано множество простых мобильных роботов, которые являются небольшими маломощными устройствами и которые могут быстро действовать в ответ на то, что они воспринимают из своего окружения.

Изначально эти устройства, оснащенные двумя простыми ультразвуковыми датчиками, были запрограммированы двигаться согласно простым правилам и информации с датчиков. Далее добавляется система обучения, чтобы позволить роботу учиться этим правилам. После этого был добавлен дополнительный сложный глаз, а нейронная сеть позволила роботы выучить различные позиции в комнате. Следующий этап роботы - использовать глаз и датчикы, чтобы позволить роботу ориентироваться в своем окружении и возвращаться в узнаваемую позицию. Ниже описаны все эти разные этапы. Есть также связанная работа, не описанная здесь, посвященная коммуникации между разными роботами, которая позволяет им делиться опытом и обучением.


2. «Роботы-насекомые»



Уже было постоено множество таких «роботов-насекомых». Первое устройство имело моторы, которые были черезчур мощными, и робот передвигался слишком быстро: робот был установлен в лаборатории, он разгонялся, видел стену и поворачивал, чтобы избежать столкновения, и так какждый раз при виде стены он пытался ее избежать, но все происходило слишком быстро. Также был построен настольный робот, который мог обнаружить край стола и отъехать от него. Однако в данных случаях робот не мог обучаться, так как обучение предполагает совершение ошибок! В результате было построено семь простых роботов, уменьшенные версии оригинального робота, которые стали известны как «семь гномов» и которые не содержали микропроцессора. В дальнейшем были построены более сложные роботы, оснащенные маломощным процессором и несколькими датчиками.

Роботы «семь гномов» имеют два ультразвуковых датчика, которые позволяют им определять, как далеко находится ближайший объект, расположенный напротив датчика, а также два мотора, каждый из которых может быть запущен на движение вперед или назад с заданной скоростью. Действия робота определялись просмотром таблицы, записанной в EEROM (англ. Electrically Erasable Programmable Read-Only Memory - электрически стираемое перепрограммируемое постоянное запоминающее устройство). Двоичный шаблон, соответствующий данным от ультразвуковых датчиков, передается на адресную шину EEROM, а значение, расположенное по этому адресу, определяет скорость и направление каждого двигателя. Таким образом, содержимое EEROM определяет набор простых поведенчесских реакций. Различные формы поведения могут быть выбраны с помощью DIL переключателей, которые обеспечивают дополнительные адресные шины для EEROM. Структурная схема робота приведена на рисунке 1.

Структурная схема простого робота

Рисунок 1 – Структурная схема простого робота

Таблица в EEROM генерируется специальной программой, которая используется в лабораторных работах студентов первого курса. Студент пишет, что должен делать робот в завичимости от информации, предоставленной датчиками, написанием одной процедуры - остальная часть программы генерирует подходящие вызовы этой процедуры, в результате чего заполняется массив, который посылается в программатор EEROM. Далее EEROM загружается в робота. Типичная Modula-2 процедура для движения с обходом препятствий приведена ниже: остальные поведенческие реакции могут запрограммированы написанием правил в других процедурах.

PROCEDURE Mode (Range: INTEGER; LeftNotRight: BOOLEAN; VAR LeftSpeed, RightSpeed: INTEGER);
(* Range - это расстояние до ближайшего объекта (его значение в диапазоне 0..7);
LeftNotRight указывает, что объект находится ближе к левому глазу, а не к правому;
Данные значения необходимы для определения скорости двух моторов:
скорость изменяяется в диапазоне +4..-4: положительное значение означает движение вперед *)
BEGIN
  IF Range = 7 THEN (* если нет препятствий (или они слишком далеко) *)
    LeftSpeed := 4; RightSpeed := 4; (* двигаться вперед *)
  ELSIF Range < 4 THEN (* что-то очень близко *)
    LeftSpeed := -4; RightSpeed := -4; (* двигаться назад *)
  ELSIF LeftNotRight THEN (* ближайший шлаз - левый *)
    LeftSpeed := 4; RightSpeed := -4; (* поворот вправо *)
  ELSE (* ближайший глаз - правый *)
    LeftSpeed := -4; RightSpeed := 4; (* поворот влево *)
  END
END Mode;

Программирование роботов подобным образом было очень успешным, предоставляя хорошую практику в решении проблем и программировании. Однако роботы могли действовать только запрограммированным образом, они не могли учиться.

Таким образом, роботы были затем оснащены дополнительным микропроцессором Z80, который заменяет EEROM, принимая информацию от датчиков, обрабатывая эту информации и управляя двигателями. Это означает, что робот может действовать как и раньше, но с Z80, имитирующим таблицу действий, или соответствующая программа на Z80 может позволить роботу 'учиться' своим действиям. Структурная схема Z80 приведена на рисунке 2.

Контроллер Z80

Рисунок 2 – Контроллер Z80

Z80 взаимодействует с глазами насекомого через буфер и со скоростью насекомого через защелку: и буфер, и защелка подключены непосредственно к EEROM насекомого. Z80 имеет 32 Кб EPROM и 32 Кб статической оперативной памяти (ОЗУ), контрольную схему, которая позволяет Z80 автоматически выключаться, чтобы потреблять меньше энергии, а также программируемую пользователем вентильную матрицу, FPGA. FPGA обеспечивает декодирование адреса для памяти и периферийных устройств (и дает возможность дальнейшего расширения), генератор случайных чисел и UART, который используется для связи.

Впоследствии новые версии насекомых были построены с двигателями и ультразвуковыми датчиками, соединенными более обычным способом, а не посредством EEROM. Более модульный дизайн новых роботов также позволяет подключить дополнительные схемы, чтобы обеспечить работу дополнительных датчиков, таких как сложный глаз,а в дальнейшем и систем связи.


3. Нейронная сеть для обхода препятствий




В этом разделе описывается, как нейронная сеть используется, чтобы позволить насекомому научиться двигаться в своем окружении, избегая препятствий. Обучение достигается с помощью соответствующей программы, работающей на Z80, эмулирующем нейронную сеть.

На создание данной техники, как и на создание самих «насекомых», ученых вдохновила природа. Когда ребенку показывают игрушку, он инстинктивно хочет ее схватить, но не знает как. Ребенок может двигать своими руками и ногами, но он не знает, какие мышцы контроллируют какую часть тела. Поэтому изначально и происходят случайные движения. Со временем ребенок перестает двигать ногами, понимая, что ими нельзя схватить игрушку. Дальше ребенок учится координировать обеими руками, и, наконец, у него получается схватить игрушку. Таким образом, ребенок учится соответствующим действиям методом проб и ошибок: пробуются различные действия, и успех или неудача действий используются для определения выбора последующего действия.

Таким образом, роботы требуют различных действий, средство выбора действий, критерии оценки действий и стратегию переоценки выбора своих действий. Метод, используемый для реализации этих идей пришел из концепции нечетких автоматов, но который также можно рассматривать как тип нейронной сети Хопфилда с использованием модифицированного обучения Хебба. Это подробно описано в [5], а краткое описание приведено ниже.


3.1. Стратегия обучения



Основная идея заключается в том, что у устройства есть ряд возможных действий и связанная с каждым действием вероятность выбора этого действия. Это привычно, что будет выбрано именно действие с наибольшей вероятностью. Затем выбранное действие выполняется, его успехоценивается и эта оценка используется для регулировки вероятностей: если действие было хороим, тогда вероятность действия возрастает, если плохим, то вероятность уменьшается. По сути, хорошее действие вознаграждается, плохое - наказывается.

Насекомым доступны 9 действий - каждый мотор может задавать движение вперед, назад или быть выключенным. Кроме того, вместо постоянного выбора действия с наибольшей вероятностью используется техника «средневзвешенной рулетки», при которой действие с наибольшей вероятностью скорее всего будет выбрано. Одной из причин использования данного метода является попытка избежать того, чтоб система попала в ловушку локальных минимумов. Действительно, вероятность никогда не должна быть сведена к нулю: поэтому всегда есть шанс, что на каждое действие может быть выбрано на какаом-то этапе.

Необходимо было тщательно продумать, как будет определяться, было ли действие успешным. Целью было составить простые правила отвечающие здравому смыслу, которые косвенно будут указывать насекомому, как себя вести. Правила были выбраны следующим образом:

   Если перед роботом ничего нет, то двигаться быстро вперед хорошо.
   Если робот близок к препятствию, то отъехать от него хорошо.
   Если робот достаточно близок, то используется комбинация из этих правил.

Эти правила закодированы, чтобы показывать фактор «хорошести», α, который может быть положительным (хорошо) или отрицательным (плохо), и этот фактор используется для регулировки вероятностей согласно следующему (здесь m - это количество действий, n - номер выбранного действия, pn - вероятность выбранного действия, и pj - это вероятность j-го действия (где j = 1..m, и j<>n):

  IF α>= 0 THEN (* действие было успешным *)
    pn:= pn+ α(1 - pn) (* увеличить вероятность выбранного действия *)
    pj:= pj(1 - α) (* уменьшить вероятность выбранного действия *)
  ELSE (* действие было неуспешным *)
    pn:= pn- α(* уменьшить вероятность выбранного действия *)
    pj:= pj + α/ (m-1) (* увеличить вероятность других действий *)
  END

Недостаток этого метода заключается в том, что наиболее подходящее действие для движения, когда возле насекомого нет препятствий, скорее всего будет отличаться от действия, необходимого для того, чтобы отъехать от объекта.

Поэтому используются пять наборов действий, каждый со своим набором вероятностей: нет видимых препятствий; препятствие достаточно близко слева; препятствие достаточно близко справа; препятствие очень близко слева и препятствие очень близко справа. В любом случае текущая информация от датчиков будет определять один выбранный набор действий.

Это может рассматриваться как сеть Хопфилда с модифицированным обучением Хебба, как показано на рисунке 3. Входные данные сети являются булевыми значениями, которые определяют один выбранный набор действий - на рисунке только четвертый вход находится в активном состоянии. Все элементы в колонке - это вероятности, связанные с набором действий. Возможные выходные данные - это состояние каждого мотора - каждый мотор может быть в состоянии движения назад B (от backward), F (от forward) и O (от off). Одно действие выбирается в зависимости от вероятностей - на рисунке это BF - левый мотор задает движение назад, а правый - вперед. Это действие оценивается, и если оно хорошее, то вероятность действия в выбранной коленке возрастает. Ассоциация выбранного действия с заданной входной информацией усилена.

Cеть Хопфилда

Рисунок 3 – Cеть Хопфилда


3.2. Результаты



Сначала было проведено моделирование данного метода, в модели все проходило очень хорошо, и только потом методика была применена к самим насекомым, и тут уже методика показала себя тоже хорошо, но не так идеально, как в модели. Частично это потому, что модель не передает в точности динамику движения насекомого. Также модель предполагает идеального отклика ультразвуковых датчиков. Была также проблема с двумя ультразвуковыми датчиками: когда робот приближается к стене под острым углом, запуск левого мотора на движение вперед, а правого - назад осуществляет, как и следовало ожидать, то, что робот двигается от стены. Однако если робот прибижается к стене под большим углом, то же самое (правильное) действие изначально вызывает то, что робот приближается к стене. Эти два противоречивых результата получаются при одном и том же наборе входных данных. В результате был добавлен третий глаз между двумя первыми для генерирования значения диапазона в оценке успеха выбранного действия.

Несмотря на эти проблемы, роюот учится правилам, подобным приведенным в процедуре ранее, всего за несколько минут. На самом деле правила, которым он учится, не одинаковы каждый раз (к примеру, есть три комбинации скоростей мотора, которые позволяют роботу повернуть направо: FB, FO и OB), и полученные правила определяются опытом робота, полученным во время обучения.

Стоит заметить, что эта успешная стратегия обучения осуществляется с помощью 8-битного микропроцессора 20-летней давности, работающего по 5-килобайтной программе и использующего 100 байт статической оперативной памяти.


4. Сложный глаз



Робот может выполнять простую задачу исследования своего окружения, избегая препятствий, насмотря на (или, наверно, благодаря) свою очень простую систему датчиков. Однако было решено, что более сложный датчик нужен, чтобы улучшить возможности обучения робота и позволить ему обучиться более сложным задачам. Модульная конструкция робота позволяет легко добавить дополнительные датчики. На тип выбранного датчика исследователей снова вдохновила природа.

Учитывая сложное поведение, распространенное в мире насекомых, исследовались их зрительные органы с целью создания электронного аналога. Было отмечено, что многие насекомые обладают парой сложных глаз, выпирающих из головы, с широким полем зрения. Глаза не могут двигаться, имеют короткий визуальный ряд и обладают фиксированным фокусом. Каждый сложный глаз может содержать до 10000 или больше простых фоточувствительных клеток, каждая из них со своей собственной линзой. Сперва был разработан прототип глаза, эксперименты на котором продемонстрировали возможность техники, но также подчеркнули и некоторые проблемы, поэтому впоследствии был произведен более продвинутый. В следующих разделах описаны тесты и методы, используемые для обоих глаз.


4.1 Первый сложный глаз



Чтобы исследовать, насколько полезна простая система видения может быть для кибернетических насекомые, были построены небольшие сложные глаза. Такой глаз состоит из трехмерного массива из пятнадцати светочувствительных резисторов (LDRs), установленных на пятнадцати гранях усеченного икосаэдра. Схема обработки выходного сигнала LDRs установлена в поле под глазом.Глаз показан на рисунке 4а.

Каждый LDR производит выходное напряжение в зависимости от падающего на него света. Аналоговый мультиплексор выбирает, на каком LDR в данный момент проводятся измерения, и передает связанное с ним напряжение на аналого-цифровой преобразователь, который дает цифровой выходной сигнал этого напряжения: структурная схема этого блока приведена на рисунке 4b.

Первый глаз

Рисунок 4 – Первый глаз


4.2 Оценка позиции робота



Выходная информация из сложного глаза состоит из массива из пятнадцати значений, оцифрованных в диапазон [0 .. 255]. Эти величины должны быть обработаны насеком для данного приложения, а выбранное приложение нужно для насекомых, чтобы иметь возможность распознавать свое положение в пределах его окружения.

Это проблема распознавания образов, поэтому было решено применить нейронную сеть к данным из глаза. Учитывая, что насекомое было оборудовано только одним микропроцессором Z80, было высказано мнение, что нужна простая нейронная сеть, без интенсивных вычислений, которая быстро обучается и которую, вероятно, можно впоследствии реализовать аппаратно. Очевидный выбор, учитывая опыт исследователей на кафедре, заключался в использовании невесомой или н-кортеж сети.


4.3 Невесомая сеть



Невесомая сеть состоит из множества нейронов, причем каждый нейрон представляет собой оперативное запоминающее устройство (ОЗУ), которое обрабатывает часть входных данных. Изначально все позиции в ОЗУ обнулены.

Когда нейроная сеть обучается входным данным, n битов случайно выбираются из входных данных, формируя кортеж, этот кортеж используется для адресации первого ОЗУ, единица записывается в адресованную позицию. Таким образом, одним представлением данных ОЗУ учится этому кортежу. Этот процесс повторяется, выбирая входные данные для формирования следующего кортежа и обучая следующее ОЗУ этому кортежу, пока все ОЗУ не выучат кортеж.

Когда сеть анализирует входные данные, кортежи формируются как и раньше,но при этом считается, сколько ОЗУ узнало свой кортеж, то есть сколько ОЗУ имеют единицу в своей адресованной позиции.

Если входная информация сети точно такая же как и та, которую уже выучили, то 100% ОЗУ будут об этом сигнализировать. Такая нейронная сеть, следовательно, сможет узнавать входные данные, которым ее обучили. Однако, система должна быть способна узнавать одинаковые входные данные, которым она еще не была обучена: она должна быть способна обобщать.

Это достигается путем обучения сети ряду похожих входных данных. Затем, к примеру, представляются входные данные, которые еще не были изучены, первое ОЗУ должно узнать первый кортеж из третьего набора входных данных, которые он выучил, второе ОЗУ должно узнать второй кортеж из седьмого набора входных данных, которые он выучил.


4.4 Мультидискриминаторная сеть



Один набор ОЗУ называют дискриминатором. Такой дискриминатор может быть обучен разным наборам данных и сможет сообщать, узнал ли он что-то из этих данных, но он не будет способен различать их между собой. Однако если в сети много дискриминаторов, то каждому набору данных обучается свой собственных дискриминатор, и система может сообщать, какой набор данных, если таковые имеются, от какого входного набора поступает.

Для робота различные наборы данных отражают различные позиции в комнате: каждой позиции обучается один дискриминатор. Таким образом, система должна быть способна сообщать, в какой части комнаты находится насекомое, оценивая, какой дискриминатор дал наибольший отклик.


4.5 Обработка данных на уровне серого




Кортежи выбираются из входных данных, состоящих из двоичных значений. Входные данные для глаза - 8-битные значения; каждое значение может быть переведено каким-то образом в двоичное значение. Есть три распространенных метода для этого: метод порогов, принцип кодирования типа термометра и ячейки Минчинтона; последние работы показали преимущества применения ячеек Минчинтона.

При методе порогов значение из входного набора сравнивается с константой, порогом, получая логическую единицу, если входное значение превышает порог. При использовании ячеек Минчинтона заданный бит в кортеже находится путем сравнения двух случайных выборок из входных данных, возвращая единицу, если первая выборка превышает вторую.


4.6 Невесомая сеть и первый глаз




Попытки использования стандартной невесомой сети с порогами оказались неуспешными, поэтому данные от глаза выбирались массивом ячеек Минчинтона, выходные данные которого передавались в 150 RAM мультидискриминаторной сети.

Для квантования окружения в одно из n положений, используется n дискриминаторов, которые обучаются характеристикам световых шаблонов отдельной части лаборатории, размером 4х2м. В первых экспериментах использовались 16 вискриминаторов в массиве [4x4], разнесенных с интервалами 0,5м по оси х и интервалами 1м по оси y. Для достижения инвариантности относительно вращений, каждый дискриминатор может быть обучен в пять поворотов на 72 градуса вокруг этой точки (см. рисунок 5).

Дискриминатор позиции

Рисунок 5 – Дискриминатор позиции

Был выбран кортеж с размером девять бит, чтобы обеспечить резкий ответ дискриминатора. Каждый дискриминатор обучался одиннадцатью наборами данных, собранных через случайные промежутки времени на протяжении недели. В лаборатории не пытались нормализовать освещение, расположение жалюзи на окнами либо внести еще какие-то изменения в обстановку.

Этот процесс затем повторили, используя те же данные, но в этот раз для обучения четырех дискриминаторов в обычном массиве [2x2], разнесенным по оси х на интервалы в 1м, а по оси у - 2м.


4.7 Результаты



На рисунке 6 показаны выходные данные из типичного дискриминатора для обоих тестов: слева отображен результат 2 * 2 теста, справа - результат 4 * 4 теста. Данные показывают ответ дискриминатора в различных положениях в окружающей среде: чем светлее область, тем сильнее отклик дискриминатора.

Результат для одного дескриминатора в каждом тесте

Рисунок 6 – Результат для одного дескриминатора в каждом тесте

Для теста 2 * 2 результат отображен для дискриминатора в левой верхней позиции; отклик глаза максимален, когда глаз находится в этой позиции, когда глаз от нее удаляется, уменьшается и отклик.

Для теста 4*4 отображен результат для дискриминатора, расположенного ближе к центру. Снова, отклик больше, когда глаз находится в этой позиции, и монотонно снижается, когда глаз удаляется от выученной позиции.

Такой же результат был получен для дискриминаторов в других позициях.


4.8 Второй глаз



В приведенных результатах повороты насекомого были проигнорированы. Однако когда насекомое поворачивалось, производительность системы была хуже, чем ожидалось. Это происходило из-за несовпадения фоторезисторов, которые давали большой разброс в выходных данных при случайных уровнях света. Это означает, что ОЗУ-нейроны имели слишком много выученных кортежей, нейроны насыщались, то есть «узнавали» слишком много слишком много входных шаблонов, то есть были неспособны различать позиции в комнате. Таким образом было отмечено, что 15 элементов недостаточно.

Поэтому был произведен шлаз второго поколения. У него 32 фототранзистора, расположенных на гранях половинок «шариков Баки», с связанной электроникой, встроенной внутрь шарика. Фототранзисторы хорошо согласуются друг с другом, поэтому они обеспечивают лучшую производительность при поворотах насекомого, а также имеют лучшее разрешение.

Эта схема обработки сигналов от фототранзисторов содержит два набора мультиплексоров и компаратор вместо АЦП, тем самым включяя процессоры ячеек Мичинтона. Использование компаратора вместо АЦП устраняет шум квантования. Это также уменьшает частоту шума питающей сети, который в противном случае может вызвать колебания данных с увеличением времени реакции фототранзисторов.

Структурная схема глаза и связанные с ними схемы показаны на рисунке 7.

Схема второго глаза

Рисунок 7 – Схема второго глаза

Глаза были встроены в робота и Z80 насекомого был настроен однодискриминаторной невесомой сетью. Затем насекомого обучили одной позиции в комнате, отклик сети показывал, когда робот был в другой позиции. Полученные результаты аналогичны результатам, приведенным на рисунке 6, но они также успешно достигаются и при поворотах насекомого.


5. Навигация



Выходная информация из сети глаза дает как указание на приблизительное положение в комнате, так и указание направления, которому робот должен следовать, чтобы достичь заданной позиции. Кроме того, ультразвуковые датчики предоставляют информацию, которая позволяет роботу избегать препятствий. Следующим этапом работы является описание того, как вся эта информация используется, чтобы позволить роботу поехать в заданную позицию, избегая любых препятствий на своем пути. Это должно быть достигнуто с помощью алгоритма, вдохновленного клинотаксисом насекомых, который они использует для навигации. Такое поведение вдохновило на создание алгоритма хемотаксиса, основной идеей которого используется в качестве альтернативы резервному распространению в многослойном перцептроне нейронной сети.

Ключевым в результатах работы глаза является то, что выходная информация сети монотонно уменьшается с удалением насекомого от выученной позиции.

Идея навигации заключается в следующем. Роботу задают произвольное направление движения, и он продолжает двигаться в этом направлении, пока не определит, что двигается от своей желаемой позиции назначения. Это решение может быть принято с использованием сложного глаза: если отклик дискриминатора с выученной желаемой позицией уменьшается, то насекомое движется не в том направлении. В таком случае насекомое произвольно выбирает другое направление, и процесс повторяется. В конце концов, робот достигает желаемой позиции.

Однако на его пути могут быть препятствия. Поэтому встроена система приоритетов: если нет видимых препятствий, то используется метод хемотаксиса, но если есть препятствия, выполняется обход препятствий с помощью ультразвуковых датчиков, чтобы определить, как должен двигаться робот.

Пока что данная методика была только промоделирована, хотя правила обучения и сложный глаз были успешно использованы на реальных роботах.


6. Выводы



В данной статье рассмотрены исследования, которые были выполнены на Кафедре Кибернетики на простых мобильных роботах, частично исследование включает нейронные сети. Во-первых, сеть, подобная сети Хопфилда, была исспользована, чтобы позволить роботу учиться, как двигаться в своем окружении, избегая препятствия. Далее выл описан сложный глаз со своей нейронной сетью для обработки информации. Наконец, была изложена методика, основанная на алгоритме с использованием нейронной сети, для объединения двух сетей для навигации робота к позиции, которую он узнает в его окружении.


Ссылки



  1. R.J.Mitchell, D.A.Keating and C.Kambhampati, Learning System for a Simple Robot Insect, Proc. Control '94, pp: 492-497, 1995
  2. K. Narendra and M.A.L. Thathachar, Learning Automata: an introduction, Prentice-Hall, 1989.
  3. J.J.Hopfield, Neural Networks and physical systems with emergent collective properties. Proc. Nat.Acad.Sci., USA 79. 2554-8, 1992
  4. D.E.Hebb, The Organisation of Behavour, Wiley, 1949.
  5. R.J.Mitchell, D.A.Keating and C.Kambhampati, Neural Network Controller for Mobile Robot Insect, Proc. EURISCON '94, pp: 78-85, 1994.
  6. I.Aleksander and T.J.Stonham, Guide to pattern recognition using random-access memories, IEE proceedings pt E, 2, 1, pp29-40, 1979.
  7. I.Aleksander and M.J.D Wilson, Adaptive windows for image processing, IEE proceedings pt E, 132, 5, pp233-245, 1985.
  8. J.M.Bishop, P.R.Minchinton & R.J.Mitchell, Real Time Invariant Grey Level Image Processing Using Digital Neural Networks, Proc IMechE Conf. EuroTech Direct '91, pp: 187-199, 1991.
  9. R.J.Mitchell, J.M.Bishop, S.K.Box and J.F.Hawker, Comparison of methods for processing ‘grey’level data in weightless networks, Proc Weightless Neural Network Workshop 1995, pp76-81, Univ. of Kent, 1995.
  10. P.J.Gullan and P.S.Cranston, The Insects: An Ouline of Entomology, Chapman and Hall, 1994.
  11. H.J.Bremermann and R.W.Anderson, An alternative to Back-Propagation: a simple rule for synaptic modification for neural net training and memory, Internal Report, Dept of Maths, Uni of California, Berkeley, 1989.