Собранный в лабиринтах стэнфордских лабораторий, Shakey был настоящим чудом света для своего времени. Ведь это была первая попытка человечества создать автономного и мобильного робота, который был бы умен как самый мощный компьютер и маневренный как болид Формулы-1. Ну почти.

Он пришел из будущего…

Иллюстрация Шейки из книги “Не счесть у робота профессий” (1987).

Вернее приехал, поскрипывая каучуком по гладкому лабораторному полу. Shakey — буквально “Трясун” — сперва был мысленным экспериментом своего создателя Чарльза А. Розена, который в 1963 году не на шутку загорелся идеей: а можно ли создать такую машину, которая бы собирала сигналы с телекамер и других сенсоров, при этом умея перемещаться в пространстве сама по себе?

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

Это было рождение Шейки, которого на баланс себе возьмет проекта ДАРПА, выделив $300 000 — интерес к компьютерам и роботам тогда как раз подскочил, несмотря на недавний провал розенблаттовского Перцептрона с “танковым экспериментом” и надвигавшуюся Зиму ИИ с иссякающими бюджетами.

Гордый Розен вместе со своим детищем.

Источник: Computer History Museum.
Источник: Computer History Museum.

Всего каких-то два года черновых чертежей и проект Shakey запускается в 1965 в Стэнфордском исследовательском институте (SRI International). О футуристичной элегантности речи быть не могло — Шейки конструировался с максимально экономным и прагматичным подходом. 

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

Нильс Нильссон (справа) и Свен Вальстрём вместе с Шейки.

Источник: ieee.org.
Источник: ieee.org.

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

Источник: Computer History Museum.
Источник: Computer History Museum.

Чуть ниже обрезиненный детектор ударов, которым Шейки еще и пихал коробки в тестовой фазе. По бокам у него были пружинные контакты, которые конструкторы окрестили “кошачьими усами” (catwhiskers). Движение обеспечивалось, скорее всего, или шаговыми, или серводвигателем, а также поворотными колесами. 

Иногда во время экспериментов, Робот останавливался и начинал внезапно крутиться вокруг своей оси. “В конце концов мы копнули код и обнаружили, что там была подпрограмма, предназначенная для раскручивания кабеля”, — рассказывал Питер Харт. “Чтобы получить одобрение Федеральной комиссии по связи (FCC) на радиоантенну для робота, потребовалось время, поэтому изначально у нас был огромный кабель, идущий к потолку”. 

Мозг робота

Первоначально за мышление Шейки отвечал довольно хлипкий компьютер SDS 940 с блоком памяти на ферритовых сердечниках в качестве основного запоминающего устройства, что позволяло разместить от 16 до 64 “килослов”. При этом длина слова составляла 24 бита плюс один бит четности  Но затем место “мозга” занял более мощный 36-битный DEC PDP-10 с объемом памяти в 192 килослова.

SDS 940.

Источник: Flickr.
Источник: Flickr.

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

DEC PDP-10.

Источник: Wikipedia.
Источник: Wikipedia.

Дополнительно использовался компьютер PDP-15, который обрабатывал полученные от камеры и дальномера сигналы. Он выступал в роли посредника между сенсорами и электронным разумом Шейки, будучи чем-то вроде периферийного мозга, заточенного обрабатывать рефлексы. Если бы его не было, то на основной компьютер ложилась бы гораздо большая нагрузка. (И если бы он вообще ее потянул).

PDP-15.

Исчтоник: Wikipedia.
Исчтоник: Wikipedia.

Зрение и зоркость

Голова с камерами и дальномером.

Источник: Computer History Museum.
Источник: Computer History Museum.

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

Том Гарви и Хелен Чан пытаются уговорить Шейки не тыкаться в стены.

Источник: Computer History Museum.
Источник: Computer History Museum.

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

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

Что изображено на этом кадре выяснить не удалось.

Источник: The New Stack.
Источник: The New Stack.

Зрение Шейки заключалось в непрерывной черно-белой трансляции в разрешении 120х120 пикселей — не Бог весть что. Вдобавок она загрязнялась шумами и преобразование Харта, улучшенное заменой линейного преобразования на синусоидальное, как раз и помогало справляться с этими помехами. 

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

Далее, его зрение было оснащено тремя подпрограммами, которые оперировали на уровне промежуточных действий (Intermediate-Level Actions):

  • CLEARPATH — буквально “расчистить  путь”. Перед тем как Шейки мог тронуться в путь-дорогу, он вызывал эту программу, сканировавшую трапециевидную зону на полу перед ним, выдававшую ответы по обстоятельствам: “свободно”, “заблокировано” или “неизвестно”.

  • LOBLOC — локация объекта. Модель мира делала прогноз, например: “Ящик BOX1 должен быть примерно в такой-то точке”. Программа поворачивала камеру в этом направлении, делала снимок и искала вертикальные грани и углы, где объект касается пола. Если совпадение регистрировалось, объект был найден. Для ускорения процесса в LOBLOC был задействован региональный анализ, когда с картинки стиралось все, что было выше границы “стена-пол”, чтобы плинтуса и косяки не мешали.

  • PICLOC — локация по ориентирам на изображении. Даже зная карту комнаты, Шейки мог все равно заблудиться и тогда на помощь к нему приходили ориентиры: двери, а также вогнутые и выпуклые углы. Например, найдя знакомый угол, он делал приблизительно такой расчет: “Если я вижу этот угол под таким ракурсом, значит, я нахожусь в точке Z с точностью до 5-10%”.  

Но не смотря на все “навороты”, Шейки очень долго соображал, выстраивая координаты помещения и выполняя прочие операции. По словам Вальдингера, на видео, снятых в лаборатории, видно как хаотично двигались стрелки на настенных часах — целые часы, а то и дни утомительного ожидания в итоге вырезали на стадии монтажа. В конце измученные ученые просто сняли их со стены от греха подальше.  

Источник: Computer History Museum.
Источник: Computer History Museum.
Источник: Computer History Museum.
Источник: Computer History Museum.

Революционный софт

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

  • Низкоуровневые действия включали базовые, написанные на Лиспе команды, над которыми не надо было особо думать: ехать, повернуться, наклонить камеру, сделать снимок и так далее. Они умели синхронизироваться с моделью мира и больше от них ничего и не требовалось — собственно, компьютер PDP-15 и отвечал за эти действия. 

  • Среднеуровневые или промежуточные действия помимо зрения еще включали команды по типу “Ехать через дверь” или “Толкнуть объект”, а также цепи или вернее, как в данном случае, таблицы Маркова. Последние помогали Шейки быстро восстановиться в случае ошибки, например, если он упирался в стену. Робот постоянно проверял эти условия из таблицы сверху вниз. Как только он находил условие, которое соответствует его текущей модели мира (иными словами базе данных фактов), он выполнял действие из этой строки, а затем, получив результаты, начинал проверку таблицы с самого начала и так без конца.

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

  • Планекс (Planex) органично дополнял STRIPS и венчал собой софтверную архитектуру Шейки. Это исполнительная система, которая мониторила и при необходимости корректировала план достижения цели. Программа брала готовый план, в виде макрооператора, сохраненного в треугольной таблице, и, внимательно отслеживая процессы, управляла его выполнением в реальном мире. Если STRIPS зиждился на строгих константах, которые хорошо работали только на бумаге, то этот компонент вводил в систему принятия решений переменные. Что интересно, для достижения успеха Planex мог пропустить ставшие ненужными шаги или повторить предыдущие. Если же случался всеобъемлющий провал, управление возвращалось на уровень STRIPS для полной перепланировки. 

  • A*, что читается как “эй-стар”, был прорывным алгоритмом для поиска пути, который находит кратчайший маршрут от начальной вершины до цели во взвешенном графе. В его основе лежат два множества: узлы для оценки (в оригинале open set) и оцененные узлы (closed set). Далее выбирается узел с минимальной общей оценкой стоимости пути через n-узел — таким образом Шейки не сильно уставал, выбирая кратчайший маршрут для путешествия по комнате.

Алгоритм А*.

Эпоха Шейки и его наследие

Шейки был первым, как его называл сам Розен, “автоматоном”, отличавшимся умом и сообразительностью. Общественное внимание не могло пройти мимо такого феномена. Газеты называли его “Первой электронной личностью”. Познакомиться с роботом приезжал Артур Кларк, а еще в лабораторию заходили профсоюзные рабочие, опасливо интересовавшиеся о том, лишит ли Шейки их работы или нет. 

Источник: SRI.
Источник: SRI.

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

“Проверяющий ревизор зашёл ко мне в кабинет и начал задавать вопросы. Первое, что он спросил: “Получили ли вы 8 миллиардов пакетов с битами?” — и назвал точное десятизначное число. Я вежливо ответил, что, наверное, да — он поставил галочку. Потом он спросил, проверил ли я их состояние по получении соответствующим образом. Я подумал: “Должен же быть код с обнаружением ошибок” — и снова ответил “да”. Он ставит галочку. Затем он захотел узнать, были ли пакеты в надлежащем состоянии в целом. Доктор Харт, — спросил он, — были ли на этих пакетах повреждения или следы коррозии?” Тут я смог его успокоить: коррозии не было. Потом он спросил, есть ли у меня подходящие складские помещения. Мне хотелось сказать: “Вы что, не видите все эти накопители? Пакеты вон там, через коридор”. Но c юмором у него было туго, так что я просто ответил “да”, и он, кажется, остался ужасно доволен”.

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

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

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