Эту задачу в первой версии автоматической системы «КейсПика» решили весьма нетривиально: спроектировали и собрали непрерывный вертикальный конвейер – MVC (Multi-platform Vertical Conveyor). По виду он напоминал колесо обозрения в городском парке. Платформы для перемещения коробок на этом лифте двигались по траектории, походившей на слегка скругленный прямоугольник: вверх, вперед, вниз, назад и снова вверх (или в обратном направлении). Платформы крепились к двум парам движущихся параллельно с равной скоростью цепных лент, разнесенных по горизонтали вдоль направления движения вперед-назад. Таким образом, платформы в каждый момент времени располагались строго горизонтально и не болтались в воздухе при смене направления движения, как при шарнирном закреплении к одному цепному конвейеру. Сами платформы немного смахивали на кресла для горнолыжного подъемника – конечно, без мягких сидений, а с конструкцией наподобие вилки из семи зубьев, где и располагались коробки при движении (см. цв. вкл., рис. 3). Почти аналогичные вилки, но из шести зубьев, были и у каждого бота. Бот подходил к краю своего яруса и выдвигал вилку вбок, параллельно оси своих ведущих колес. Платформа с коробкой медленно опускалась, ее зубья проходили между зубьями бота, и коробка оставалась на его вилке, как на вытянутых руках (см. цв. вкл., рис. 4).
На выходе процесс был обратным. Бот подъезжал к краю яруса хранения, выдвигал вилку с коробкой, платформа MVC подъезжала снизу и подхватывала эту коробку. Бот задвигал свою вилку внутрь и мог ехать дальше. Коробка же проходила чуть более половины пути по движению MVC – сначала до самого верха, затем вниз. Там ее принимало устройство, напоминающее все ту же вилку бота, под названием PnD (Pick-and-Drop Conveyor, дословно – конвейер «подхвати-и-поставь»). Вилка выдвигалась чуть вперед, подхватывала коробку с платформы MVC и задвигалась обратно, а затем ее зубья немного опускались, проходя между роликами конвейера. Этот роликовый конвейер сдвигал коробки вбок, после чего они проходили через несколько других лент конвейеров и в конце концов добирались до робота палетизации.
С коробками на входе система работала симметрично: они доставлялись с конвейера, где их подхватывали и приподнимали зубья PnD, затем последние выдвигались вперед, и коробки принимали проходящие между ними зубья вертикального конвейера MVC. Коробки поднимались до верхней точки MVC, и затем, на цикле опускания, их ожидали выдвинутые вперед вилки бота. Если, конечно, бот успевал подъехать к месту стыковки на краю яруса хранения. Это было одним из уязвимых мест системы.
Весь этот механизм по-настоящему впечатлял. Платформы MVC двигались неторопливо, с негромким гудением, практически без вибрации и по строго повторяющимся траекториям. Коробки с платформ MVC ложились на вилки ботов или, наоборот, подхватывались с них при движении вверх мягко и почти бесшумно.
Но ключевой компонентой системы контроля была синхронизация ботов и платформ MVC. Последние располагались на расстоянии полутора метров друг от друга и проходили эту дистанцию за 5 секунд, двигаясь со скоростью 30 сантиметров в секунду. Чтобы положить коробку на нужную платформу MVC, бот должен был выдвинуть ее на своих вилках, попав в интервал менее этих пяти секунд. И хотя расстояние между платформами составляло 1,5 метра, на нижней уже могла стоять другая коробка высотой до 40 сантиметров. Оставалось чуть больше метра, или около 3,5 секунд, но, учитывая саму процедуру выдвижения вилки и некоторые шероховатости в системе, нужно было синхронизировать процесс обмена коробками между ботом и платформой в течение менее 2 секунд. Это не безумное требование, но оно практически не оставляло времени на ошибки.
Подхватив на одном из ярусов стеллажей упаковку, бот отвозил ее на место хранения, определенное с точностью до сантиметра. Механизм укладки коробки также включал в себя выдвигающиеся вилки бота. На стеллажах были закреплены равноудаленные друг от друга алюминиевые профили, напоминающие перевернутую букву «п» – или шляпу, за что получили название hat sections. Вилки бота проходили между вертикалями «п», опускались на пару сантиметров, и упаковка оставалась лежать на профилях, а вилки бота задвигались обратно (см. цв. вкл., рис. 5). На выходе, когда коробки отправлялись на палетизацию, процесс был обратным. Вилки вдвигались в промежутки между профилями под хранящимися упаковками, поднимали коробку со стеллажа и задвигались вместе с нею внутрь кузова (payload bay) бота. Операция занимала больше пятнадцати секунд. Само выдвигание-подъем-задвигание производилось всего секунд за пять, остальное время занимали процедуры проверки – действительно ли упаковка целиком находится внутри кузова бота или, при укладке на стеллажи, действительно ли бот остался пустым.