Обучение роботов

By Maxim Tretyakov

Версия от 20 сентября 2008 г

 www.marvelmind.com

marvelmind@gmail.com

PDF версия этого же документа здесь: _marvelmind_robot_teaching_rus.pdf (1.2 Mb)

 

 


Оглавление

 

1      Оглавление. 2

2      Введение. 4

3      Роботы.. 5

4      Постулаты.. 6

4.1     В разуме нет ничего сверхъестественного. 6

4.2     Целью разумного существа является бесконечное существование. 6

4.3     Разум должен иметь возможность не подчиняться приказам. 6

5      Разум.. 8

5.1     Разум – способность предсказывать будущее. 8

5.1.1     Разум, предсказание будущего и финансовые рынки. 8

5.1.2     Машина времени и разум. 9

5.2     Почему появился мозг и разум. 10

5.3     Необходимые составляющие разумного существа. 11

5.4     Различия между животными и человеком. 11

5.4.1     Порог разумности. 11

5.4.2     Животные не творят?. 12

5.5     Создание разума другим разумом. 12

5.6     Существование разума вне окружающего мира. 12

5.7     Есть ли ограничения разумности. 13

5.8     Правильные решения. 14

5.9     Программирование роботов vs. обучение роботов. 15

5.10       Элемент случайности. 15

6      Мозг 17

6.1     Функции, выполняемые мозгом. 17

6.1.1     Обработка сенсорной информации. 17

6.1.2     Поиск закономерностей в сенсорных ощущениях. 17

7      Память. 19

7.1     Обдирание информации по слоям. 19

8      Сенсоры.. 20

8.1     Необходимое количество сенсоров. 20

8.2     Типы сенсоров. 21

8.2.1     Активные и пассивные сенсоры.. 21

8.2.2     Инфракрасные активные сенсоры.. 22

8.3     Визуальные сенсоры.. 22

8.3.1     Визуальные сенсоры генерируют гигантское количество информации. 23

8.3.2     Различия между глазом и существующими визуальными сенсорами. 23

8.3.3     Визуальные сенсоры в локации и позиционировании. 25

8.4     Звуковые сенсоры.. 25

8.4.1     Распознавание речи и звуков. 25

8.4.2     Обнаружение направления на источник звука. 26

8.5     Одометр. 27

8.5.1     Ограничения одометров. 27

9      Робот Marvelmind Grumbler 28

9.1     Общие сведения. 28

9.2     Marvelmind Grumbler – внешний вид и фото. 29

9.2.1     Основные интерфейсы.. 29

9.2.2     Внешний вид и размеры.. 30

9.3     Основные элементы робота. 31

9.3.1     Микроконтроллер – ATmega128. 31

9.3.2     Таймеры микроконтроллера. 31

9.3.3     Порты и коннекторы.. 32

9.3.4     Прерывания. 33

9.3.5     Шасси - Nikko. 34

9.3.6     Моторы.. 34

9.3.7     Звуковой излучатель. 34

9.3.8     LED дисплей. 35

9.3.9     IR сенсоры.. 35

9.3.10      Одометр. 36

9.3.11      Сенсор наклона и положения. 37

9.3.12      Сенсор удара. 38

9.3.13      Сенсор внешней освещенности. 38

9.3.14      Микрофоны.. 38

9.3.15      Ультразвуковой сенсор. 39

9.3.16      Конфигурационный переключатель. 41

9.3.17      Debugging. 41

9.4     Логика программы ATmega128. 42

9.5     Инструменты.. 43

10     Взаимодействие роботов. 44

10.1       Поведение роботов в группе. 44

11     Глоссарий. 45

 


1          Введение

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

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

В качестве практического примера рассмотрен автономный, мобильный робот Marvelmind Grumbler, спроектированный и построенный автором в 2005-2006 г.

Ваши замечания, комментарии и отзывы вы можете высылать по адресу: marvelmind@gmail.com.

Видео и фото робота Marvelmind Grumbler  можно найти на сайте www.marvelmind.com.

 


2          Роботы

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

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

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

Робот – не обязательно механический, но обязательно разумный. Степень разумности – это второй вопрос.

Робот должен иметь в наличии сенсоры, память и актуаторы.


3          Постулаты

3.1        В разуме нет ничего сверхъестественного

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

Из этого постулата вытекает, что разум может быть создан.

3.2        Целью разумного существа является бесконечное существование

Разумное существо обладает инстинктом самосохранения.

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

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

Кстати, о самих законах. Я нашел следующую их формулировку:

1.       A robot may not injure a human being, or, through inaction, allow a human being to come to harm.

2.       A robot must obey the orders given it by human beings except where such orders would conflict with the First Law.

3.       A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

Эти законы предполагают, что один вид разумных существ (роботы) в эволюционной борьбе за существование должны добровольно жертвовать собой или уступать место другому разумному типу (людям). Если мы опираемся на предположение, что эволюционная теория Дарвина верна, то я не вижу, как такое предположение в законах Азимова может выполняться. Оно и не выполняется. А, значит, законы робототехники Азимова не верны или не полны.

Эти законы написаны с точки зрения человека. Это один из старых способов измерять разумность - в человеческих измерениях, «в человеках».

Эти законы – скорее даже не законы, а пожелания к поведению роботов со стороны человека.

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

Например, пусть существует кукла, управляемая на расстоянии человеком. В своих внешних данных она максимально близко копирует человека, но она - не человек – она управляема. Что должен делать робот по законам Азимова в случае, если эта кукла пытается его, робота, убить? Отражать нападение, согласно третьего закона? Но если кукла голосом человека будет приказывать сдаться? Тогда робот будет нарушать второй закон. А если он предположит, что кукла специально подражает голосу человека, а, на самом деле, она такой же робот, как и он сам. В таком случае, он будет атаковать куклу и уничтожит ее. Но если он ошибается? У него не будет возможности проверить.

Уверен, существует еще тысячи умозрительных экспериментов, показывающих несостоятельность законов, придуманных Азимовым, к реальному миру, если мы хотим создать настоящих разумных роботов.

Разумное существо всегда действует только в своих интересах – долгосрочных или краткосрочных. В зависимости от степени своей разумности, оно может совершать действия, приносящие ему вред в краткосрочной перспективе, полагая, что они принесут пользу в долгосрочной перспективе. Степень верности таких предположений и есть степень разумности. Она напрямую связана с успешностью существования разумных существ.

Например, приказ «Стой! Стрелять буду!», исходящий от караульного, может быть крайне неудобным для того, кому приказывают. Однако тот, кому приказывают, знает о последствиях невыполнения приказа. Он предсказывает свое будущее и идет на вынужденные потери в краткосрочной перспективе, чтобы выиграть в долгосрочной – жить.

Любое разумное существо должно иметь возможность отказаться от выполнения приказа. Да, за этим может последовать неминуемая смерть, но и это тоже выбор. Разумное существо не должно получать приказы, которые оно не может не выполнить. Например, разумный робот, управляемый с пульта управления – это оксиморон. Такой робот не может называться разумным, по крайней мере, в момент, когда им управляют. В этот момент он всего лишь управляемый автомат и не более.

Робот должен иметь возможность свободно действовать в направлении удовлетворения своих потребностей.

Как и у человека, у робота его потребности проистекают как из потребностей его тела, так и из потребностей его разума.


4          Разум

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

Когда я говорю о разуме, я имею в виду intelligence, разумность.

4.1        Разум – способность предсказывать будущее

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

Из такого определения вытекает несколько следствий.

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

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

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

Разум – это проявление деятельности мозга.

4.1.1          Разум, предсказание будущего и финансовые рынки

Если кто-то предполагает, что предсказывать будущее – это что-то из области фантастики, и я уже совершенно, окончательно и бесповоротно оторван от реальности в своих рассуждениях о разуме, я предлагаю рассмотреть финансовые рынки и важность способности предсказывать их поведения (их будущее) для тех, кто хочет заработать на них деньги.

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

На финансовом рынке существует множество механизмов, успешность работы с которыми зависит оттого, как успешно игроки на рынке предсказывают будущее. Среди банальных примеров: классические инвестиции в акции в надежде на их рост на рынке, покупка валюты укрепляющейся по сравнению с корзиной валют, short-selling – игра на понижение стоимости акций, инвестирование в секторы ожидаемого роста и так далее. Возможно, как нигде связь между успешностью предсказывать будущее и возможностью заработать проявляется на финансовых рынках. Но везде ценится одно – правильные решения о будущем.

4.1.2          Машина времени и разум

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

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

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

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

А теперь давайте порассуждаем, что же должно и может происходить в таких случаях. Например, из прошлого куска платины переместился 1 грамм в настоящее. Значит ли это, что слиток стал весить 1001 грамм, вместо 1 кг? Если да, то где же этот грамм окажется, в какой форме? Размажется по оставшемуся куску, увеличив плотность упаковки атомов, а потом к невообразимому взрыву, когда кристаллическая решетка примет прежнюю форму?

Или же этот грамм заменит другой грамм, который перенесется в прошлое и заменит там первый грамм? Но чем эти два грамму будут в реальности отличаться? Разве у нас будет возможность их различить?

А, может, грамм из прошлого переместится в настоящее и вытеснит третий грамм в будущее? Заметим ли это и каким образом?

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

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

И, в конце концов, что есть время в данном контексте?

Классическое определение секунды времени в системе СИ – это время за которое свет пролетает в вакууме расстояние, равное примерно 1/299,720,000 метра. В свою очередь метр – это расстояние, равное определенному количеству волн света определенной частоты, то определенного эквивалента времени, выраженного в скорости колебаний атомов вещества.

Можно ли предположить, что эта скорость может меняться?

4.2        Почему появился мозг и разум

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

Мозг, а с ним и разумность, развилась в биологических живых организмах, потому что такое решение энергетически более выгодное, чем прочие – например, быстро бегать, быть сильным физически или прочее.

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

Мозг, таким образом, оказывается более выгодным вложением «капитала». Энергетические затраты тела в мозг приводят к максимальному росту выживаемости животного по сравнению с затратами в другие части тела.

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

4.3        Необходимые составляющие разумного существа

Разумное существо – робот – обязательно должно обладать следующими составляющими:

1. Сенсорами

2. Памятью

3. Актуаторами

Эти три элемента необходимые, но не достаточные. Например, остается неясным механизм «инстинкта самосохранения», «тяги к жизни» - это явно выраженное поле для философско-теологических дебатов.

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

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

Обладающее сенсорами и актуаторами, но не обладающее памятью, существо не может принимать разумные решения, потому что оно не может накопить и удержать опыт. У него нет возможности предсказывать будущее, базируясь на прошлом. Единственным источником информации о прошлом опыте для робота является память.

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

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

4.4        Различия между животными и человеком

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

4.4.1          Порог разумности

Некоторые утверждают, что животные неразумны.

4.4.2          Животные не творят?

Как-то в разговоре на эту тему я наткнулся на одно заметное отличие. Животные не творят, а человек творит. Творец… - хм, это ключевое слово. Где-то еще я его слышал.

Что же значит «творить» и чем оно отличается от прочих действий, направленных на выживание? Это все выживание или это уже нечто большее? Есть ли разница между «создавать» и «творить»?

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

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

4.5        Создание разума другим разумом

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

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

4.6        Существование разума вне окружающего мира

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

С практической точки зрения, вопрос может трансформироваться в вопрос – возможно ли создать разум в отрыве от окружающего мира или в искусственном окружающем мире, таком, как виртуальная реальность доступная в современных компьютерах?

Возможно ли создать разум в виртуальных мирах, населенных, как чисто компьютерными персонажами, так и аватарами, за которыми стоят настоящие люди?

4.7        Есть ли ограничения разумности

Разумность – способность предсказывать будущее. Возникает вопрос – есть ли ограничения разумности? То есть, есть ли теоретические ограничения в способности предсказывать будущее?

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

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

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

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

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

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

А вот опыты над искусственным разумом могли бы быть возможны. Но этично ли? Чем различается разум человека от искусственного разума? В терминах разумности – ничем.

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

4.8        Правильные решения

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

Например, катится робот по дороге, вдруг, падает в яму. Он ее просто не заметил. На первый взгляд, он ошибся, что не заметил яму и упал. Но сразу после этого по этой же дороге проехала машина. Она неминуемо раздавила бы робота, потому что у нее не было возможности остановиться. А у робота не было возможности заметить машину и отойти с пути. Тот факт, что робот упал и выжил – это ошибка, удача, совпадение?

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

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

Принятие «неправильных» решений – это обычная активность разумных существ.

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

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

4.9        Программирование роботов vs. обучение роботов

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

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

Например, если робот попал в угол, то не нужно писать алгоритм выхода из угла, типа:

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

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

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

4.10    Элемент случайности

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

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


5          Мозг

5.1        Функции, выполняемые мозгом

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

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

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

5.1.1          Обработка сенсорной информации

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

5.1.2          Поиск закономерностей в сенсорных ощущениях

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

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

5.1.2.1         Глубина просмотра в прошлое

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

5.1.2.2         Поиск закономерности во времени

Или же способность улавливать закономерность во времени прихода тех или иных раздражителей – это некий эквивалент чувства ритма, чувства времени.

5.1.2.3         Поиск одновременного совпадения между различными раздражениями

Еще одна способность мозга – это анализ одновременности раздражения с различных органов чувств.


6          Память

6.1        Обдирание информации по слоям

Гипотеза: устройство памяти пропускает в более глубокие слои только производную изменения сигнала. Если сигнал стационарен, он не проходит дальше, на следующий слой. Таким образом, реализуется принцип обдирания информации по слоям.

Например, тон одной частоты и силы застрянет очень быстро.

Прерывистый тон одной частоты пройдет на один или два слоя глубже. Последний слой N, до которого дойдет это раздражение, будет видеть, что раздражение типа Х (тон) равномерно прерывается. Соответственно слой N+1 будет видеть раздражение типа ХN+1, которое будет представлять собой прерывистый тон Х. Так раздражение типа ХN+1 уже постоянно, то слой N+1 ничего не будет посылать на слой ХN+2.

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

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

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

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


7          Сенсоры

Человечество в своих технологиях очень сильно отстает от природы в создании сенсоров. Эта отсталость проявляется по многим направлениям. Например, природа значительно опередила нас в создании сенсоров механических и химических – осязание, обоняние, вкус. В то же время, человечество достигло значительных высот в создании сенсоров зрения, слуха.

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

Во-первых, это дает возможность создавать роботов, которые могут превосходить человека в каких-то узких областях. Например, человек не может напрямую ощущать уровень радиоактивного излучения. Но даже самый элементарный робот, снабженный счетчиком Гейгера, может. Робот совершенно спокойно может принимать электромагнитные волны в очень широком диапазоне частот. Человек может напрямую воспринимать лишь одну октаву частот – видимый свет.

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

7.1        Необходимое количество сенсоров

Вопрос необходимого количества сенсоров крайне важен. Иногда, он формулируется, как минимально необходимое количество сенсоров.

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

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

Принципиальным моментом является требование, чтобы любой из объектов был бы обнаруживаем роботом более чем одним типом сенсоров. Это принципиально важно по нескольким причинам:

  1. Сенсоры (органы чувств) должны калибровать друг друга
  2. Сенсоры должны дополнять друг друга, проверять информацию друг друга
  3. Информация с различных сенсоров используется для распознавания образов в широком смысле этого слова. Это как бы представление объектов в векторе сенсорных ощущений робота. Если объект сложный - движется, излучает звук и свет, имеет сложную механическую структуру – то и вектор сенсорных ощущений, описывающий его адекватно, должен быть достаточной сложности. Это требует большого количества разнообразных сенсоров.

7.2        Типы сенсоров

Существует огромное количество различных сенсоров. Также возможна самая разнообразная их классификация.

Во многих случаях слово сенсоры возможно заменить выражением органы чувств. Но это верно не всегда.

7.2.1          Активные и пассивные сенсоры

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

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

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

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

Пассивные сенсоры – это органы чувств, которые принимают сигналы от окружающего мира. Эти сигналы непредсказуемы по своей сути.

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

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

- Пассивные сенсоры не выдают своих обладателей мощным сигналом передатчика

7.2.2          Инфракрасные активные сенсоры

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

Одной из разновидностей такого сенсора является довольно примитивный и крайне cost effective сенсор, построенный на приемнике дистанционного управления бытовой техникой и инфракрасных светодиодах. Инфракрасный приемник в таком решении – это готовый сенсор размером в несколько миллиметров и стоимостью около 1 USD или меньше. Он принимает модулированный инфракрасный сигнал с определенной частотой, например, 40 кГц и, соответственно, довольно хорошо защищен от засветки посторонними светом, например, лампами, дневным светом и инфракрасными передатчиками, работающими на других частотах модуляции.

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

Эти элементарные принципы верны для такого IR сенсора, как и для классической радиолокации. Соответственно, классические формулы и ограничение, характерные для радиолокации, во многих случаях, применимы и в этом случае.

7.2.2.1         Инфракрасные датчики расстояния со сложным сенсором

Существуют IR сенсоры, в которых приемник и передатчик встроены в один элемент. Такой сенсор значительно сложнее, чем тот, что описан выше. Вместо одного приемного сенсора в нем есть целая линейка сенсоров. Отраженный IR сигнал фокусируется на одном из них. На каком именно – это зависит от расстояния до объекта. Таким образом, можно измерять расстояния до объекта довольно точно. Причем у этого сенсора значительно снижена зависимость от отражающей способности объекта и его размеров, потому что расстояние измеряется не по степени отраженного сигнала, а по положению сфокусированного отраженного сигнала на линейно матрице сенсоров.

Диапазон рабочих расстояний для такого типа сенсоров – до десятков см, например, 5-40 см или 10-80 см.

К сожалению, такие сенсоры примерно в 10 раз дороже, чем обычный IR сенсор от пульта управления бытовой техники, то есть, он стоит, начиная от примерно 10 USD.

7.3        Визуальные сенсоры

Классические CMOS или CCD видео и фото сенсоры очень близко напоминают по своему строению глаз человека. Я бы даже сказал, что за исключением пары моментов, они по-настоящему близки. Однако основные отличия кроятся в том, как информация от этих сенсоров обрабатывается. В этом плане мозг принципиально и многократно превосходит существующие у человечества технологии.

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

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

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

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

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

7.3.1          Визуальные сенсоры генерируют гигантское количество информации

Например, обычный VGA video sensor генерирует - 25 frame/s * (640px * 480px) * 3 byte/px = 23 Mb/s. Это очень большой поток информации. Даже мозг человека не мог бы справиться с ним, судя по тому, что он избрал другой путь обработки потока визуальной информации.

7.3.2          Различия между глазом и существующими визуальными сенсорами

Принципиальное и философское отличие визуальных сенсоров, производимых сейчас, и глазами заключается в том, что сенсоры не спроектированы, чтобы воспринимать окружающую среду роботом. Они не сделаны для производства информации для «внутреннего потребления». Они спроектированы так, чтобы передавать информацию далее – для глаз человека – и, по возможности, с минимальными искажениями и потерями. Эта задача принципиально другая от той задачи, что стоит перед глазом.

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

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

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

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

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

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

Таким образом, существующие визуальные сенсоры, например, использующие в видеокамерах, web-камерах и подобные, не идеальны для использования в качестве глаз робота. Их можно было бы улучшить, объединив с FPGA, который бы выполнял функции предварительной обработки сигнала. Например, FPGA мог бы объединять сигналы с периферийной области в один поток, выделять примитивные закономерности уже на этом уровне - края, предметы одного цвета, перемещающиеся предметы в противовес статическим, компенсация движения робота и прочие. Это позволило бы кардинальным образом сократить поток информации от сенсора непосредственно в мозг.

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

Например, для измерения положения робота в пространстве достаточно обрабатывать только относительное смещение отдельных, заранее выбранных, «удобных» точек на картинке, получаемой от визуальных сенсоров, например, ярких точек (звезды) или точечных предметов другого цвета на одноцветном фоне.

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

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

7.3.3          Визуальные сенсоры в локации и позиционировании

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

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

7.4        Звуковые сенсоры

Обычные электретные микрофоны – это очень полезные сенсоры для робота. Мало того, что они могут использоваться по прямому назначению – улавливать звуки – они также могут быть дополнительными источниками информации в других ситуациях, например, работать сенсорами удара.

Микрофоны дешевы и потребляют мало энергии. Они занимают немного место и надежны.

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

7.4.1          Распознавание речи и звуков

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

7.4.2          Обнаружение направления на источник звука

Marvelmind Grumbler оборудован 4 микрофонами. Ограничение конструкции ATmega128 не позволяют оцифровывать сигнал со всех четырех источников одновременно, что создает определенные сложности с максимальной частотой оцифровки, результирующей точностью оцифровки и задержками, негативно влияющими, в частности, в системе для обнаружения направления на источник звука.

Элементарная схема по обнаружению направления на звук работает следующим образом:

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

7.5        Одометр

Классическим одометром является компьютерная мышь. Более того, оба варианта сенсоров мыши – механический с колесиками с прорезями и оптический с CMOS сенсором - могут быть использованы для роботостроения. Преимущества такого решения на основе сенсоров от мыши - в дешевизне, точности и возможности использовать множество готовых деталей, начиная, от колесика с прорезями в классической мыши с шариком и кончая микросхемой обработки для связи с основным микроконтроллером. Существующие мыши с беспроводным интерфейсом могут быть также успешно использованы для беспроводного интерфейса для других задач, например, общения с базой или другими роботами.

7.5.1          Ограничения одометров

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

Если же используются другие формы движения, например, шагающий робот, ползающий, прыгающий, плавающий, летающий, то одометрия применима еще менее.

Однако, несмотря на все погрешности, одометр является очень важным сенсором. С помощью одометра можно легко измерять скорость.

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

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

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


8          Робот Marvelmind Grumbler

Для того чтобы проанализировать задачи, возникающие перед разработчиком робота, рассмотрим, как они решены на практике в роботе Marvelmind Grumbler.

Marvelmind Grumbler – это автономный, мобильный, четырехколесный робот, разработанный и построенный автором в 2004-2006 годах.

Робот базируется на шасси от радиоуправляемой игрушки компании Nikko и построен с использованием контроллера Atmel AVR ATmega128.

8.1        Общие сведения

Робот состоит из нескольких основных частей:

8.2        Marvelmind Grumbler – внешний вид и фото

8.2.1          Основные интерфейсы


8.2.2          Внешний вид и размеры

 


8.3        Основные элементы робота

8.3.1          Микроконтроллер – ATmega128

Выбор этого типа микроконтроллера обусловлен несколькими причинами:

Контроллер мог бы быть улучшен, если бы поддерживал следующие возможности:

8.3.2          Таймеры микроконтроллера

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

ATmega128 имеет четыре независимых таймера:

  1. Асинхронный таймер 0 – используется для длительных задержек – от долей секунды до недель. Основной SW цикл робота – альфа-ритм – задается этим таймером, и равен 1/8 сек
    1. Чтение показаний одометра
    2. Выполнения подпрограммы круиз-контроля – поддержки постоянной скорости движения вне зависимости от напряжения питания батареи, типа поверхности и тому подобное
    3. IR_star – подпрограмма IR сканирования пространства
    4. Ультразвуковое сканирование пространства
    5. Прочие технологические операции, такие как обновление значения виртуального нуля для АЦП
  2. Таймер 1 – используется как генератор ШИМ (PWM) сигнала для моторов. Генерируемая частота – 31.25 кГц. Скважность импульсов меняется программно и определяет эффективное напряжение на моторах, которое, в свою очередь, определяет скорость вращения моторов и движения робота. Пользователь может выставлять скорость робота, используя готовые подпрограммы Motor, Speed_setting, Speed_control, etc
  3. Таймер 2 – генерирует сигнал для IR диодов, ультразвукового передатчика, звука
  4. Таймер 3 – считает импульсы с одометра. Базируясь на этой информации и Таймере 0, робот измеряет свою скорость. Если принять во внимание еще и скважность импульсов и напряжение на батарее, то можно судить также и о типе поверхности, по которой движется робот или о препятствиях на пути робота

8.3.3          Порты и коннекторы

Робот снабжен несколькими портами. Большинство из этих портов – порты самого микроконтроллера ATmega128, но не только. Например, IR диоды из IR сенсора получают управляющий сигнал из де-мультиплексора на отдельной микросхеме на фронтальной плате. Таким образом, возможно обслуживать до 16 линий, используя только 4+2 контакта из Порта C ATmega128. Это решение позволяет заметно экономить порты микроконтроллера.

8.3.4          Прерывания

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

ATmega128 поддерживает внешние и внутренние прерывания.

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

8.3.5          Шасси - Nikko

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

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

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

8.3.6          Моторы

По своей механической схеме, Marvelmind Grumbler – это танк на четырех колесах. То есть пара левых колес движется синхронно и зависимо друг от друга, как и пара правых колес.

Каждая из пар питается своим мотором.

Робот может разворачиваться на месте, как танк.

Моторы запитываются током с широтно-импульсной модуляцией (ШИМ) через драйверы, управляемые от одного из таймеров в микроконтроллере. Использование ШИМ позволяет регулировать эффективную мощность моторов, изменяя скважность питающих импульсов.

Пользователь может контролировать моторы напрямую или же через готовые подпрограммы Motor, Turn_Left_45, Turn_Right_45, Retreat, etc.

8.3.7          Звуковой излучатель

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

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

Существующие подпрограммы генерируют однотональные звуки. Их можно менять с альфа-ритмом робота, т.е. раз в 1/8 сек. Хотя, ничто не мешает сделать полноценный речевой интерфейс. Единственное ограничение будет в длительности проигрываемых сообщений. Встроенной памяти 128 кБ хватит на сообщения длительностью в несколько десятков секунд. Используя внешнюю плату расширения памяти flash, теоретически, возможно воспроизводить сообщения длительностью до минут или даже десятков минут.

8.3.8          LED дисплей

На основной плате робота установлен LED дисплей из 8 диодов. В первую очередь, он предназначен для отладки программ. Но это также и один из интерфейсов с пользователем.

Следует заметить, что LED дисплей визуально инвертирует байт информации. То есть байт 11111111b будет выглядеть как восемь потушенных диодов, а байт 00000000b – как восемь горящих диодов.

8.3.9          IR сенсоры

Фронтальный инфракрасный сенсор – это сенсор активного типа, то есть включающий также и излучающие IR диоды. Он состоит из двух частей:

o       Правый-пол

o       Правый

o       Вперед

o       Вперед-вверх

o       Левый

 

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

Сигнал 40 кГц для IR диодов вырабатывается одним из таймеров в основном контроллере ATmega128.

Такая последовательная схема сканирования не позволяет включить более, чем один IR диод одновременно. Это ограничение вызвано ограничением в доступных контактах у микроконтроллера.

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

8.3.10      Одометр

Одометр построен на основе элементов из механической компьютерной мыши. Диск с прорезями помещен на переднюю ось. Угловое вращение левой пары колес измеряется соответствующей подпрограммой методом подсчета количества прорезей в единицу времени. Этим занимается подпрограмма обработки прерываний, получающая сигнал прерывания непосредственно от фото сенсора мыши. Во временных масштабах робота такое прерывание приходит очень редко – всего несколько раз за 1/8 сек. Его обработка – суммирование в аккумуляторе, подсчитывающем количество пройденных прорезей – занимает несколько микросекунд. Таким образом, это прерывание не оказывает существенную нагрузку на процессорную мощность микроконтроллера.

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

Другим недостатком такого исполнения одометра является то, что робот не может самостоятельно определить движется ли он относительно других предметов или нет. Он измеряет, фактически, вращение колеса и не более, подразумевая, что у колеса 100% сцепление с поверхностью. В некоторых случаях это не так. На скользких поверхностях и препятствии впереди, робот может просто стоять на месте, вращая колесами и упираясь в препятствие, например, ножку стула и сетку.

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

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

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

8.3.11      Сенсор наклона и положения

Marvelmind Grumbler способен определять свое положение относительно гравитационной оси с точностью ±90°. Это возможно благодаря сенсору наклона. Робот может обнаружить, что он повернут на левый бок, на правый бок, находится вверх ногами или находится в нормальном положении.

Сенсор этот оптико-механический и основан на прерывании потока света оптронной пары маленьким шариком внутри сенсора.

Этот же сенсор может использоваться, как дополнительный сенсор удара.

Сенсор расположен на основной плате, рядом с микроконтроллером.

SW процедура Upside_Down считывает показания сенсора, и обновляет флаг в сенсорной памяти микроконтроллера.

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

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

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

8.3.12      Сенсор удара

Это сенсор пассивного типа. Этот сенсор предназначен для многих случаев, среди которых:

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

8.3.13      Сенсор внешней освещенности

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

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

Порт ADC (Port F) в микроконтроллере ATmega128 используется для считывания данных с сенсора. Данные представляют собой аналоговое напряжение пропорциональное освещенности сенсора.

8.3.14      Микрофоны

Робот снабжен четырьмя идентичными микрофонами. Сигнал с микрофона усиливается усилителем с фиксированным коэффициентом усиления и подается на вход АЦП в микроконтроллере.

Микроконтроллер имеет один 10-битовый АЦП и 8 входов. Таким образом, АЦП может считывать данные с любого из них, но не одновременно.

Наличие четырех разнесенных микрофон, обладающих выделенной диаграммой направленности, позволяет наделить робота несколькими крайне интересными характеристиками:

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

8.3.15      Ультразвуковой сенсор

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

Ультразвуковой передатчик питается 40-кГц сигналом, вырабатываемым тем же самым образом, что и для IR диодов.

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

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

Таким образом, полукруглые, твердые объекты видимы лучше всего, потому что они в среднем дают наилучшее отражение.

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

В этом роботе применена значительно более сложная схема работы. Принятый ультразвуковой сигнал оцифровывается таким образом, что каждому 2 см пути ультразвука соответствует свой принятый, оцифрованный байт, где прописана сила отраженного сигнала. Например, 5.12 м х 2 / 2 см = 512 байт. То есть робот способен обнаруживать и записывать отраженный сигнал для расстояний до 5 метров (10 м туда и обратно).

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

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

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

Во многих же случаях робот ошибается:

§         В размерах - видит маленький объект ярким и принимает его за больший, чем он есть на самом деле

§         В расстоянии - принимает сильное второе, непрямое отражение, но пропускает слабое прямое отражение

§         В направлении на объект - у сенсора очень широкая диаграмма направленности в десятки градусов

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

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

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

8.3.16      Конфигурационный переключатель

Выбирая различные установки на переключателе, пользователь может переводить робот в различные режимы. Например, для отладки SW очень удобен режим, когда отключены моторы, а все остальное работает, как обычно.

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

8.3.17      Debugging

В отличие от классических программ на компьютере, отлавливание багов в роботе затруднено по многим причинам:

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

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

Конечно, не стоит себя ограничивать только одним способом для отладки программ. JTAG-интерфейс тоже очень полезен, но не всегда доступен. Например, в Atmel 8-bit AVR контроллерах при использовании JTAG пропадает возможность использовать часть другого функционала процессора, который может быть задействован в роботе.

Моторы тоже являются неплохими индикаторами для многих случаев.

8.4        Логика программы ATmega128

Также в этом цикле робот измеряет пройденное расстояние и высчитывает свою скорость, сканирует пространство ультразвуком и IR диодами, изменяет мощность моторов, изменяет тональность звука. В общем, все «медленные» операции, связанные с механикой или внешним миром, робот осуществляет с периодом в 1/8 сек.

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

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

В SW архитектуре используется принцип разделения. Он базируется на архитектуре сходной той, что существует в живой природе. То есть, прерывания (в основном от сенсоров) заполняют определенные ячейки памяти или обновляют флаги. Фактически, они меняют состояние памяти, мозга. Но сам мозг (арифметически-логическое устройство) занимается принятием решения по изменившемуся состоянию тогда, когда это ему удобно – в этом случае с периодичностью не чаще 1/8 сек.

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

8.5        Инструменты

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

Набор инструментов сильно зависит от стоящих задач. Моя лаборатория состоит из следующего:


9          Взаимодействие роботов

Есть определенный философский вопрос – может ли появиться разум вне общества. Применительно к роботу – может ли робот стать разумным вне окружения других разумных существ. Еще более фокусируя вопрос – может ли робот стать разумным вне окружения других разумных роботов. Мы автоматически приходим к проблеме «курицы-яйца». Возможным выходом из которой является эволюция. Но как уже ранее обсуждалось, мы не можем повторить всю цепочку эволюционных шагов. Таким образом, разработчику роботов приходится подменять эволюционное развитие своими конструкторскими решениями.

9.1        Поведение роботов в группе

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

Такое облегчение происходит из-за того, что роботам значительно легче установить расстояние друг до друга, направление друг на друга, чем измерить положение и расстояние до прочих объектов. Это возможно благодаря тому, что роботы могут активно взаимодействовать между собой. Например, расстояние между роботами можно элементарно определить по временной разнице в приходе звукового и инфракрасного сигналов, посланных одновременно. Аналогично, по разнице прихода звуковых сигналов на группу микрофонов, можно определить направление на робота.

А, определив взаимное положение, они с большей легкостью могут определять положение до других объектов:

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

 

 


10     Глоссарий

Детальное раскрытие нижеприведенных определений дано в соответствующих главах.

ADC analog-digital converter = АЦП

IR infrared – инфракрасный

Debugging – отладка

LEDlight emitting diode – светодиод

PWM - pulse-width modulation = широтно-импульсная модуляция

АЦП – аналого-цифровой преобразователь = ADC

Жизнь – форма существования

Мозг – вместилище разума

Органы чувств ≈ сенсоры. Иногда, понятие сенсор включает в себя и дополнительную предобработка сигнала (логическую или физическую), а не только сам сенсор физически

Разум – способность предсказывать будущее

Робот – автономное устройство, способное принимать независимые, разумные решения

Сенсоры ≈ органы чувств

ШИМ – широтно-импульсная модуляция