Задачи оптимизации решают люди, они учат и машины решать эти задачи. Среди множества таких задач отдельное место занимают задачи оптимального управления, в том числе управления движением. Последние по понятным причинам интересуют робототехников в первую очередь. Особенность таких задач состоит в том, что время, которое отпускается для их решения, ограничено. Как правило, за пределами этого времени самое хорошее решение теряет смысл.
ПЕРВЫЙ ОПЫТ
Переходя к рассказам об опытах создания роботов уже не бесчувственных, а "очувствленных", или "интеллектуальных", или интегральных, или роботов второго и других поколений (любое из этих названий вы можете встретить в научной, технической, популярной литературе, и все они, в конечном счете, означают одно и то же), мы умышленно еще раз вернулись к механизмам и свойствам естественного интеллекта, к способам и методам, которые он использует при решении любых задач, в том числе и двигательных.
"Очувствленный" робот должен быть оснащен системой искусственного интеллекта. Только при этом условии он может полезно использовать эффект очувствления. Мы надеемся, что вы теперь сами сумеете сопоставить достигнутый в этих опытах уровень "интеллектуальности" робота с уровнем естественной интеллектуальности, сами увидите, насколько пока далеки копии от оригинала. И не будете этому удивляться, представляя себе всю сложность задач робототехники. Не будете удивляться тому, что хотя со времени первых опытов прошло уже 15-20 лет, до сих пор еще не существует тех настоящих роботов, которых, может быть, рисует ваше воображение.
В системе искусственного интеллекта нет пока места смутным понятиям и эвристическим, человеческим методам. Все действия робота подчинены железной логике и строгим алгоритмам. Это первое условие, которому должен удовлетворять железный интеллект. И второе, очевидное, условие состоит в том, что требования, предъявляемые интеллекту робота, должны быть согласованы с возможностями его системы очувствления.
А теперь примеры.
Еще в 1958 году два американских математика и инженера - К. Шеннон, изучавший, в частности, "поведение" механических животных, и М. Минский, специалист в области так называемой интеллектроники, цель которой создание систем искусственного интеллекта, предложили построить автоматическую руку, взяв исполнительный механизм обычного копирующего манипулятора, очувствив его каким-либо образом и приспособив для управления им ЭВМ вместо оператора.
За реализацию этой идеи под руководством ее авторов взялся Г. Эрнст, аспирант Массачусетского технологического института. В конце 1961 года родился первый "очувствленный" робот, построенный на базе обычного копирующего манипулятора. В роботе Г. Эрнста манипулятором управляет уже не оператор, а автоматическая система. По командам ЭВМ включаются, изменяют скорость и выключаются семь двигателей, по одному для каждой из семи степеней подвижности механической руки.
Задавая эти команды, управляющая ЭВМ руководствуется не только сигналами программы, но и информацией, которую она получает непосредственно от руки, оснащенной датчиками - механическими "органами чувств", призванными хотя бы в самом скромном объеме заменить те естественные "датчики обратной связи", которые, объединяя в единую систему манипулятор с оператором, позволяли последнему наилучшим образом строить движения и дозировать усилия.
Рука Г. Эрнста оснащена двумя группами датчиков.
Одну образуют датчики, установленные во всех подвижных сочленениях. Они посылают информацию о том, как выполняются сигналы, управляющие движениями руки. Это датчики внутренней обратной связи, действующей по обычной замкнутой схеме. В ней непрерывно сравниваются положения руки, которые задает управляющая машина, с положениями, которые рука занимает в действительности, и в соответствии с результатами сравнения ЭВМ непрерывно генерирует сигналы управления, устраняющие рассогласование, заставляя механическую руку занимать нужные положения и нужным образом менять их.
Вторая группа датчиков, очувствляющих руку, установлена на захвате. Именно эти датчики связывают ее с внешним миром.
Захват, как обычно, состоит из двух пальцев. Но теперь верхний, нижний и наружный торцы каждого пальца оснащены контактными датчиками, работающими в двоичном коде: включен - выключен. Эти датчики сигнализируют о том, что рука наткнулась на объект нерабочими участками. На внутреннем и передних торцах каждого пальца расположено еще по восемь датчиков. Они работают уже не в двоичном коде, а генерируют сигналы, величины которых пропорциональны силе нажатия на датчик. Шесть из них расположены на внутренних плоскостях захвата и генерируют информацию о том, какие части пальцев схватили объект и с какой силой его сжимают.
Два датчика, расположенные на передних торцах каждого из пальцев, регистрируют силу сопротивления движению захвата со стороны объекта. В случае, если рука с ним сталкивается в процессе движения, эти датчики позволяют получить информацию о протяженности и размерах этого объекта.
Таким образом, захват - его рабочие и нерабочие поверхности - снабжен подобием осязания и очувствлен по силе сжатия. Кроме того, на передних торцах пальцев между датчиками осязания помещено по "глазу" фотоэлементу, реагирующему на затенение: когда рука приближается передним торцом к какому-либо объекту, но еще не ударяется о него, ЭВМ посылает сигнал о приближающейся опасности и о необходимости снизить скорость.
Вся информация, собираемая рукой в процессе ее движения, передается в ЭВМ, где она обрабатывается и используется при реализации заданной программы, согласно которой рука должна, например, собрать рассыпанные в беспорядке кубики и сложить в коробку.
Сбор кубиков для робототехники - "эталонная" задача, имеющая множество вариантов. В варианте, заданном руке Г. Эрнста, эта двигательная задача была описана следующей последовательностью сформулированных на машинном языке операций в программе, введенной в ЭВМ.
1. Рука начинает поисковые движения с целью найти коробку. Коробка выше и больше кубиков. Эти признаки должны помочь руке найти коробку, отличив ее от кубиков.
2. Найдя коробку, ЭВМ определяет ее абсолютное положение и размеры, а также положение руки, в котором она находится, отыскивая коробку. ЭВМ запоминает эту информацию, которая понадобится при складывании кубиков в коробку.
3. Затем рука отправляется на поиск кубиков. Наткнувшись на один из них, она определяет его положение и размеры, чтобы правильно ориентировать захват относительно кубика.
4. Рука схватывает кубик и несет его к месту расположения коробки: она движется до тех пор, пока не наткнется на коробку.
5. Определяется правильное расположение кубика относительно коробки, после чего кубик опускается в коробку.
6. Рука отправляется туда, где она нашла предыдущий кубик, и оттуда отправляется на поиск следующего кубика.
В процессе поиска кубиков рука периодически совершает контрольные движения, чтобы убедиться, что попек ведется достаточно низко над столом. Если она в процессе поиска ударяется о стол, поиск прекращается, и р"ка выбирает правильное положение по вертикали.
В этом перечне не нашли отражения многие указания, которые в действительности оговорены в программе, чтобы предупредить недоразумения, могущие возникнуть в процессе действия руки. Так, в частности, при сборе кубиков она может неудачно зацепить кубик, столкнуть коробку, вторично натолкнуться на коробку и пр. В подобных случаях программа предусматривает различные специальные указания или команды на перевод руки на ручное управление, и тогда в управление роботом вмешивается оператор.
Сама программа, конечно, содержит гораздо больше подробностей, чем те, что перечислены под номерами 1, 2, ...6. В ней расписана процедура поиска, указан целесообразный порядок поиска, указано, что делать, когда замыкается тот или иной контакт, как в том или другом случае устанавливать или поворачивать захват. Другими словами, в программе сбора кубиков поведение руки и ее реакции при взаимодействии с внешним миром записаны с необходимой степенью подробности и, конечно, языком, понятным цифровой машине, то есть числами. Робот в процессе решения поставленной ему задачи будет "железно" следовать всем ее указаниям.