Índice:
- Etapa 1: Peças
- Etapa 2: peças impressas em 3D
- Etapa 3: Código
- Etapa 4: obtendo os dados
- Etapa 5: Rotulando as imagens
- Etapa 6: Treinamento
- Etapa 7: Compilando o modelo treinado
- Etapa 8: Modelo de detecção de reciclagem
- Etapa 9: implantar o modelo
- Etapa 10: construir o braço robótico
- Etapa 11: Conectando o RPI e o braço robótico
- Etapa 12: toques finais
- Etapa 13: Correr
- Etapa 14: Trabalho Futuro
- Etapa 15: Perguntas?
Vídeo: Robô de classificação de reciclagem: 15 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Você sabia que a taxa média de contaminação em comunidades e empresas chega a 25%? Isso significa que uma em cada quatro peças de reciclagem que você joga fora não é reciclada. Isso é causado por erro humano em centros de reciclagem. Tradicionalmente, os trabalhadores separam o lixo em diferentes lixeiras, dependendo do material. Os humanos cometem erros e acabam não separando o lixo de maneira adequada, levando à contaminação. À medida que a poluição e as mudanças climáticas se tornam ainda mais significativas na sociedade de hoje, a reciclagem desempenha um papel importante na proteção do nosso planeta. Ao usar robôs para separar o lixo, as taxas de contaminação diminuirão drasticamente, sem falar que serão muito mais baratas e sustentáveis. Para resolver isso, criei um robô de triagem de reciclagem que usa aprendizado de máquina para classificar entre diferentes materiais de reciclagem.
Etapa 1: Peças
Certifique-se de ter as seguintes partes para acompanhar este tutorial:
Peças impressas em 3D (veja a etapa abaixo)
Raspberry Pi RPI 4 4 GB
Google Coral USB Accelerator
Arduino Uno R3
Módulo de câmera Raspberry Pi V2
Fonte de alimentação de parede 5V 2A DC
Fonte de alimentação DC 12V
SG90 9g Micro Servos 4pcs.
M3 x 0,5 mm Aço Inoxidável Auto-Bloqueio Nylon Porca de bloqueio hexagonal 100 unidades.
Parafusos de titânio de cabeça de botão M3x20 10pcs.
MG996R Metal Gear Torque Servo Motor Analog 4pcs.
Samsung 32GB Selecione Cartão de Memória
Cabo Flex Adafruit para câmera Raspberry Pi - 1 metro
M2 macho fêmea espaçador de latão distanciador parafuso kit de sortimento de porca
Ventilador 60mm 12V
Caixa de projeto de 6,69 "x 5,12" x 2,95"
Etapa 2: peças impressas em 3D
Você precisará imprimir em 3D todas as peças do braço robótico. Você pode encontrar todos os arquivos aqui.
Etapa 3: Código
Clone meu repositório GitHub para acompanhar este tutorial.
Etapa 4: obtendo os dados
Para treinar o modelo de detecção de objetos que pode detectar e reconhecer diferentes materiais de reciclagem, usei o conjunto de dados trashnet que inclui 2527 imagens:
- Vidro 501
- 594 papel
- Cartão 403
- 482 plástico
- 410 metal
- 137 lixo
A imagem acima é um exemplo de uma das imagens do conjunto de dados.
Este conjunto de dados é muito pequeno para treinar um modelo de detecção de objetos. Existem apenas cerca de 100 imagens de lixo que são muito pequenas para treinar um modelo preciso, então decidi deixá-las de fora.
Você pode usar esta pasta do Google Drive para baixar o conjunto de dados. Certifique-se de baixar o arquivo dataset-resized.zip. Ele contém o conjunto de imagens que já foram redimensionadas para um tamanho menor para permitir um treinamento mais rápido. Se desejar redimensionar as imagens brutas de acordo com sua preferência, fique à vontade para baixar o arquivo dataset-original.zip.
Etapa 5: Rotulando as imagens
Em seguida, precisamos rotular várias imagens de diferentes materiais de reciclagem para que possamos treinar o modelo de detecção de objetos. Para fazer isso, usei o labelImg, um software gratuito que permite rotular caixas delimitadoras de objetos em imagens.
Rotule cada imagem com o rótulo adequado. Este tutorial mostra como. Certifique-se de fazer cada caixa delimitadora o mais próximo possível da borda de cada objeto para garantir que o modelo de detecção seja o mais preciso possível. Salve todos os arquivos.xml em uma pasta.
A foto acima mostra como rotular suas imagens.
Esta é uma experiência muito tediosa e entorpecente. Felizmente para você, já marquei todas as imagens para você! Você pode encontrá-lo aqui.
Etapa 6: Treinamento
Em termos de treinamento, decidi usar a aprendizagem por transferência usando o Tensorflow. Isso nos permite treinar um modelo decentemente preciso sem uma grande quantidade de dados.
Existem algumas maneiras de fazermos isso. Podemos fazer isso em nossa máquina desktop local na nuvem. O treinamento em nossa máquina local levará muito tempo dependendo da potência do seu computador e se você tiver uma GPU potente. Esta é provavelmente a maneira mais fácil na minha opinião, mas novamente com o lado negativo da velocidade.
Existem alguns pontos importantes a serem observados sobre a aprendizagem por transferência. Você precisa se certificar de que o modelo pré-treinado usado para o treinamento é compatível com o TPU Coral Edge. Você pode encontrar modelos compatíveis aqui. Usei o modelo MobileNet SSD v2 (COCO). Sinta-se à vontade para experimentar com outras pessoas também.
Para treinar em sua máquina local, eu recomendaria seguir o tutorial do Google ou o tutorial do EdjeElectronics se estiver executando no Windows 10. Pessoalmente, testei o tutorial do EdjeElectroncs e tive sucesso no meu desktop. Não posso confirmar se o tutorial do Google funcionará, mas ficaria surpreso se não funcionar.
Para treinar na nuvem, você pode usar AWS ou GCP. Encontrei este tutorial que você pode experimentar. Ele usa TPUs em nuvem do Google que podem treinar seu modelo de detecção de objetos de forma super rápida. Sinta-se à vontade para usar a AWS também.
Independentemente de você treinar em sua máquina local ou na nuvem, você deve acabar com um modelo de tensorflow treinado.
Etapa 7: Compilando o modelo treinado
Para que seu modelo treinado funcione com o Coral Edge TPU, você precisa compilá-lo.
Acima está um diagrama para o fluxo de trabalho.
Após o treinamento, você precisa salvá-lo como um gráfico congelado (arquivo.pb). Em seguida, você precisa convertê-lo em um modelo Tensorflow Lite. Observe como diz "Quantização pós-treinamento". Se você usou os modelos pré-treinados compatíveis ao usar o aprendizado por transferência, não é necessário fazer isso. Dê uma olhada na documentação completa sobre compatibilidade aqui.
Com o modelo Tensorflow Lite, você precisa compilá-lo em um modelo Edge TPU. Veja os detalhes de como fazer isso aqui.
Etapa 8: Modelo de detecção de reciclagem
Se você não quiser passar pelo aborrecimento de treinar, converter e compilar o modelo de detecção de objetos, verifique meu modelo de detecção de reciclagem aqui.
Etapa 9: implantar o modelo
A próxima etapa é configurar o Raspberry Pi (RPI) e o Edge TPU para executar o modelo de detecção de objeto treinado.
Primeiro, configure o RPI usando este tutorial.
Em seguida, configure o Edge TPU seguindo este tutorial.
Finalmente, conecte o módulo da câmera RPI ao raspberry pi.
Agora você está pronto para testar seu modelo de detecção de objetos!
Se você já clonou meu repositório, navegue até o diretório RPI e execute o arquivo 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.txt
Uma pequena janela deve aparecer e se você colocar uma garrafa de água de plástico ou outro material reciclado, ela deve detectá-lo como na imagem acima.
Pressione a letra "q" no teclado para encerrar o programa.
Etapa 10: construir o braço robótico
O braço robótico é um braço impresso em 3D que encontrei aqui. Basta seguir o tutorial de configuração.
A imagem acima mostra como ficou meu braço robótico.
Certifique-se de conectar os pinos do servo aos pinos de E / S do Arduino em meu código. Conecte os servos de baixo para cima do braço nesta ordem: 3, 11, 10, 9, 6, 5. Não conectá-los nesta ordem fará com que o braço mova o servo errado!
Teste para ver o funcionamento navegando até o diretório Arduino e executando o arquivo basicMovement.ino. Isso simplesmente agarrará um objeto que você colocar na frente do braço e o deixará cair para trás.
Etapa 11: Conectando o RPI e o braço robótico
Primeiro precisamos montar o módulo da câmera na parte inferior da garra. A imagem acima mostra como deve ficar.
Tente alinhar a câmera o mais reto possível para minimizar erros ao pegar o material reciclado reconhecido. Você precisará usar o cabo longo de fita do módulo da câmera, conforme visto na lista de materiais.
Em seguida, você precisa fazer o upload do arquivo roboticArm.ino para a placa Arduino.
Finalmente, só precisamos conectar um cabo USB entre a porta USB do RPI e a porta USB do Arduino. Isso permitirá que eles se comuniquem via serial. Siga este tutorial sobre como configurar isso.
Etapa 12: toques finais
Esta etapa é totalmente opcional, mas gosto de colocar todos os meus componentes em uma pequena caixa de projeto agradável.
As imagens acima mostram como fica.
Você pode encontrar a caixa do projeto na lista de materiais. Acabei de fazer alguns furos e usei suportes de latão para montar os componentes eletrônicos. Também montei 4 ventiladores de resfriamento para manter um fluxo de ar constante através do RPI e TPU quando quente.
Etapa 13: Correr
Agora você está pronto para ligar o braço robótico e o RPI! No RPI, você pode simplesmente executar o arquivo recycle_detection.py. Isso abrirá uma janela e o braço robótico começará a funcionar exatamente como no vídeo de demonstração! Pressione a letra "q" no teclado para encerrar o programa.
Sinta-se à vontade para brincar com o código e se divertir!
Etapa 14: Trabalho Futuro
Espero usar R. O. S. para controlar o braço robótico com movimentos mais precisos. Isso permitirá uma coleta mais precisa de objetos.
Etapa 15: Perguntas?
Sinta-se à vontade para deixar um comentário abaixo se você tiver alguma dúvida!
Recomendado:
Exposição a UV PCB por meio da reciclagem de um scanner antigo: 6 etapas (com imagens)
Exposição PCB UV ao reciclar um scanner antigo: Olá, foi assim que fiz minha exposição PCB UV reciclando um scanner antigo
Robô de equilíbrio / Robô de 3 rodas / Robô STEM: 8 etapas
Robô de balanceamento / Robô de 3 rodas / Robô STEM: Construímos um robô de balanceamento combinado e de 3 rodas para uso educacional em escolas e programas educacionais após as aulas. O robô é baseado em um Arduino Uno, um escudo personalizado (todos os detalhes de construção fornecidos), um pacote de bateria Li Ion (todos constr
Máquina de classificação de mármore mágico LittleBits: 11 etapas (com imagens)
Máquina de Seleção de Mármores Mágica LittleBits: Você já quis classificar mármores? Então, você poderia construir esta máquina. Você nunca mais precisará mexer em um saco de bolinhas de gude novamente! É uma máquina de classificação de mármore mágica, usando um sensor de cores da Adafruit, tipo TCS34725 e um Leonardo Arduino de
Classificação robótica de esferas: 3 etapas (com imagens)
Seleção robótica de grânulos: neste projeto, estaremos construindo um robô para classificar as pérolas de Perler por cor. Sempre quis construir um robô de seleção por cores, então, quando minha filha se interessou pela criação de grânulos Perler, vi isso como uma oportunidade perfeita .Perler grânulos são usados t
MESH: Sistema de classificação com botões conectados à Internet: 5 etapas (com imagens)
MESH: Sistema de classificação com botões conectados à Internet: e se restaurantes ou outras empresas pudessem coletar feedback do cliente no local e sincronizá-lo instantaneamente com uma planilha? Esta receita é uma maneira rápida e simples de criar seu próprio sistema de classificação interativo. Basta pegar um conjunto de b