Files
ozone-tech_owl_prime/specification/mvp_1.md

12 KiB
Raw Blame History

Наброски будущей схемы конвейера

Пояснение к схеме

todo

Список материалов:

В этот список необходимо доложить энкодер для двигателя!

Название Сумма, ₽ Количество
Медная лента для удаления припоя / Оплетка для выпайки диаметр 2 мм длина 1.5 м 164 1
Набор проводов для пайки 1 030 1
Набор проводов для пайки 855 1
Флюс гель универсальный безотмывочный, для пайки микросхем и компонентов Flux RMA-223-UV-10г 162 1
Припой для пайки с канифолью 1мм 50гр ПОС-61 на катушке (ГОСТ) 423 1
ALIENTEK Паяльник 140 Вт, 7 предметов 4 985 1
Преобразователь DC-DC понижающий с 8-60V до 1-36V 15A max 805 1
Беспаечная макетная плата (breadboard) MB-102, 830 точек, для Arduino и прочих устройств 1 112 2
120 шт. Провода перемычки для макетных плат, соединительные провода для модулей, контроллеров arduino (10 см) 3 вида по 40 шт папа-папа, мама-мама, папа-мама 636 3
Homeled, Блок питания, 12V, 200W, 180-265 вольт. С клеммами. Импульсный для светодиодных лент и светильников 599 1
Двигатель для шуруповерта 12v без шестерни 834 2
Сервопривод MG996R, 10 шт, 180 , металлические шестерни, для Arduino, роботов и RC, размеры стандарт 2 990 1
PWM PCA9685 драйвер на 16 сервоприводов расширитель портов с I2C интерфейсом для Led и Servo (12 bit, I2C) в IIC/I2C/TWI/SPI c тестером сервоприводов 3 режима, набор 1 178 2
Датчик расстояния ультразвуковой HY-SRF05 для Arduino 1 310 5
Модуль MOSFET силовой ключ, опторазвязка, 40В, 50А, AOD4184 898 4
Arduino UNO R3 Atmega328P (CH340G), с кабелем 1 377 3
Плата расширения Ethernet Shield W5100 1 376 2
ИТОГО 20 732

Ссылка на товары

Возможные проблемы в программно-аппаратной автоматической сортировке товаров на конвейерной линии

1. Проблемы визуального распознавания

  • Сложность освещения: Непредсказуемое освещение может затруднить распознавание объектов
  • Схожие внешние признаки: Товары с похожими формами/цветами могут быть распознаны неправильно
  • Неправильная калибровка камер: Ошибки в определении координат объектов

2. Проблемы сенсорной системы

  • Недостаточная чувствительность датчиков: Пропуск объектов или ложные срабатывания
  • Влияние пыли/влаги: Затруднение работы сенсоров
  • Нестабильность работы датчиков: Необходимость постоянной калибровки

3. Проблемы управления движением

  • Неправильная синхронизация: Несовпадение времени сортировки и движения конвейера
  • Недостаточная мощность приводов: Задержки в перемещении
  • Конфликты в движении: Пересечение траекторий сортировщиков

4. Проблемы программного обеспечения

  • Недостаточная обработка ошибок: Простой системы при возникновении проблем
  • Неправильная логика принятия решений: Неправильная классификация объектов
  • Проблемы с обновлением модели ИИ: Устаревшие алгоритмы распознавания

5. Проблемы механики

  • Недостаточная прочность конструкции: Повреждение при высоких скоростях
  • Неправильное размещение сортировщиков: Конфликты при перемещении
  • Проблемы с удержанием объектов: Потеря товаров при сортировке

Решения от ИИ:

Когда мы переходим к прототипу на Arduino + отдельный сервер, архитектура меняется. Теперь у нас есть «Мозг» (сервер), который видит и думает, и «Руки» (Arduino), которые исполняют.

Главная проблема здесь — задержка (latency) при передаче данных между сервером и контроллером. Если сервер скажет «толкай» в тот момент, когда объект уже проехал, система провалится.

Вот как я бы решил эти проблемы в контексте такого прототипа:

1. Визуальное распознавание (Серверная часть)

Поскольку сервер мощный, мы можем использовать тяжелые модели (YOLO, TensorFlow), но должны ограничить влияние среды.

  • Освещение: Для прототипа я бы сделал «световой короб» из белого пластика или картона с LED-лентой внутри. Это создаст мягкий свет без теней, что критично для дешевых веб-камер.
  • Схожие признаки: На сервере я бы реализовал многоэтапную проверку: сначала определение класса объекта, затем — анализ его геометрии (площадь, периметр), чтобы отличить, например, красный кубик от красного шарика.
  • Калибровка: Чтобы сервер понимал, где находится объект в реальном мире, я бы использовал «маркеры привязки» (например, черные метки по углам ленты). Сервер видит метку -> понимает масштаб -> вычисляет координаты объекта в миллиметрах.

2. Сенсорная система (Arduino часть)

Датчики на Arduino будут служить «триггерами» для сервера.

  • Чувствительность: Я бы добавил ИК-датчик в начале линии. Как только объект пересекает его, Arduino посылает сигнал на сервер: «Объект в зоне, сделай фото!». Это избавит сервер от необходимости анализировать видеопоток 24/7.
  • Пыль/Влага: В прототипе это менее критично, но я бы использовал простые пластиковые колпачки-козырьки над датчиками, чтобы на них не оседал мусор.
  • Нестабильность: Программный «антидребезг» (debouncing) в коде Arduino, чтобы один объект не засчитывался как несколько из-за помех.

3. Управление движением (Arduino часть)

Здесь решается проблема рассинхронизации между «медленным» сервером и «быстрым» конвейером.

  • Синхронизация (Критический узел): Я бы не использовал команду «Толкай сейчас». Вместо этого сервер отправляет пакет данных: ID объекта и Тип (куда сортировать). Arduino записывает этот объект в очередь (массив) и отслеживает его движение с помощью энкодера на моторе или датчика прохождения.
    • Логика: «Я знаю, что объект №5 — это 'Красный', и он должен быть сброшен через 500 импульсов энкодера».
  • Мощность приводов: Использование внешнего блока питания для моторов (не от Arduino!), чтобы избежать просадок напряжения и перезагрузок контроллера при старте ленты.
  • Конфликты: Ограничение скорости подачи. В прототипе проще всего реализовать «дискретную подачу»: один объект заходит в систему -> обрабатывается -> вылетает -> только тогда подается следующий.

4. Программное обеспечение (Взаимодействие)

Разделение ответственности между Python (сервер) и C++ (Arduino).

  • Обработка ошибок: Внедрение «контрольного сигнала» (Heartbeat). Если Arduino не получает сигнал от сервера в течение 2 секунд, он останавливает конвейер, чтобы товары не улетели в пустоту.
  • Логика принятия решений: Сервер отправляет не просто команду, а структуру данных. Например: {"id": 12, "action": "divert", "target": 2, "confidence": 0.98}. Если confidence низкий, Arduino отправляет объект в корзину «Ошибка».
  • Обновление модели: Преимущество сервера в том, что я могу обновлять модель ИИ, не перепрошивая Arduino. Весь «интеллект» живет в Python-скрипте.

5. Механика (Прототип)

Для прототипа важна модульность и легкость замены деталей.

  • Прочность: Использование 3D-печатных деталей с заполнением (infill) более 40% в точках крепления моторов и использование подшипников в осях, чтобы избежать люфта.
  • Размещение: Установка сортировщиков (сервоприводов) на стандартных профилях или рельсах, чтобы их можно было сдвинуть на пару сантиметров вперед/назад для точной подстройки под камеру.
  • Удержание объектов: Вместо жестких толкателей я бы использовал «мягкие» лапки из силикона или резины на сервоприводах. Это предотвратит опрокидывание легких предметов и снизит ударную нагрузку на пластиковые детали.

Резюме по архитектуре: Датчик (Arduino) -> Триггер (Сервер) -> Распознавание (Сервер) -> Команда в очередь (Arduino) -> Отсчет расстояния (Arduino) -> Сброс (Механика).