Демон системных демонстраций, любитель пакостить в самый ответственный момент, и тут явил свою черепушку с подлой ухмылкой. Еще накануне вечером из головного офиса «Симботика» в Вилмингтоне, штат Массачусетс, пригнали почти дюжину дополнительных техников и программистов. С раннего утра они возились у роботов и конвейеров, отлаживая их, калибруя в сотый раз, тестируя отдельные движения – передачу коробок с ленты на ленту, собирание нескольких коробок в один блок, называемый пикфейс, доставку этого блока к позиции, где его подхватывали вилки лифта, возвратно-поступательные циклы самого лифта, перекладывающие пикфейс из коробок на один из двадцати ярусов стеллажей склада, и их развозку на стеллажи. Вроде бы демо было полностью подготовлено для сносной работы системы. Но во время визита большого начальства, если что-то теоретически может пойти не так, оно обязательно пойдет. Предательский физический мир найдет лазейку, чтобы испортить благостную картинку компьютерных симуляций и презентационных видео.
Первым делом отключились мобильные роботы – боты, как мы их называли, – бегающие по рельсам вдоль аллей со стеллажами хранения и между этими аллеями, раскладывая на них коробки с банками и бутылками. Боты подчинялись централизованным командам с серверов, стоящих в центре управления, и обладали очень ограниченной автономией. Они не видели и не чувствовали друг друга. Они двигались по рассчитанным заранее траекториям и управлялись по беспроводной сети. Боты то и дело отключались от нее из-за перегрузок в собственных электронных платах, потери сигнала в стальных дебрях стеллажей склада и по множеству других причин.
Выход из строя одного бота замедлял систему, но не парализовывал ее полностью. Хуже было, если отключались сразу несколько. Никто толком не понимал, что при этом происходило в системе. Но регулярно, особенно в самый неподходящий момент, в ней случались какие-то резонансы и каскадные эффекты, когда все катилось к черту. Боты отключались один за другим, центральный сервер лихорадочно пытался перезагрузить их, каналы коммуникаций захлебывались потоками сообщений, и заканчивалось все полным коллапсом. Всю систему управления складом приходилось переключать вручную, нередко по нескольку раз за час.
Операторы сидели за дешевыми дребезжащими столами на мезонине между ячейками палетизации, перед двойными экранами, где отображалось состояние системы. Графический интерфейс оставлял, мягко говоря, желать лучшего. На его разработку никогда не хватало ресурсов, и на экранах система отображалась в виде какой-то кирпичной стены из разноцветных прямоугольников на черном фоне, ломаных линий, по которым перемещались квадратики, а также кружков и ромбиков с цветовой сигнализацией – очень в духе компьютерной анимации 1980-х. Основные тесты и отладки в системе приходилось делать через скрипты и команды, напечатанные в командной строке операторского окна. Операторы уже устали материться и меланхолично печатали что-то в командных строках, периодически вставая и заглядывая друг другу через плечо.
Сегодня система напрочь встала за полчаса до запланированного визита большого начальства и почти целый час упрямо сопротивлялась попыткам перезагрузить ее. На наше счастье, начальство опаздывало, пардон, задерживалось. Первыми прибыли представители заказчика – «Кока-Колы». Несколько их менеджеров почти постоянно сидели на складе, и я уже встречал их раньше. Но сегодня пожаловала целая делегация тех, кто не видел систему вживую, а только модели на картинках пауэрпойнт-слайдов и видеороликов (к тем и другим имел отношение и я). Чуть позже прибыло и высшее начальство из «Симботика».
Операторам к этому времени удалось перезапустить систему, но работать хоть сколько-нибудь стабильно она отказывалась. То и дело отключались целые ярусы (их в системе было двадцать, и по каждому, переливаясь зелеными, синими и красными светодиодами, бегали семь или восемь ботов). Даже если ярусы не отключались целиком, боты часто запаздывали с выполнением своих задач – стояли на месте или блокировали друг друга, как автомобили на плохо организованном перекрестке. Иногда они и вовсе растрачивали свой электрический заряд до нуля и вставали намертво, мешая другим ботам выполнять задачи. В результате, вместо того чтобы выходить по конвейерам непрерывным потоком каждые четыре-пять секунд, коробки то и дело застревали где-то в недрах системы и не добирались до ячеек палетизации, оставляя роботов-палетизаторов в холостом режиме с приподнятыми руками, словно гребные лодки после команды «суши весла». Конвейеры продолжали урчать, бесполезно расходуя электричество. Даже в холостом режиме автоматика скрипела и звенела. Периодически пищали разнообразные датчики, недовольные происходящим. Лифты, перемещающие коробки по вертикали, ездили туда-сюда с глухим лязгом. На каждом цикле они возили за собой толстую цепь из пластмассовых звеньев, оплетающую электропроводку, которая питала вилочный механизм, подхватывающий коробки снизу. Платформа (мезонин), где находились роботы-палетизаторы, не обладала достаточной жесткостью и все время дрожала под ногами, добавляя дребезжание на стыках конструктивных элементов к общему гулу и писку всей системы.
Когда же коробки доходили до ячеек палетизации, проблемы не кончались, но становились еще более заметными. Роботы-палетизаторы нередко подхватывали коробки неудачно, с перекосами, или слишком крепко сжимали их грипперами (механизмами захвата), сминая картонные упаковки. Еще больше ошибок было в момент, когда коробки укладывались на строящуюся палету. Некоторые упаковки выпадали из вилок робота со слишком большой высоты и ложились наискосок или в нескольких сантиметрах от расчетной позиции. Обернутые в полиэтилен упаковки бутылок иногда по инерции проскальзывали дальше при укладке или даже падали с палеты. Случалось, что вилки робота задевали коробки, уже уложенные на палеты, и сдвигали их, нарушая структуру нижних слоев, а иногда и вовсе разрушая их.
Роботы укладывали коробки одну за другой на раз-два: слева, справа, слева, справа, чух-чух-дзинь-чух-чух. В максимальном темпе рука одного робота ставила коробку на палету чуть дольше чем за четыре секунды. Но в работе было много перерывов, замедляющих подачу коробок, и тогда рука робота зависала над конвейером, ожидая своей очереди. Зачастую перерыв в работе длился всего несколько секунд, но иногда ожидание занимало минуты. В конце концов пустая сторона ячейки оживала и из чрева склада появлялся долгожданный поток коробок, рывками двигающийся по конвейерам. Бездействовавший робот начинал урчать и, сначала медленно, а через несколько секунд с нормальной скоростью, подхватывал запоздавшие коробки и укладывал на палету.
* * *
За пятнадцать минут до приезда большого начальства техникам наконец удалось победить системный сбой, и боты довольно резво забегали по внутренностям склада, собирая коробки для отправки на конвейеры, ведущие к роботам-палетизаторам. Но назойливые перерывы в работе агрегатов не исчезали. Не было почти ни секунды, когда бы вся система работала в полную силу. На каком-нибудь участке возникала остановка, а когда работа на нем возобновлялась, замедление перемещалось в другое место.
В системе было множество довольно любопытных движущихся механизмов, но после беглого осмотра разных компонент начальственные делегации неизменно кучковались около ячеек палетизации – несомненно, самых зрелищных частей системы. Именно они производили конечный продукт – те самые палеты, которые загружали в фуры и доставляли в магазины.
Проблема была в том, что процесс палетизации на этом этапе больше напоминал комедийный скетч, чем виртуозно отлаженный индустриальный механизм. Даже если автоматика и электроника работали хорошо, руки роботов строили очень уродливые палеты. Они выглядели так, будто трехлетний ребенок играл в кубики на полу и выстраивал их в случайные и неустойчивые конструкции, где шестилетний справился бы уже намного лучше. Там, где можно было уложить целый плотный слой одинаковых бутылочных упаковок, роботы выстраивали шатающиеся двух-, трех- или даже четырехэтажные небоскребы. Между ними пролегали широкие улицы свободного пространства. Иногда целый угол палеты оставался пустым, в то время как на противоположном коробки громоздились выше человеческого роста.