
Привет! Меня зовут Валерий Ильин, я руководитель сектора разработки мобильных роботов в Яндекс Роботикс. До недавнего времени в нашей линейке роботов отдельно жили мобильные роботы (робот‑инвентаризатор и робот‑тотоносец) и проекты на основе роборук (депалетизатор, пикер). Решения закрывали две основные операции на складе: перемещение товара и его отбор, но по отдельности. Идея объединить их и собрать робота, который закрывает обе операции, зрела в мыслях уже давно. Но прежде чем задумка воплотится в жизнь, ей нужно было созреть, набраться сил, а нам — опыта.
В феврале 2025 года мы начали разработку автономного робота, который сможет делать всё, что делает человек‑комплектовщик, — только не уставая и в предсказуемом темпе.
И сегодня я хочу рассказать о нашем роботе‑комплектовщике. Пока это только прототип, разработанный за 4,5 месяца, но у нас есть техническая концепция, которую мы планомерно реализуем.
Ниже разберём, с какими ограничениями сталкивается классическая роботизация (стационарные роборуки, AMR‑ и FMR‑тележки), почему склады не готовы радикально менять процессы и как это повлияло на архитектуру решения. А ещё я покажу, как мы сделали локальное планирование на роботе, доработали софт мобильной платформы, а также добавили камеры и обработку глубины. В конце поделюсь промежуточными результатами и расскажу о наших планах — от стекинга до тестов на реальных складах.
Зачем нужен робот-комплектовщик
Склад — живой организм. Здесь постоянно появляются новые палеты, перемещаются люди и техника, меняется конфигурация проходов.
Как правило, все заказы комплектуются поштучно, коробами, а иногда отгружается вся палета целиком. Бóльшая часть операций происходит с коробами. Сотрудники склада каждый день перекладывают тонны коробок с места на место, вручную собирают палеты, развозят их на рохлях, сортируют, дополняют, отправляют — и всё это подразумевает значительные физические нагрузки.
Как выглядит усреднённый процесс сборки готовых палет:
Из буферной зоны хранения пустых палет берётся поддон и устанавливается на рохлю.
Человек перемещает рохлю по складу к ячейке по заданию из Warehouse Management System (WMS), забирает короба в указанном количестве с донорской палеты, складывает короба на исходящую. После выполнения одного задания перемещается к следующей ячейке, которая указана на терминале сбора данных (ТСД). При этом система WMS уже оптимизирует пробеги сотрудников и учитывает порядок отбора — от более тяжёлых к более лёгким коробам.
После сборки палета отправляется в зону палетообмотки.
Далее — в выходной буфер, откуда готовая палета отгружается со склада.

На схеме показан весь цикл — от подачи пустой палеты из зоны хранения до выхода готовой сборки в буфер отгрузки. Ч‑Ш обозначает «человек на штабелёре», а Ч‑К — «человек на комплектации»
Процесс Pick by order — сборка готовых к отгрузке палет — сегодня ключевой для стандартных складов с напольной зоной комплектации. Это одно из самых ресурсоёмких направлений: оно занимает около 50% рынка складской логистики.
За смену сотрудники проходят от 8 до 25 км по территории склада и могут поднимать порядка 10 тонн (а иногда и больше) — полностью вручную. Ошибки, простои, влияние человеческого фактора и высокая стоимость таких операций — так выглядит реальность современной складской логистики.
Практически все склады живут в логике: «Пусть остаётся человек, он справится». Комплектация грузов связана с тяжёлой физической работой, и именно здесь роботы берут нагрузку на себя, освобождая людей от рутинного труда.
Процесс перестройки склада требует много времени и ресурсов, поэтому компании рассматривают гибкий, недорогой и эффективный инструмент, который можно быстро включить в операционку — и так же быстро отключить. Но на серьёзную перестройку помещений и процессов ради роботизации в России готов далеко не каждый. Например, это ограничивает применение стационарных роборук: для них требуется выделенное место под робоячейку и организация доставки палет к ней для сборки или разбора. Похожая проблема возникает и с AMR (Autonomous Mobile Robot) или FMR (Forklift Mobile Robot): полностью убирать людей из зоны их работы склады не готовы, а при совместной работе с людьми производительность таких систем заметно падает.
Поэтому мы решили разработать робота, который выполняет задачи комплектации и при этом вписывается в требования бизнеса. Мы придумали такую концепцию:
робот автономно перемещается по складу;
работает рядом с людьми;
отбирает коробки с палет на первом этаже стеллажей;
сканирует штрихкоды и интегрируется с Яндекс RMS;
самостоятельно возвращается на зарядку.
И после этого началось самое интересное…
Путь робота: от переноски коробок до отладки компьютерного зрения
Придумываем модельный сценарий
Мы начали работу в феврале 2025 года на полигоне в центре робототехники Яндекс Роботикс. Первым делом разработали тестовую базовую задачу, которая стала бы неким ориентиром и описывала базовый сценарий использования робота.

Мы взяли за пример операцию комплектации. Попросили нашего коллегу повторить увиденное на складе:
Взять пустую палету, поставить на рохлю.
Доехать до ячейки А.
Отобрать с донорской ячейки на исходящую 2–3 короба.
Доехать до ячейки B.
Отобрать с ячейки ещё 2–3 коробки.
Доехать до точки.
Операцию такого сценария можно увидеть на видео ниже. Как можно заметить, наш коллега не сильно счастлив, что делает эту операцию вручную, он очень ждёт робота!
Проектируем железо
К счастью, разработку робота мы начали не с нуля. На момент начала работ у нас уже были:
мобильная платформа как часть робота‑инвентаризатора, которая умеет ездить по складу и перевозить полезную нагрузку (например, мачту с камерами);
роботизированная рука UR10, способная хватать разные предметы (как управлять рукой, мы уже знали из других наших проектов).

Что нужно было сделать:
«посадить» руку на платформу;
разработать мобильный вакуумный захват;
оснастить всё необходимыми сенсорами и камерами для автономной работы робота;
предусмотреть место для исходящей палеты.
Пишем софт
Базовый софт робота‑инвентаризатора умел ездить по складу по «рельсам» — жёстко прописанной траектории в виртуальной карте. Он выполнял чётко поставленную перед ним задачу: провести мачту с камерами по центру аллеи (пространство между стеллажами), не ёрзать, не отходить от маршрута, определять себя чётко в пространстве.
На видео ниже — визуализация работы робота‑инвентаризатора из симуляции. Робот с базы едет к определённой алее, чтобы проехать её. Также прорисованы рельсы и ноды для разворота нашего робота.
Однако на практике не всё происходило гладко. На пути у робота образовывались препятствия — оставленная палета или мусор — и робот просто стоял и ждал, пока их уберут. Для этого рядом с роботом ходит человек: это не такая большая загрузка по силам и времени, ведь инвентаризация всего склада проходит всего за 1,5–2 часа.

Для робота‑комплектовщика требования по езде совсем другие: он должен быть полностью автономен, чтобы уметь передвигаться по складу длительное время и выполнять разные операции. Поэтому мы решили вложиться в разработку модуля локального планирования как части стека управления платформой. Мы доработали софт мобильной платформы так, чтобы робот мог автономно двигаться в «лабиринте» склада, доезжать до нужной ячейки и корректно парковаться.
На видео ниже показана одна из первых версий нашего планера — он работает на той же мобильной платформе, что и робот‑инвентаризатор.
Оцениваем промежуточный результат
И вот на дворе апрель. Наши HW‑инженеры смогли собрать первую итерацию робота, а SW‑разработчики написали софт для объезда препятствий. Давайте посмотрим на всё в сборе.
Робот может:
Доехать до ячейки, огибая препятствия.
Произвести отбор короба из ячейки с родного пульта управления манипулятора.
Теперь настало время роборуки!
Отлаживаем управление рукой
Разработку алгоритмов управления роборукой мы решили делать в два этапа. На первом мы реализовали телеуправление — программное управление рукой, при котором человек с помощью джойстика от VR‑гарнитуры определяет, куда двигаться роборуке, но обработка сигнала с джойстика происходит на целевом вычислителе. Это позволило несколько отодвинуть задачи разработки алгоритмов восприятия и планирования движения роборуки и сфокусироваться на следующих задачах:
настройка низкоуровневого программного управления роборукой;
отладка программного управления мобильным компрессором через интерфейс GPIO на вычислителе;
подбор положения камер и настройка сбора данных для обучения нейронных сетей;
базовая интеграция алгоритмов управления платформой и роборукой в единую систему.
Дополнительно эксперименты с телеуправлением дали нам некоторую интуицию и понимание того, какую информацию хотелось бы иметь как результат работы алгоритмов распознавания и какие траектории надо уметь планировать для решения задачи комплектации.
На видео наш коллега управляет мобильной рукой, установленной на платформе. Тут он уже более счастливый, потому что ему самому не приходится перетаскивать тяжёлые коробки — это делает робот.
Проработав все аспекты через телеуправление, хочется свести всё в автоматике — но как?
Учим руку видеть окружающий мир
Посмотрим на соседний проект — робот‑депалетайзер. Мы сделали этого робота, чтобы он разгружал коробки со стационарной палеты на ячейку к конвейеру.
Пайплайн работы системы сканирования на таком роботе выглядит так:
Сегментация по RGB‑изображению.
Построение карты глубины.
Трансфер результатов сегментации изображения в 3D и фильтрация сцены.
Анализ структурных объектов и выбор объекта для следующего пика.

Что хорошо здесь для нас: во‑первых, уже есть некоторая схема по распознаванию целевого ассортимента на изображениях и его программной обработке; а во‑вторых, проработан пайплайн, обеспечивающий планирование траекторий роборуки.
Что из этого нам предстояло доработать:
Добавить сканирование коробок сбоку.
Робот‑депалетайзер складывает коробки в одну точку, а нам необходимо складывать коробки, стекая их друг с другом, на палету, расположенную на роботе.
Перенести работу с камерами на робота вместо использования стационарных камер.
Чуть подробнее рассмотрим сканирование сбоку. В отличие от домена, когда мы смотрим на палету сверху, по виду сбоку не всегда понятно, как глубоко необходимо занести вакуумный гриппер, особенно если ВГХ (весогабаритные характеристики) товара неизвестны.

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

На практике это позволяет работать с высокими палетами и гибко подстраивать траекторию робота в процессе взятия коробки.
По итогу наши камеры видят так (на видео ниже два вида: с обзорной камеры и камеры на гриппере).
Собираем модули в единое приложение
Следующим шагом стало объединение софта для распознавания и управления рукой, а также интеграция его с пайплайном управления платформой. В мобильной платформе мы используем ROS2 как основной фреймворк для обмена данными между нодами и библиотеку BehaviorTree для верхнеуровневого управления. В роборуке мы пошли тем же путём.
Мы добавили камеры, сканирование и обработку глубины, а также доработали модуль взятия короба (pick), который ориентируется на force‑torque‑сенсор робота. В результате удалось повторить операцию депалетизации: на видео ниже видно, как система складывает коробки в одну точку — аналогично тому, как это реализовано в роботе‑депалетайзере.
Ключевое отличие — теперь мы умеем работать с подвижными камерами, установленными прямо на роботе, и можем брать коробки вакуумом, видя их сбоку, а не сверху, как в случае депалетайзера. Промежуточный результат — в ролике ниже.
Мы сделали некоторую простую версию стекинга, чтобы не класть короба в одну точку, а приблизиться к полноценной операции комплектации. Сделать стекинг для сбора произвольной микс‑палеты — большая история: слишком много нюансов и подводных камней, заслуживающих отдельной статьи.
К чему мы пришли на данный момент
И вот он — итоговый результат работы робота. Что он может:
самостоятельно доезжать до ячейки;
объезжать препятствия, если встречает их;
отбирать коробки из ячейки;
укладывать их с учётом уже размещённых грузов;
возвращаться на базу с готовой сборкой заказа.
Наш коллега очень доволен, что его не просят побыть комплектовщиком — теперь он занимается только тестированием робота в комфортном офисе Центра робототехники Яндекса.
Что дальше?
Сейчас мы проектируем и собираем новую версию робота. Главное отличие — более грузоподъёмная и длинная роборука. Параллельно отлаживаем софт для управления мобильной платформой на одном из складов Маркета и проводим тесты новой руки в стационарной конфигурации.
Наши планы для робота‑комплектовщика:
повысить уровень автономности на реальном складе;
увеличить грузоподъёмность роборуки (сейчас мы можем брать коробки до 7 кг, а хотим до 15–20 кг);
увеличить скорость мобильной платформы;
протестировать систему не только в лаборатории, но и в реальных условиях.
О прогрессе обязательно расскажем в следующих статьях — следите за апдейтами.
Комментарии (4)
ePGfree
25.08.2025 07:26Главное не забывать, что все в этом роботе когда то сломается и сделать оборудование пригодное для диагностики и ремонта с вменяемыми мануалами.
inkelyad
Всегда интересовало, что происходит, когда внутри картонной коробки что-то тяжелое и такой вот способ ее перемещения(присосками) приводит к тому, что содержимое вываливается снизу.
Пишут злобное письмо поставщику о том, что он тару, не соответствующую стандарту использовал?
Или все-таки есть манипуляторы, которые снизу-сбоку могут коробки хватать?
rPman
Мне кажется дешевле требования к коробкам и грузам выставить, чем использовать более сложные системы захвата.
Просто тяжелый груз это фигня (брать груз с боку вилочным погрузчиком), а вот универсальную 'не коробку' попробуй взять, не сломать и запаковать в коробку по требованиям выше.
GidraVydra
Пишут злобное письмо поставщику о том, что он тару, не соответствующую стандарту использовал?
Просто штрафуют, и всё