Камера как датчик WMS: что на складском видео действительно видно

14.08.26

Интеграция - Распознавание документов и образов

Расчёт применимости видеонаблюдения к складским процессам. Разбор для тех, кто внедряет и сопровождает WMS на 1С.

Скан — это не действие

Любая WMS работает с последовательностью подтверждений. Отсканирована ячейка, отсканирован товар, введено количество, строка закрыта. Между двумя соседними подтверждениями система не знает о складе ничего — и не может знать: на этом интервале у неё нет источника данных.

Обычно это не считают проблемой, потому что интервал кажется коротким. На деле он и есть основное рабочее время. Скан занимает секунду. Между сканами — путь до ячейки, поиск позиции, ожидание пополнения зоны, занятый проезд, разговор, перекур. В журнале сканирований всё это выглядит как пустое место между двумя строками с временем.

Отсюда класс задач, которые внутри учётного контура не решаются — не по недосмотру проектировщика, а потому что решать их нечем:

  • сколько времени заняло само задание, а сколько ожидание;
  • где и в какие часы собирается очередь;
  • дошёл ли человек туда, куда его отправило задание;
  • соответствует ли закрытая строка физическому действию.

Последний пункт стоит развернуть. Для WMS скан и есть факт. Если пять заданий закрыты за минуту, система примет это как пять выполненных отборов, хотя человек за минуту не может оказаться в пяти проходах. Проверить это изнутри нечем: любая проверка обопрётся на те же самые сканы. Система работает не с реальностью, а с её изложением, и другого источника у неё нет.

Откуда я на это смотрю

Двадцать пять лет занимаюсь складскими системами на 1С: проектирование, тиражные решения со статусом «1С:Совместимо», внедрения на десятках площадок, от небольших складов до 3PL. Последний год работал аналитиком в складской группе ИТ-департамента розничной сети: восемь складов, 250 магазинов, сильно переработанная УТ.

Там мне досталась задача, которая звучала просто: понять, сколько времени сотрудник реально работает, а сколько стоит. Формально она решалась режимом ручной паузы на ТСД — сотрудник сам отмечает, что вышел из процесса. Полгода обсуждений привели к выводу, очевидному с самого начала: любой учёт времени, построенный на действиях самого сотрудника, измеряет добросовестность заполнения, а не работу. Полноценный вариант требовал переписывания всей подсистемы учёта рабочего времени и упирался в то же самое — данные о человеке поступают только от человека.

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

Спор о том, что видно на камере, решается арифметикой

Обсуждение возможностей видеоаналитики обычно застревает на обмене мнениями: одна сторона говорит «камера всё увидит», другая — «с двадцати метров ничего не разобрать». Обе правы, потому что говорят о разных точках. Спор снимается двумя формулами.

Ширина поля зрения на дистанции D составляет W = 2 · D · tg(HFOV / 2), где HFOV — горизонтальный угол объектива. Разрешение на объекте: px/m = горизонтальное разрешение матрицы / W. Для камеры 1080p с типовым обзорным объективом 70° получается: на двух метрах 686 пикселей на метр, на четырёх 343, на десяти 137, на двадцати 69, на тридцати 46. Камера 4K удваивает эти числа, узкий объектив 45° добавляет ещё примерно 55 процентов.

 

Рис. 1. Разрешение на объекте в зависимости от дистанции и типа камеры, с порогами задач

 

Дальше остаётся сопоставить полученное число с потребностью задачи. Ориентиры такие: устойчивое присутствие и трекинг человека — от 40 до 80 пикселей на метр; класс действия, счёт паллет в проёме и локализация до паллето-места — от 80 до 150; ячейка полочного стеллажа и сверка предмета с фото карточки — от 250 до 600; чтение линейного кода на паллетной этикетке — от 4000, а DataMatrix «Честного знака» требует на порядок больше и остаётся задачей сканера.

Теперь конкретно про ячейку, потому что это главный предмет спора. Паллето-место — примерно 1,2 метра по фронту стеллажа. На двадцати метрах при 1080p оно занимает около восьмидесяти пикселей: этого достаточно, чтобы локализовать человека или паллету относительно сетки ячеек, тем более что сетка калибруется один раз по геометрии стеллажа и дальше не меняется. Ярус паллетного стеллажа — полтора-два метра по высоте, различается тем более.

Ячейка полочного стеллажа — другой случай: 30–50 сантиметров по фронту, на двадцати метрах это 20–40 пикселей, чего не хватает. Но полочные стеллажи и мезонины не просматривают с двадцати метров. Там камера стоит в трёх-пяти метрах и даёт от 270 до 460 пикселей на метр, то есть от 80 до 230 пикселей на ячейку.

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

Как посчитать под свой объект

Расчёт занимает несколько минут и не требует ничего, кроме паспорта камеры и рулетки. Порядок такой. Взять горизонтальное разрешение матрицы из документации. Взять угол обзора: он либо указан прямо, либо считается из фокусного расстояния и размера матрицы. Измерить расстояние от камеры до дальней границы интересующей зоны — считать нужно по худшей точке, а не по средней. Подставить в формулу ширины поля зрения и разделить разрешение на результат.

Дальше сравнить с порогом задачи и с реальным размером объекта: паллето-место 1,2 метра, паллета 1,2 × 0,8, человек по ширине около полуметра, ячейка полочного стеллажа 0,3–0,5 метра. Если получившееся число попадает в порог с запасом менее чем в полтора раза, лучше считать, что задача не решается: реальные условия — блики, контровой свет, перекрытия, наклон ракурса — съедают этот запас первыми.

Отдельно проверить угол. Расчёт выше даёт разрешение для плоскости, перпендикулярной оси камеры. Если камера смотрит вдоль прохода, дальний конец сжимается перспективой, и на нём фактическое разрешение по горизонтали в два-три раза ниже расчётного. Для длинных проходов это означает либо вторую камеру с противоположного конца, либо приём границы зоны там, где расчёт ещё сходится.

Точки наблюдения: покрывать нужно узлы, а не площадь

Возражение «камеры не покрывают весь склад» верно и при этом не мешает: сплошное покрытие не требуется. Операции концентрируются в узлах, и почти вся ценность собирается в пяти-шести местах.

 

Рис. 2. Узлы наблюдения на типовом складе и задачи, решаемые в каждом

 

Отдельно про подход «работать на том, что уже висит». Это верная стартовая позиция и неверная догма. Существующие обзорные камеры дают базовое покрытие: присутствие, перемещения, хронометраж, заторы. Если узел требует большего разрешения, туда правильнее поставить камеру под задачу. IP-камера с нужным углом стоит несколько тысяч рублей, кронштейн и час монтажника — ещё столько же; на фоне стоимости одного разобранного расхождения это не та строка сметы, вокруг которой имеет смысл спорить. Обследование площадки перед запуском как раз и отвечает, где хватает имеющегося, а где дешевле доснять или довернуть.

Проём ворот

Узкая фиксированная сцена, однонаправленное движение, крупный объект. Паллета в проёме занимает сотни пикселей, ракурс постоянен, фон не меняется. Счёт паллет здесь решается уверенно, а вместе с ним и сверка: задание на отгрузку предполагает восемнадцать паллето-мест, в проём проехало семнадцать. Расхождение видно до того, как машина ушла, а не при приёмке у получателя. Та же камера даёт время простоя техники у дока — величину, которой нет ни в одном отчёте WMS.

Стол контроля

По соотношению «разрешение к ценности» это лучшая точка на складе. Камера висит в полутора-двух метрах над рабочей поверхностью и даёт от 686 пикселей на метр при 1080p до 1371 при 4K. В сети, где я работал, столы контроля уже оборудованы камерами — их ставили для разбора претензий, и всё остальное время они пишут в архив.

Рис. 3. Стол контроля: три независимых признака в одном кадре

 

Сверка с фото из карточки товара — это верификация, а не распознавание. Задача формулируется не как «что это за товар», а как «похоже ли лежащее на столе на то, что ожидается по строке задания». Закрытая задача с одним эталоном принципиально легче открытой классификации по всей номенклатуре, а фотографии в карточках сейчас заполнены почти везде.

Второй признак — габариты: при калиброванной сцене размеры предмета сверяются с весогабаритными характеристиками из карточки. Третий — количество мест в кадре против количества в строке. Каждый признак по отдельности слабый; событие имеет смысл создавать при расхождении минимум двух. Так отсекается основная масса ложных срабатываний, а именно они убивают доверие к системе быстрее всего.

Мезонин мелкоштучки

Малая дистанция компенсирует малый размер ячейки. При камере в трёх-пяти метрах адресация до ячейки полочного стеллажа выполнима, и здесь же работает контроль последовательности: подошёл к нужной секции или к соседней.

Где граница проходит на самом деле

Список короткий и от выбора модели не зависит.

  • Чтение DataMatrix «Честного знака» обзорной камерой. Модуль кода — доли миллиметра, требуемое разрешение на порядок выше того, что даёт любая потолочная камера. Это задача сканера или специальной камеры на дистанции в двадцать сантиметров.
  • Содержимое закрытого короба. Закрытая коробка выглядит как закрытая коробка.
  • Зоны без обзора. Камера видит свою зону, и это входное условие, а не дефект настройки.
  • Верхние ярусы, перекрытые стоящей паллетой. Перекрытие лечится вторым ракурсом, а не моделью.
  • Намерение человека. Наблюдение даёт расхождение и основание, по которому оно получено; интерпретация остаётся за человеком.

Чем это отличается от охранного видеонаблюдения

Различие принципиальное, и его стоит проговорить, потому что на большинстве складов камеры уже стоят именно как охранные. Охранная система отвечает на вопрос «что было в этом месте в это время» и работает в режиме запроса: человек знает, что искать, и идёт в архив. Она не знает ничего о заданиях, о номенклатуре и о том, что считается нормой.

Разница не в алгоритмах распознавания, а в наличии второй стороны. Без потока заданий из учётной системы любая аналитика по видео остаётся описанием картинки: «человек стоял в проходе четыре минуты» — это факт без значения, потому что неизвестно, должен ли он был там стоять. С потоком заданий тот же факт становится расхождением, у которого есть адресат и цена.

Практическое следствие: проект, который начинается с выбора моделей детекции, почти всегда упирается в вопрос «и что теперь с этим делать». Начинать имеет смысл с обратного конца — с того, какое расхождение между планом и фактом должно порождать какой объект в учётной системе.

Точки и линия

WMS даёт последовательность точек: скан, скан, скан — каждая с меткой времени, оператором и адресом. Наблюдение даёт линию: кто-то находился в такой-то зоне с 11:58 по 12:04 и четыре минуты из шести не двигался.

Рис. 4. Одно задание отбора: журнал сканирований и непрерывное наблюдение

 

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

Что извлекается из сопоставления

Хронометраж операции. Задание закрыто в 12:04, оператор вошёл в проход в 11:58 и четыре минуты из шести провёл без движения. WMS покажет, что задание заняло шесть минут; сколько из них было работой, она не покажет никогда. Накопленный за месяц хронометраж по типам операций и зонам — это нормировка, построенная на наблюдении, а не на средних из справочника.

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

Маршрут. Задание ведёт в проход 5, оператор восемь минут провёл в проходе 8. Формулировка события — «задание ведёт в другой проход», а не «взял не ту позицию». Пока паллета на складе, проверка стоит несколько минут; та же ошибка, всплывшая у клиента, стоит на порядки дороже.

Простои и очереди. Кто чего ждёт, в каких зонах, в какие часы. Комплектовщик у зоны без движения — ожидание пополнения. Четыре задания в одном проходе одновременно — затор. Погрузчик у дока, который двадцать восемь минут никуда не едет.

От факта к причине

Отдельно стоит сказать про то, чего одна регистрация фактов не даёт. Событие само по себе — ещё не причина, и система, которая умеет только фиксировать, быстро превращается в поток уведомлений, который перестают читать.

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

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

Как оценивать эффект в деньгах

Событие без стоимости — ещё одна строка в отчёте, который никто не откроет. Расхождение имеет смысл сразу переводить в деньги, и формула должна быть открытой, чтобы её можно было оспорить.

Пример со слоттингом. За месяц по позиции прошло 4200 отборов. Фактический маршрут по наблюдению длиннее оптимального на 30 метров. Получается 126 километров лишней ходьбы и около 29 часов рабочего времени; при ставке 360 рублей в час — примерно 10 400 рублей в месяц на одной перестановке двух ячеек. Для ошибок отбора формула та же по устройству: строк в день × доля ошибок × стоимость разбора одной ошибки × рабочих дней. Три множителя из четырёх берутся из WMS, четвёртый называет сам склад.

Смысл не в точности до рубля, а в сопоставимости. Когда рекомендация оценена в деньгах, её можно поставить в очередь рядом с другими расходами. Пока она сформулирована как «здесь неоптимально», она не конкурирует ни с чем.

Контур обработки

Рис. 5. Распределение обработки между площадкой и сервисом

 

Агент на площадке — мини-ПК с docker и исходящим HTTPS-соединением, без входящих портов. Он разбирает поток, берёт от 0,2 до 1 кадра в секунду и отдаёт наружу не видео, а описание сцены. Видеоархив остаётся на площадке: это принципиально и для службы безопасности, и для трафика. Со стороны WMS читается поток заданий и операций, только чтение.

Частота кадров здесь не занижена ради экономии. Складские процессы медленные: человек идёт по проходу секунды, паллета стоит в ячейке часами. Для задач хронометража и локализации кадр в секунду избыточен, а нагрузка на железо при этом отличается на порядок.

Контракт события

Событие — не картинка и не результат работы модели, а структура с заранее описанным составом полей:

{

  "event_id": "0f6c1e2a-...",

  "occurred_at": "2026-08-08T12:04:17+03:00",

  "type": "route_mismatch",

  "zone": "A-05",

  "wms_ref": { "task": "1847", "line": 3, "operator": "12" },

  "observed": { "zone": "A-08", "from": "11:58:41", "to": "12:04:02" },

  "confidence": 0.91,

  "model": "aisle-detect@2026.06.3",

  "cost_estimate_rub": 1900,

  "evidence": "https://agent.local/f/0f6c1e2a.jpg"

}

Три поля здесь важнее остальных, и от них зависит, останется ли доверие к системе через полгода.

Поле event_id обеспечивает идемпотентность — свойство операции давать один и тот же результат при повторном выполнении. Если из-за обрыва связи сообщение придёт дважды, в WMS не должно появиться два документа. Со стороны 1С это регистр сведений с измерением по идентификатору события: перед созданием документа проверяется, не приходил ли такой идентификатор раньше. Тридцать строк кода, которые избавляют от разбирательств «откуда у нас четыре акта на одно происшествие».

Поле model фиксирует версию модели. Модели дообучаются и откатываются; если в событии не записано, какая версия его породила, через три месяца невозможно понять, почему система стала вести себя иначе. Это то же самое, что версионирование конфигурации.

Поле confidence задаёт порог, ниже которого событие не создаётся, и настраивается по участку. Оно же даёт обратную связь: пометка «ложная тревога» отправляет кадр в разметку, и порог со временем уточняется под конкретный склад. Доля подтверждённых событий — главная метрика: склад, переставший читать уведомления, эквивалентен отсутствию системы.

Как это выглядит со стороны WMS на 1С

Есть два уровня подключения, и начинать разумно с первого.

Уровень первый: конфигурация не меняется. Чтение заданий и операций идёт через OData или существующий HTTP-сервис на чтение, вывод — в мессенджер ответственному и в отчёты. Релизный цикл не затрагивается, служба сопровождения не вовлекается. Этого достаточно, чтобы понять, есть ли на площадке что ловить.

Уровень второй: событие попадает в WMS. Появляется HTTP-сервис приёма: метод POST, разбор JSON, проверка идентификатора по регистру сведений, создание объекта. Дальше работают штатные механизмы, которые есть в любой складской конфигурации: задача на проверку ячейки или пересчёт, акт расхождения, запись в регистр сведений по статусу грузоместа, уведомление пользователю или роли.

В терминах склада правило простое: система увидела расхождение — у ответственного появилась задача, которую видно на привычном экране, а не в стороннем интерфейсе, куда никто не заходит.

Со стороны WMS читаются задания и их строки, журнал сканирований, справочник ячеек и зон, сотрудники и смены. Ничего экзотического: всё это есть и в Акселоте, и в Ситеке, и в самописных решениях на УТ, отличается только наименование объектов.

Что из этого следует

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

Применимость считается заранее, до покупки чего бы то ни было: паспорт камеры, расстояние до дальней границы зоны, две формулы. Покрывать имеет смысл узлы, а не площадь. И без потока заданий из учётной системы всё это остаётся охранным видеонаблюдением с красивой аналитикой поверх.

Вопросы к сообществу

Три вопроса, ответы на которые мне интересны больше, чем согласие с текстом.

Первый: сталкивался ли кто-нибудь с задачей учёта времени между сканами и чем её закрывали? Меня интересуют именно рабочие решения внутри 1С, включая те, которые в итоге признали неудачными.

Второй: где в приведённых расчётах ошибка? Пороги задач я привёл как ориентиры по своему опыту, и они наверняка уточняются в обе стороны.

Третий: если у вас на складе стоят камеры и работает WMS — какое расхождение между планом и фактом вы хотели бы увидеть первым? Не в идеале, а то, что мешает на этой неделе.

Вступайте в нашу телеграмм-группу Инфостарт

WMS 1С:WMS машинное зрение компьютерное зрение видеоаналитика автоматизация склада складская логистика управление складом интеграция 1С HTTP-сервис JSON API нейросети хронометраж контроль сборки Акселот Честный знак DataMatrix идемпотентность

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Учет документов Распознавание документов и образов Бухгалтер Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Одна из наиболее удобных обработок автоматического прикрепления большого количества документов-оригиналов к документам 1С. Для файлов поточного сканирования автоматически определяются начало и конец каждого документа. Поддерживаются штрихкоды, QR-коды, отсканированные PDF документы без штрихкодов, сформированные в ЭДО текстовые PDF документы. Поддерживаются входящие и исходящие документы-оригиналы.

87108 руб.

23.12.2021    17272    34    25    

15

SALE! 35%

Учет документов Распознавание документов и образов Системный администратор Программист Руководитель проекта 1С:Документооборот Платные (руб)

Обработка многостраничных файлов PDF с разбиением на отдельные документы по штрих-коду и сохранение документов в отдельные файлы для. Не требуется интернет, внешние утилиты командной строки и т.д. Плюсы: скорость работы, независимость от внешних библиотек или утилит, достаточно большой перечень поддерживаемых типов ШК, возможность фильтрации по формату и данным ШК. Не требует установки (portable), может работать несколько экземпляров ПО на одном хосте с разными настройками.

12200 руб.

07.07.2026    513    2    0    

1

Распознавание документов и образов Нейросети Бухгалтер 1C:Бухгалтерия Россия Платные (руб)

Каждый бухгалтер знает: авансовые отчеты - это рутина, которая отнимает очень много времени. Сотрудники приносят чеки из командировок, хозяйственных покупок, представительских расходов. Всё это нужно вручную перепечатывать в Excel или 1С - дату, поставщика, ИНН, сумму, позиции товаров. Ошибки, опечатки, потеря времени. Работает с локальными провайдерами. Важно! Для распознавания сканов, фотографий и PDF без текстового слоя выбранная языковая модель обязательно должна поддерживать функцию Vision (визуальный анализ изображений). Без Vision обрабатываются только текстовые файлы. Запускайте используя локальные ИИ, без подписок и ограничений.

6100 руб.

26.08.2026    138    0    0    

0

Распознавание документов и образов 1С:Предприятие 8 Россия Бесплатно (free)

В типовых бизнес-процессах организаций значительная доля трудозатрат приходится на ручной ввод данных из входящих документов. Счета на оплату, паспорта, анкеты, трудовые книжки, дипломы и другие документы поступают в различных форматах (PDF, изображения, DOCX, RTF, HTML) и требуют переноса реквизитов в учетные системы.

26.08.2026    631    user718500    0    

0

Распознавание документов и образов Программист Пользователь 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Кроссплатформенный инструмент для распознавания QR-кода с экрана вашего монитора.

1 стартмани

14.08.2026    825    5    SerVer1C    0    

13

Распознавание документов и образов Бухгалтер 1С 8.3 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:УТ Платные (руб)

Загрузите УПД, накладную, счёт, заказ или другой документ — AI распознает реквизиты и строки, найдёт контрагента и номенклатуру и создаст непроведённый черновик в УТ. Без ручного переноса таблиц и без шаблонов Excel.

7000 руб.

12.08.2026    320    0    0    

1

Распознавание документов и образов Нейросети Программист Россия Бесплатно (free)

Три слоя проверок вокруг нейросети, которые я снёс одним тестом. Плюс вторая развилка: Haiku из 21 позиции распознала 12, а на чистом документе отработала идеально. История о том, как выбирается модель для распознавания накладных — и почему выбирать одну оказалось неправильной постановкой вопроса.

05.08.2026    747    G_100802897175107255412    5    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. amiralnar 9 17.08.26 08:52 Сейчас в теме
Интересная тема, захотелось познакомиться с подробностями.

Но к сожалению текст с момента где рассказывается про камеры - обработан нейросетями и читать невозможно.
3. Michael_Kurkin 6 17.08.26 09:52 Сейчас в теме
(1) Спасибо, замечание справедливое.

Текст я готовил с ИИ-помощником. Расчёты, опыт и правки мои, а вот формулировки во многом машинные — и вышла ровная стена одинаковых абзацев. Вижу, что со второй половиной перестарался.

Чтобы не продираться, вот суть той части коротко.

Что видно на камере — считается, а не обсуждается. Ширина кадра на расстоянии D равна 2·D·tg(угол обзора / 2). Делим горизонтальное разрешение на неё — получаем пиксели на метр.

Обычная камера 1080p на 20 метрах даёт около 69 px/m. Паллето-место шириной 1,2 м займёт в кадре примерно 80 пикселей — этого хватает, чтобы понять, у какого места стоит человек. Ячейка полочного стеллажа шириной 30 см на тех же 20 метрах — это 20 пикселей, и вот тут уже никак. Но полки с 20 метров никто и не смотрит: на мезонине камера висит в 3–5 метрах и даёт в пять раз больше.

Дальше в статье таблица: сколько пикселей нужно каждой задаче. Всё остальное — следствие из этих двух чисел.

Если что-то конкретное интересно — спрашивайте, отвечу нормальным языком.
2. siamagic 17.08.26 09:15 Сейчас в теме
Отсюда класс задач, которые внутри учётного контура не решаются — не по недосмотру проектировщика, а потому что решать их нечем:

"сколько времени заняло само задание, а сколько ожидание;" - само задание заняло от начала до окончание сборки - всё что между этими событиями и есть время на задание


"где и в какие часы собирается очередь;" - где сканируют разные задания с наименьшим интервалом

"дошёл ли человек туда, куда его отправило задание;" - видно по шк которые сканировали там куда послало задание.

"соответствует ли закрытая строка физическому действию.
Последний пункт стоит развернуть. Для WMS скан и есть факт. Если пять заданий закрыты за минуту, система примет это как пять выполненных отборов, хотя человек за минуту не может оказаться в пяти проходах. Проверить это изнутри нечем: любая проверка обопрётся на те же самые сканы. Система работает не с реальностью, а с её изложением, и другого источника у неё нет." - как он у вас закрывает задание не сканируя?
4. Michael_Kurkin 6 17.08.26 10:23 Сейчас в теме
(2) Спасибо, это ровно тот разбор, которого я просил. По пунктам.

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

Это цепляет там, где по этим цифрам строят норматив. Норматив, посчитанный по суммарному времени, впитывает в себя все простои — и дальше сравнивать не с чем: склад отлично укладывается в норму, в которой половина времени ожидание.

Про очередь. Приём хороший, я его не рассматривал. Но у него есть слепое пятно: очередь характеризуется не плотностью сканов, а их отсутствием. Человек, который ждёт пополнения зоны, не сканирует ничего. Погрузчик, который стоит перед занятым проездом, тоже. В метрику «минимальный интервал между сканами разных заданий» они не попадут вовсе.

И плотное сканирование в одной зоне — это может быть затор, а может быть просто пик нагрузки. Отличить одно от другого по сканам нечем.

Про «дошёл ли туда, куда послало задание». Здесь соглашусь, с двумя оговорками. Если сканирование ячейки обязательное и этикетки нигде не продублированы — да, WMS это закрывает, камера не нужна.

Оговорка первая: скан подтверждает, что прочитан штрихкод ячейки, а не что человек стоял у этой ячейки. Оговорка вторая: скан — это точка, а не путь. Где человек шёл между двумя сканами и сколько намотал, из журнала не достать. Для контроля «взял не то» первого достаточно. Для слоттинга и хронометража — уже нет.

Про «как он закрывает задание не сканируя». Хороший вопрос, отвечу конкретно. Способы, которые встречались:

— этикетки ячеек, продублированные на листе или на стенде: сканируют по списку, не отходя от места;
— работа за коллегу с одного ТСД;
— буферизация при потере связи: собрали физически, сканы ушли пачкой позже;
— ручное закрытие зависших документов бригадиром или администратором при разборе.

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

И общий ответ на весь комментарий. Вы правы в том, что почти у каждого пункта есть косвенный признак внутри учёта. Я не утверждаю, что таких признаков нет. Я говорю, что все они выводятся из одного источника — из действий самого сотрудника. А когда источник один, ошибка источника неотличима от нормы: проверить сканы можно только сканами.
5. siamagic 17.08.26 11:14 Сейчас в теме
Если в зоне пополнения нет товара - на кой туда слать сотрудника?

Очередь - это плотность сканирования видно что в этом месте есть непрырвное сканирование - значит одни ждали дргуих, да, от пиковой не отличить

У нас все этикетки уникальные - ячейку сканировать смысла нет - я знаю где этот товар лежит и откуда списывать
6. Michael_Kurkin 6 17.08.26 12:55 Сейчас в теме
(5) По порядку.

Про пополнение. Слать незачем, согласен. Но это же и есть дефект. Если человек четыре минуты стоит у зоны, значит задание выдали раньше, чем зону пополнили. Так бывает: отбор обгоняет пополнение, товар успели забрать до прихода, по системе остаток есть, а физически недостача. Вопрос не в том, правильно ли это. Вопрос в том, знаете ли вы, сколько раз за смену так вышло. Сейчас эти четыре минуты просто входят в «задание заняло шесть минут».

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

Про очередь. Вы сами назвали главное ограничение — от пиковой не отличить. И это не мелочь: у перегруза и у затора разные лечения. В первом случае нужны люди, во втором — раскладка или маршруты. Цена ошибки разная, а по плотности сканов не выбрать.

Плюс тот, кто ждёт, сканов не делает вообще. Плотность покажет, что в зоне активно работали, но не покажет, что рядом при этом кто-то стоял.

Про уникальные этикетки. Тут соглашусь. Если этикетка уникальная, сканировать ячейку для идентификации незачем — вы знаете, что взяли и откуда списать. Мой довод про маршрут в вашей схеме действительно слабее.

Одна оговорка. Уникальная этикетка гарантирует, что вы опознали единицу. Она не гарантирует, что её адрес в системе актуален. Адрес верен ровно до первого перемещения без скана: переставили паллету, чтобы освободить проезд, уронили и положили рядом, сдвинули при уплотнении. Система будет считать, что товар в А-05, пока кто-нибудь физически туда не придёт и не выяснит обратное.

И остальные три вопроса уникальные этикетки не закрывают: сколько внутри задания было работы, а сколько ожидания; где именно встал поток; соответствует ли закрытая строка физическому действию.
7. MarryJane 39 17.08.26 13:56 Сейчас в теме
А почему не начать считать количество шагов сколько сделал сотрудник. Подвязаться сканирнул ячейку посчитали кол шагов (нюансы, что ячейка размещения находится типа поблизости это как бы уже потом)
8. Michael_Kurkin 6 17.08.26 20:18 Сейчас в теме
(7) Хорошая идея, и она укладывается прямо в ту же схему.

Акселерометр есть в любом ТСД на андроиде, так что данные достаются без нового железа: аппаратный шагомер, если модель его отдаёт, иначе сырой акселерометр и свой детектор шагов. Привязка к сканам как раз простая — сканы дают опорные точки, между ними считается путь и признак «шёл или стоял».

Про ваш нюанс с близкими ячейками. Там, где между сканами два-три шага, отдельная запись действительно шум. Но за смену они складываются, и по сумме за час картина уже осмысленная — особенно если сравнивать с ожидаемым расстоянием между ячейками, оно-то из WMS известно.

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

Отсюда две вещи.

Первая. Трек в кадре можно привязать к конкретному оператору по совпадению ритма движения. Камера даёт ряд «шёл / стоял» для человека в кадре, ТСД — такой же ряд для пользователя. Два человека редко трогаются и останавливаются в одни и те же секунды, так что за пару минут совпадение получается однозначным. Лица распознавать не нужно, для склада это существенно.

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

И обратный эффект: камеры стоят на узлах, а ТСД ходит везде. Вместе выходит непрерывный ряд по времени без сплошного покрытия камерами.

С самоходной техникой шаги, понятно, не работают. Но там либо своя телематика с моточасами и пробегом, либо тот же акселерометр: вибрация от езды по спектру отличается от ходьбы, и состояние «идёт / едет / стоит» разделяется. Рохля не в счёт — её везёт человек с ТСД, шаги идут как обычно, только короче.

Забираю в проработку, спасибо.
11. MarryJane 39 18.08.26 15:12 Сейчас в теме
(8) Расскажите потом что получилось
13. Michael_Kurkin 6 18.08.26 19:44 Сейчас в теме
15. siamagic 21.08.26 05:27 Сейчас в теме
(7) не шагов а времени - на кой вводить лишнею метрику, которая отразить те данные которые уже есть?
16. Michael_Kurkin 6 21.08.26 15:30 Сейчас в теме
(15) Время и шаги - это разные вещи, и в этом весь смысл. Между двумя сканами лежит сумма: переход + работа у ячейки + ожидание. Журнал отдаёт эту сумму целиком, одним числом. Разложить её на слагаемые изнутри нечем.

Шаги как раз разделяют. Идут шаги - человек в переходе. Не идут - стоит.

Пример. Два оператора, у обоих между сканами шесть минут. У первого четыреста шагов, у второго сорок. По времени они одинаковые. По сути противоположные: первый ходил далеко, второй стоял. И делать с этим надо разное, первому менять раскладку, у второго выяснять, почему стоял.

Правило общее, чтобы разложить сумму на слагаемые, нужно независимо измерить хотя бы одно из них. Время даёт сумму. Шаги дают одно слагаемое. Остальное считается.
9. MarryJane 39 18.08.26 15:09 Сейчас в теме
Еще же можно добавить факт расстояние между ячейками (в шагах или в метрах). Заполнить можно типа как запустил функцию подсчет расстояния. и Потом как бы сравниваешь сколько он прошел а сколько по плану
10. MarryJane 39 18.08.26 15:11 Сейчас в теме
Еще же можно GPS подключить
12. Michael_Kurkin 6 18.08.26 19:43 Сейчас в теме
(9) благодарю за отличные идеи. обсудил со своим ai-помощником, что получилось:

По расстояниям — мысль хорошая, и она закрывает дыру, которую я в статье обошёл. Плана по маршруту в WMS обычно нет: координаты ячеек либо не заполнены, либо формальные — ряд, секция, ярус, без метров. То есть сравнивать факт не с чем.

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

Причём специально обходить склад, наверное, и не нужно. Если копить переходы по всем операторам, за месяц матрица наберётся сама: медиана шагов по паре ячеек и есть реальное расстояние. Медиана, а не среднее — чтобы выбросы вроде «пошёл, отвлёкся, вернулся» не тянули картину.

Одна оговорка по устройству хранения. Попарно все ячейки держать не выйдет: на десяти тысячах ячеек это сто миллионов пар, и большинство из них не встретится никогда. Практичнее хранить граф склада — узлы на перекрёстках и на входах в проходы, рёбра с весом в метрах, — а расстояние между любыми двумя ячейками считать как кратчайший путь. Тогда эмпирика из шагов заполняет веса рёбер, их несколько сотен, и всё сходится.

И дальше получается то, ради чего затевалось: план — медиана исторических переходов, факт — сегодняшний, разница — повод посмотреть. Плюс та же матрица нужна для слоттинга: зная реальные расстояния и частоту пар в заданиях, можно посчитать, что даст перестановка конкретных ячеек.

Про GPS. Внутри здания не выйдет — сигнала нет, металл стеллажей добивает остатки. Что работает вместо:

— позиционирование по WiFi: точки доступа на складе уже есть, точность 5–15 метров, то есть до прохода. По железу бесплатно;
— BLE-маяки: 1–5 метров, но развесить надо сотнями и потом менять батарейки;
— UWB: десятки сантиметров, точно и дорого, на складе обычно не окупается.

Хотя мне кажется, абсолютная координата тут вообще не нужна. Нужны зона и проход, а это даёт связка сканов, шагов и камер на узлах — без развески инфраструктуры.

А вот где GPS по-настоящему пригодится — во дворе. Перемещения между корпусами, парковка, подача машины под погрузку, время ожидания у ворот снаружи. Там открытое небо, и там он честно работает.
14. siamagic 21.08.26 05:23 Сейчас в теме
+ статистический видно пики нагрузки сборки по позиции - очевидно что надо менять расположение. А смотреть на то что был затор среди карщиков в нечетный день при дожде смысла нет.
17. Michael_Kurkin 6 21.08.26 15:35 Сейчас в теме
(14) Здесь согласен, и в статье про это есть отдельный кусок: единичное событие - это факт, а причина появляется из повторяемости. Затор у карщиков в дождливый вторник разбирать незачем.

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

Про пики по позициям. Частота отбора показывает, что берут часто, это классический ABC. Но чтобы посчитать, что даст перестановка, его не хватает. При этом не хватает двух вещей: реальных расстояний, по прямой между ячейками восемь метров, а идти двадцать - вокруг стеллажа и через проезд. И совместной встречаемости: какие позиции попадают в одно задание. ABC разложит ходовое ближе к выходу, но если две позиции всегда едут вместе, а лежат в разных концах склада, это обойдётся дороже, чем если бы обе средние по обороту лежали рядом.

Так что частота - это вход, а не ответ. Ответ получается, когда к ней добавляются реальные расстояния и пары.
Для отправки сообщения требуется регистрация/авторизация