Índice:
- Suprimentos
- Etapa 1: Motivação
- Etapa 2: NVIDIA JetBot e visão geral do projeto
- Etapa 3: Construir JetBot e Carregar Notebooks Jupyter
- Etapa 4: coleta de dados de treinamento no JetBot
- Etapa 5: treinar a rede neural na máquina GPU
- Etapa 6: execute a demonstração ao vivo no JetBot
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Por dvillevaldMy GithubFollow Sobre: Eu gosto de aplicativos de IA e aprendizado de máquina, especialmente em robótica. Mais sobre dvillevald »
Ensine seu robô a encontrar um caminho em um labirinto de cones de trânsito usando a câmera e o modelo de aprendizado profundo de última geração.
Suprimentos
-
NVIDIA JetBot
A página de lista de materiais da NVIDIA JetBot Wiki lista tudo o que você precisa para construir o JetBot, junto com links de compra de fornecedores populares
- Computador com GPU NVIDIA
Necessário para treinar o modelo
- BlueDot Trading 4 "RC Racing Agility Cones, laranja - conjunto de 20
Etapa 1: Motivação
Cada vez que dirijo na área de contração, fico pensando em como seria desafiador para um carro que dirige sozinho passar pelos cones de trânsito. Acontece que não é tão difícil com o novo JetBot da NVIDIA - com apenas algumas centenas de imagens, você pode treinar um modelo de aprendizado profundo de última geração para ensinar seu robô a encontrar um caminho em um labirinto de cones de trânsito de brinquedo usando apenas a câmera integrada e nenhum outro sensor.
Etapa 2: NVIDIA JetBot e visão geral do projeto
JetBot é um robô de código aberto baseado no kit NVIDIA Jetson Nano. Você pode encontrar instruções detalhadas sobre como construir e configurá-lo aqui.
Este projeto é um exemplo modificado de prevenção de colisão do NVIDIA JetBot Wiki. Consiste em três etapas principais, cada uma descrita em um bloco de notas Jupyter separado:
- Colete dados no JetBot - notebook data_collection_cones.ipynb
- Modelo de trem em outra máquina GPU - notebook train_model_cones.ipynb
- Execute uma demonstração ao vivo no JetBot - notebook live_demo_cones.ipynb
Você pode encontrar esses três cadernos Jupyter aqui
Etapa 3: Construir JetBot e Carregar Notebooks Jupyter
- Crie e configure o JetBot conforme explicado aqui
- Conecte-se ao seu robô navegando para https://: 8888Faça login com a senha padrão jetbot
- Desligue todos os outros notebooks em execução selecionando Kernel -> Desligar Todos os Kernels …
- Navegue até ~ / Notebooks /
- Crie uma nova subpasta ~ / Notebooks / traffic_cones_driving /
- Faça upload de data_collection_cones.ipynb e live_demo_cones.ipynb para ~ / Notebooks / traffic_cones_driving /
IMPORTANTE: Os notebooks Jupyter data_collection_cones.ipynb e live_demo_cones.ipynb referenciados nestas instruções devem ser executados no JetBot enquanto train_model_cones.ipynb - em um computador com GPU.
Portanto, temos que fazer upload de data_collection_cones.ipynb e live_demo_cones.ipynb para o JetBot e colocá-los em ~ / Notebooks / traffic_cones_driving /
Etapa 4: coleta de dados de treinamento no JetBot
Coletaremos um conjunto de dados de classificação de imagens que será usado para ajudar a JetBot a operar em um labirinto de cones de tráfego. JetBot aprenderá como estimar probabilidades de quatro cenários (classes):
- Grátis - quando é seguro seguir em frente
- Bloqueado - quando há um obstáculo na frente do robô
- Esquerda - quando o robô deve girar para a esquerda
- Certo - quando o robô deve girar para a direita
Para coletar os dados de treinamento no JetBot, usaremos o notebook Jupyter data_collection_cones.ipynb que contém instruções detalhadas sobre como fazê-lo. Para executar este notebook no JetBot, siga as próximas etapas:
- Conecte-se ao seu robô navegando para https://: jetbot-ip-address:: 8888
- Faça login com a senha padrão jetbot
- Desligue todos os outros notebooks em execução selecionando Kernel -> Desligar Todos os Kernels …
- Navegue para ~ / Notebooks / traffic_cones_driving /
- Abra e siga o bloco de notas data_collection_cones.ipynb
Etapa 5: treinar a rede neural na máquina GPU
A seguir, usaremos os dados coletados para treinar novamente o modelo de aprendizado profundo AlexNet na máquina GPU (host) executando train_model_cones.ipynb.
Observe que train_model_cones.ipynb é o único notebook Jupyter neste tutorial que NÃO é executado no JetBot
- Conecte-se a uma máquina GPU com PyTorch instalado e um servidor Jupyter Lab em execução
- Carregue train_model_cones.ipynb notebook e para esta máquina
- Faça upload do arquivo dataset_cones.zip que você criou no bloco de notas data_collection_cones.ipynb e extraia este conjunto de dados. (Após esta etapa, você deve ver uma pasta chamada dataset_cones aparecer no navegador de arquivos.)
- Abra e siga o bloco de notas train_model_cones.ipynb. No final desta etapa, você criará um modelo - o arquivo best_model_cones.pth que deve ser carregado no JetBot para executar a demonstração ao vivo.
Etapa 6: execute a demonstração ao vivo no JetBot
Esta etapa final é fazer o upload do modelo best_model_cones.pth para o JetBot e executá-lo.
- Alimente seu robô com a bateria USB
- Conecte-se novamente ao seu robô navegando para https://: jetbot-ip-address:: 8888
- Faça login com a senha padrão jetbot
- Desligue todos os outros notebooks em execução selecionando Kernel -> Desligar Todos os Kernels …
- Navegue até ~ / Notebooks / traffic_cones_driving
- Abra e siga o bloco de notas live_demo_cones.ipynb
Comece com cautela e dê ao JetBot espaço suficiente para se mover. Experimente diferentes configurações de cone e veja o desempenho do robô em diferentes ambientes, iluminação, etc. Enquanto o notebook live_demo_cones.ipynb explica todas as etapas em detalhes, o gráfico a seguir mostra a lógica dos movimentos do robô dadas as probabilidades previstas pelos modelos.
O caderno também explica como armazenar o histórico de movimentos do robô com probabilidades livre / esquerda / direita / bloqueado previstas pelo modelo e como fazer dois vídeos FPV (visualização em primeira pessoa) (a taxas de 1 fps e 15 fps) com telemetria sobreposta e Dados de ações do JetBot. Eles são úteis para depuração, ajuste do controlador PID e melhoria do modelo.
Divirta-se e diga-me se tiver dúvidas!:-)
O código está disponível no Github
Recomendado:
Rpibot - Sobre o aprendizado de robótica: 9 etapas
Rpibot - Sobre Aprendizagem de Robótica: Sou engenheiro de software embarcado em uma empresa automotiva alemã. Iniciei este projeto como uma plataforma de aprendizagem para sistemas embarcados. O projeto foi cancelado cedo, mas gostei tanto que continuei no meu tempo livre. Este é o resultado … Eu
Robô de reconhecimento de sinais de trânsito Raspberry Pi 4: 6 etapas
Robô de reconhecimento de sinais de trânsito Raspberry Pi 4: Este instrutível é baseado em meu projeto universitário. O objetivo era criar um sistema em que uma rede neural analisasse uma imagem e, então, com base no reconhecimento, diria a um robô arduino para se mover via Ros. Por exemplo, se um sinal de virar à direita for reconhecido
Como detectar doenças de plantas usando aprendizado de máquina: 6 etapas
Como detectar doenças em plantas usando aprendizado de máquina: O processo de detecção e reconhecimento de plantas doentes sempre foi um processo manual e tedioso que exige que os humanos inspecionem visualmente o corpo da planta, o que muitas vezes pode levar a um diagnóstico incorreto. Também foi previsto que, como global w
HeadBot - um robô de auto-equilíbrio para aprendizado e divulgação STEM: 7 etapas (com imagens)
HeadBot - um robô com autobalanceamento para aprendizagem e divulgação STEM: Headbot - um robô com 60 centímetros de altura e autobalanceamento - é uma criação da South Eugene Robotics Team (SERT, FRC 2521), uma equipe competitiva de robótica do ensino médio no FIRST Competição de Robótica, de Eugene, Oregon. Este popular robô de divulgação faz re
Previsão da temperatura ambiente via sensor LM35 e aprendizado de máquina: 4 etapas
Previsão de temperatura ambiente via sensor LM35 e aprendizado de máquina: introdução Hoje estamos focados na construção de um projeto de aprendizado de máquina que prevê a temperatura por meio de regressão polinomial. O aprendizado de máquina é um aplicativo de inteligência artificial (IA) que fornece aos sistemas a capacidade de aprender automaticamente