Оглавление:
- Шаг 1: Детали
- Шаг 2: детали, напечатанные на 3D-принтере
- Шаг 3: Код
- Шаг 4: Получение данных
- Шаг 5. Маркировка изображений
- Шаг 6: Обучение
- Шаг 7: Составление обученной модели
- Шаг 8: Модель обнаружения повторного использования
- Шаг 9: Разверните модель
- Шаг 10: Создайте роботизированную руку
- Шаг 11: Подключение RPI и роботизированного манипулятора
- Шаг 12: Последние штрихи
- Шаг 13: бег
- Шаг 14: Дальнейшая работа
- Шаг 15: Вопросы?
Видео: Робот-сортировщик для вторичной переработки: 15 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Знаете ли вы, что средний уровень загрязнения в сообществах и на предприятиях составляет до 25%? Это означает, что каждый четвертый предмет вторичной переработки, который вы выбрасываете, не перерабатывается. Это вызвано ошибкой человека в центрах утилизации. Традиционно рабочие сортируют мусор по разным контейнерам в зависимости от материала. Люди неизбежно совершают ошибки и в конечном итоге не сортируют мусор должным образом, что приводит к заражению. Поскольку загрязнение и изменение климата становятся все более значительными в современном обществе, переработка отходов играет огромную роль в защите нашей планеты. Используя роботов для сортировки мусора, уровень загрязнения резко снизится, не говоря уже о том, что он станет намного дешевле и экологичнее. Чтобы решить эту проблему, я создал робота-сортировщика вторичного сырья, который использует машинное обучение для сортировки различных вторичных материалов.
Шаг 1: Детали
Убедитесь, что у вас есть следующие части, которым нужно следовать вместе с этим руководством:
Детали, напечатанные на 3D-принтере (см. Шаг ниже)
Raspberry Pi RPI 4 4 ГБ
Google Coral USB Accelerator
Arduino Uno R3
Модуль камеры Raspberry Pi V2
Настенный источник питания постоянного тока 5 В, 2 А
Источник питания постоянного тока 12 В
SG90 9g Micro Servos 4шт.
M3 x 0,5 мм Нержавеющая сталь Самоблокирующаяся гайка шестигранная, нейлоновая 100шт.
Титановые винты M3x20 с цилиндрической головкой 10 шт.
Аналоговый серводвигатель MG996R Metal Gear Torque 4 шт.
Карта памяти Samsung 32 ГБ Select
Шлейф Adafruit для камеры Raspberry Pi - 1 метр
M2 Наружная и внутренняя латунная распорная втулка, винт, гайка, набор
60-мм вентилятор 12 В
Коробка Project 6,69 x 5,12 x 2,95 дюйма
Шаг 2: детали, напечатанные на 3D-принтере
Вам нужно будет напечатать на 3D-принтере все детали манипулятора. Вы можете найти все файлы здесь.
Шаг 3: Код
Пожалуйста, клонируйте мой репозиторий GitHub, чтобы следовать этому руководству.
Шаг 4: Получение данных
Чтобы обучить модель обнаружения объектов, которая может обнаруживать и распознавать различные вторичные материалы, я использовал набор данных trashnet, который включает 2527 изображений:
- 501 стакан
- 594 бумага
- 403 картон
- 482 пластик
- 410 металл
- 137 мусор
Изображение выше - это пример одного из изображений из набора данных.
Этот набор данных очень мал для обучения модели обнаружения объектов. Есть только около 100 изображений мусора, которых слишком мало для обучения точной модели, поэтому я решил не включать его.
Вы можете использовать эту папку на Google Диске для загрузки набора данных. Обязательно загрузите файл dataset-resized.zip. Он содержит набор изображений, размер которых уже уменьшен для ускорения обучения. Если вы хотите изменить размер необработанных изображений по своему вкусу, загрузите файл dataset-original.zip.
Шаг 5. Маркировка изображений
Затем нам нужно пометить несколько изображений различных вторсырья, чтобы мы могли обучить модель обнаружения объектов. Для этого я использовал labelImg, бесплатное программное обеспечение, которое позволяет помечать ограничивающие рамки объекта на изображениях.
Пометьте каждое изображение подходящей этикеткой. Из этого туториала Вы узнаете, как это сделать. Убедитесь, что каждая ограничивающая рамка расположена как можно ближе к границе каждого объекта, чтобы модель обнаружения была максимально точной. Сохраните все файлы.xml в папку.
На фото выше показано, как маркировать ваши изображения.
Это очень утомительный и ошеломляющий опыт. К счастью для вас, я уже пометил все изображения для вас! Вы можете найти это здесь.
Шаг 6: Обучение
Что касается обучения, я решил использовать трансферное обучение с помощью Tensorflow. Это позволяет нам обучать достаточно точную модель без большого количества данных.
Есть несколько способов сделать это. Мы можем сделать это на нашем локальном настольном компьютере в облаке. Обучение на нашей локальной машине займет очень много времени в зависимости от мощности вашего компьютера и наличия мощного графического процессора. На мой взгляд, это, наверное, самый простой способ, но опять же с обратной стороной скорости.
Следует отметить несколько важных моментов, касающихся трансферного обучения. Вам необходимо убедиться, что предварительно обученная модель, которую вы используете для обучения, совместима с Coral Edge TPU. Здесь вы можете найти совместимые модели. Я использовал модель MobileNet SSD v2 (COCO). Не стесняйтесь экспериментировать и с другими.
Для обучения на вашем локальном компьютере я бы порекомендовал следовать руководству Google или руководству EdjeElectronics, если он работает в Windows 10. Лично я протестировал руководство EdjeElectroncs и добился успеха на своем рабочем столе. Я не могу подтвердить, что учебник Google будет работать, но я был бы удивлен, если это не так.
Для обучения в облаке вы можете использовать AWS или GCP. Я нашел этот учебник, который вы можете попробовать. Он использует облачные TPU от Google, которые могут очень быстро обучить вашу модель обнаружения объектов. Не стесняйтесь использовать и AWS.
Независимо от того, тренируетесь ли вы на своей локальной машине или в облаке, вы должны получить обученную модель тензорного потока.
Шаг 7: Составление обученной модели
Чтобы ваша обученная модель могла работать с Coral Edge TPU, вам необходимо ее скомпилировать.
Выше представлена схема рабочего процесса.
После обучения нужно сохранить его как замороженный график (файл.pb). Затем вам нужно преобразовать его в модель Tensorflow Lite. Обратите внимание, как написано «Квантование после обучения». Если вы использовали совместимые предварительно обученные модели при использовании трансферного обучения, вам не нужно этого делать. Ознакомьтесь с полной документацией по совместимости здесь.
С моделью Tensorflow Lite вам необходимо скомпилировать ее в модель Edge TPU. Подробнее о том, как это сделать, читайте здесь.
Шаг 8: Модель обнаружения повторного использования
Если вы не хотите мучиться с обучением, преобразованием и компиляцией модели обнаружения объектов, ознакомьтесь с моей моделью обнаружения повторного использования здесь.
Шаг 9: Разверните модель
Следующим шагом является настройка Raspberry Pi (RPI) и Edge TPU для запуска модели обнаружения обученных объектов.
Сначала настройте RPI с помощью этого руководства.
Затем настройте Edge TPU, следуя этому руководству.
Наконец, подключите модуль камеры RPI к raspberry pi.
Теперь вы готовы протестировать свою модель обнаружения объектов!
Если вы уже клонировали мой репозиторий, вам нужно перейти в каталог RPI и запустить файл test_detection.py:
python test_detection.py --model recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03 / detect_edgetpu.tflite --labels recycle_ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03 / labels.
Должно появиться небольшое окно, и если вы поместите пластиковую бутылку с водой или другой переработанный материал, оно должно обнаружить это, как на изображении выше.
Нажмите букву «q» на клавиатуре, чтобы завершить программу.
Шаг 10: Создайте роботизированную руку
Роботизированная рука - это рука, напечатанная на 3D-принтере, которую я нашел здесь. Просто следуйте инструкциям по настройке.
На изображении выше показано, какой оказалась моя роботизированная рука.
Убедитесь, что вы подключили выводы сервопривода к выводам ввода-вывода Arduino в моем коде. Подключите сервоприводы снизу вверх рычага в следующем порядке: 3, 11, 10, 9, 6, 5. Если не подключить его в этом порядке, рычаг переместит неправильный сервопривод!
Проверьте, работает ли он, перейдя в каталог Arduino и запустив файл basicMovement.ino. Это просто захватит объект, который вы поместите перед рукой, и уроните его сзади.
Шаг 11: Подключение RPI и роботизированного манипулятора
Сначала нам нужно прикрепить модуль камеры к нижней части когтя. На изображении выше показано, как это должно выглядеть.
Постарайтесь выровнять камеру как можно прямее, чтобы свести к минимуму ошибки при захвате распознанного вторичного материала. Вам понадобится длинный ленточный кабель модуля камеры, как показано в списке материалов.
Затем вам нужно загрузить файл roboticArm.ino на плату Arduino.
Наконец, нам просто нужно подключить USB-кабель между USB-портом RPI и USB-портом Arduino. Это позволит им общаться через последовательный порт. Следуйте этому руководству, чтобы узнать, как это настроить.
Шаг 12: Последние штрихи
Этот шаг не является обязательным, но мне нравится складывать все свои компоненты в небольшую симпатичную коробку проекта.
На изображениях выше показано, как это выглядит.
Вы можете найти коробку проекта в списке материалов. Я просто просверлил несколько отверстий и использовал латунные стойки для крепления электроники. Я также установил 4 охлаждающих вентилятора, чтобы поддерживать постоянный поток воздуха через RPI и TPU в горячем состоянии.
Шаг 13: бег
Теперь вы готовы включить роботизированную руку и RPI! На RPI вы можете просто запустить файл recycle_detection.py. Это откроет окно, и роботизированная рука начнет работать, как в демонстрационном видео! Нажмите букву «q» на клавиатуре, чтобы завершить программу.
Не стесняйтесь экспериментировать с кодом и получайте удовольствие!
Шаг 14: Дальнейшая работа
Я надеюсь использовать R. O. S. для управления роботизированной рукой более точными движениями. Это позволит более точно собирать предметы.
Шаг 15: Вопросы?
Не стесняйтесь оставлять комментарии ниже, если у вас есть какие-либо вопросы!
Рекомендуемые:
Arduino - Робот для разгадывания лабиринта (MicroMouse) Робот, следующий за стеной: 6 шагов (с изображениями)
Arduino | Робот для решения лабиринта (MicroMouse) Робот, следующий за стеной: Добро пожаловать, я Исаак, и это мой первый робот «Страйкер v1.0». Этот робот был разработан для решения простого лабиринта. В соревновании у нас было два лабиринта и робот смог их идентифицировать. Любые другие изменения в лабиринте могут потребовать изменения
Автоматическая литьевая машина для переработки пластмасс: 5 шагов
Автоматическая литьевая машина для переработки пластмасс: Привет :) Это руководство посвящено нашей «автоматической литьевой машине для переработки пластмасс». (называется: Smart Injector) Идея машины состоит в том, чтобы предложить децентрализованное решение по переработке пластика. Утилизация часто ограничена
ГОЛОДНЫЙ РОБОТ ДЛЯ БУМАГИ - Робот Pringles Recycle Arduino: 19 шагов (с изображениями)
PAPER HUNGRY ROBOT - Pringles Recycle Arduino Robot: это еще одна версия Hungry Robot, которую я построил в 2018 году. Вы можете сделать этого робота без 3D-принтера. Все, что вам нужно сделать, это просто купить банку Pringles, серводвигатель, датчик приближения, ардуино и некоторые инструменты. Вы можете скачать все
УФ-облучение печатной платы путем переработки старого сканера: 6 шагов (с изображениями)
УФ-облучение печатной платы путем переработки старого сканера: Привет, вот как я сделал УФ-облучение печатной платы, переработав старый сканер
Восхождение на зацепки после переработки кувшина для молока: 8 шагов
Подъемные опоры от переработки молочных кувшинов: я видел довольно много постов и видео о переработке обычных пластиков путем плавления пластика HDPE (полиэтилена высокой плотности) в новые формы, и я хотел сделать себе стену для скалолазания. Логично, почему бы не попробовать оба сразу