НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

4.4. Конструирование интегрального робота

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

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

Рис. 72. Два типа роботов. А. Робот 'рука-глаз'. Б. Подвижный робот
Рис. 72. Два типа роботов. А. Робот 'рука-глаз'. Б. Подвижный робот

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

В 1970 г. самая сложная задача, которую умел решить робот "глаз - рука", состояла в следующем:

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

2. Запомнить результат такого анализа (информацию, зафиксированную в памяти, мы обозначим буквой M).

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

4. Проанализировать новую обстановку и, основываясь на полученных результатах, восстановить обстановку, соответствующую M. (Для этого от машины требуется уметь не только распознать, какие элементы старой обстановки соответствуют тем или. иным элементам новой, она должна также "понять", что в заданном порядке строительных блоков в неявном виде содержится требование о том, что блок B нужно перемещать после блока C а блок A - после блока B и что, прежде чем перемещать блок C, нужно освободить для этого место. Более того, поскольку программа, которую мы вкратце описываем, не использует зрительную обратную связь, машина должна обеспечивать траектории, исключающие "случайное" смещение блоков и обеспечивающие неподвижность блоков до тех пор, пока механическая рука не захватит их и не положит на место.)

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

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

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

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

2. Результат этого анализа (назовем его снова M) запомнить.

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

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

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

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

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

1. Подойти к большому кубу.

2. Подойти к двери, толкая куб перед собой.

Затем машина должна приступить к дальнейшему дроблению этих задач. На этом этапе нам потребуется планирование, т. е. мы должны выделить допустимые траектории и отобрать одну из них. (На этом этапе используются главным образом внутренние расчеты, в полной мере реализующие потенциальное быстродействие машины, а не относительно медленное взаимодействие с внешней средой. При решении аналогичных задач в более сложной обстановке машине может потребоваться перебрать тысячи возможных траекторий, прежде чем она начнет посылать команды в свою двигательную систему. Об алгоритмах, направляющих процесс планирования, мы уже вкратце говорили в разд. 4.2.) В том случае, когда внешняя обстановка выглядит так, как это показано на рис. 73, машина может решить начать с маневра RC или RA, для того чтобы обойти ближайший маленький куб, а затем двигаться по прямой CD или AB соответственно, для того чтобы подойти к большому кубу. Затем она может выбрать путь RAB потому, что этот путь короче, и потому, что он не проходит через неизученную территорию, где можно натолкнуться на препятствия. Иначе говоря, команда 1 будет переведена в две следующие команды:

1i. Идти из R в A.

1ii. Идти из A в B.

Аналогичным образом рассматривается и шаг 2, для планирования которого нужно, например, сделать выбор между траекториями EJKGL и EFGL (рис. 74). Здесь предпочтение может быть отдано траектории EFGL, поскольку она значительно короче, и это может перевесить потенциальный риск путешествия по "неизведанной" территории. Иными словами, машина переведет команду 2 приблизительно следующим образом:

2i. Толкать куб E в F.

2ii. Толкать куб F в G.

2iii. Толкать куб G в L.

Рис. 73. Возможная 'модель внешнего мира' робота. Показаны два пути RAB и RCD, по которым робот может дойти из своего нынешнего положения R к большому кубу
Рис. 73. Возможная 'модель внешнего мира' робота. Показаны два пути RAB и RCD, по которым робот может дойти из своего нынешнего положения R к большому кубу

Почему "приблизительно"? Для того, чтобы учесть возможность наткнуться на непредвиденное препятствие по пути из E в F. Таким образом, составляя программу для фазы "толкать из E в F", машина должна включать в нее не только последовательность команд движения, но и "пакет тестов" типа: "Наткнулись ли вы на препятствие?, Если нет, продолжайте согласно программе. Если да, исследуйте препятствие и скорректируйте внутреннюю модель. По новой модели спланируйте новую траекторию с учетом нового начального расположения. После этого приступайте к выполнению плана". Упомянув о необходимости уточнять команды, мы в дальнейшем будем делать это лишь в той мере, в какой это может понадобиться в отсутствие непредвиденных препятствий.

Рис. 74. Траектории EFGL и EJKGL, по которым можно толкать большой куб к двери
Рис. 74. Траектории EFGL и EJKGL, по которым можно толкать большой куб к двери

Однако даже без учета непредвиденных случайностей дело начинает все более запутываться. Для того чтобы подтолкнуть большой куб из E в F, робот должен встать за него (т. е. в позицию W' на рис. 75) и затем продвинуться достаточно далеко (а именно до К) вперед, толкая перед собой куб, который в результате окажется в позиции F. Таким образом, машина должна не только перевести команду "Перетащить большой куб из ZT в F" в команду "Перейти из W' в Y", но и добавить перед ней еще две: "Перейти из В в W" и "Перейти из W в W'", обеспечивающие правильное расположение робота перед началом толкания. Используя сокращенную запись "Перейти (R,A)" вместо "Перейти из R в A", мы на третьем уровне уточнения команд получим следующую программу:

Перейти (R, A).

Перейти (A, B).

Перейти (B, W).

Перейти (W, W').

Перейти (W', Y).

Перейти (Y, Y').

Перейти (Y', Y").

Перейти (Y", Z).

Перейти (Z, Z').

Перейти (Z', Z").

Перейти (Z", L).

Стоп.

Рис. 75. Подробная траектория BWW'YY'Y'ZZ'Z'L' движения робота из положения В для того, чтобы продвинуть большой куб по траектории EFGL
Рис. 75. Подробная траектория BWW'YY'Y'ZZ'Z'L' движения робота из положения В для того, чтобы продвинуть большой куб по траектории EFGL

Кроме того, команду "Перейти (A, B)", отрабатываемую после команды "Перейти (R, A)", нужно разбить на две:

Повернуться на θ.

Продвинуться на x.

Эти команды говорят роботу, что ему нужно повернуться на соответствующий угол 0, а затем продвинуться прямо вперед на расстояние x. В то же время в разд. 3.2 мы уже видели, что подпрограмму "Повернуться на θ" можно в конце концов выразить в виде "Закрепить левое колесо и повернуть правое на 4 оборота", а подпрограмма "Продвинуться на x:" может быть переведена как "Повернуть синхронно оба колеса на 12 оборотов".

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

Л. Закрепив Правое колесо, повернуть Левое на один оборот.

П. Закрепив Левое колесо, повернуть Правое на один оборот.

О. Повернуть одновременно Оба колеса на один оборот.

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

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

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

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

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

Упражнение. Напишите свой вариант программы, учитывающий такую возможность. (Указание: при этом окажется необходимым различать команду "Перейти (R, A)" и "Перейти (W' Y)", поскольку в последнем случае приходится еще и толкать ящик.)

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

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

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru