Índice:
- Suprimentos
- Etapa 1: Introdução
- Etapa 2: Materiais e softwares usados neste projeto
- Etapa 3: O que fazer?
- Etapa 4: esquemas
- Etapa 5: como fazer?
- Etapa 6: Pseudo-código
- Etapa 7: Código
- Etapa 8: Links externos
Vídeo: Robô Rastreador de Bola: 8 Passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
Então, neste, vou dizer como fazer um robô rastreador de bola que é um robô vai identificar uma bola e segui-la. É basicamente uma técnica de vigilância automatizada que pode ser usada no mundo moderno. Então, vamos entrar e começar a construir …
NOTA: Este é o trabalho parcial submetido à Deakin University, School of IT, SIT-210 Embedded Systems Development
Suprimentos
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Etapa 1: Introdução
A vigilância de hoje apresenta uma grande desvantagem que reside no envolvimento de humanos que, como todos sabemos, podem ser facilmente distraídos, por isso foi da maior importância descobrir um sistema que pudesse monitorizar regiões de forma autónoma e contínua. E também queremos identificar coisas desagradáveis ou indesejadas e perigos ao mesmo tempo que tomamos decisões e respondemos de acordo. Portanto, o rastreamento de objetos com o uso de sistemas inteligentes e computadores é essencial e crucial para obter vigilância automatizada.
Qualquer sistema de vigilância externa deve ser capaz de rastrear objetos em movimento em seu campo de visão, classificar esses objetos e detectar algumas de suas atividades. Desenvolvi um método para rastrear e classificar esses objetos em cenários realistas. O rastreamento de objetos em uma única câmera é realizado usando a subtração do fundo, seguida pela correspondência da região. Isso leva em consideração vários sinais, incluindo velocidades, tamanhos e distâncias das caixas delimitadoras.
Etapa 2: Materiais e softwares usados neste projeto
Componentes de hardware usados:
- Raspberry Pi (x1)
- Módulo de câmera Raspberry Pi (x1)
- Sensor Ultrassônico (x3)
- Drivers de motor SparkFun Dual H-Bridge L298 (x1)
- Motor DC (x1)
- Placa de ensaio (x1)
- Fios de conexão
Software usado:
OpenCV
Ferramentas de mão:
Pitão
Etapa 3: O que fazer?
Qualquer sistema de vigilância externa deve ser capaz de rastrear objetos em movimento em seu campo de visão, classificar esses objetos e detectar algumas de suas atividades. Desenvolvi um método para rastrear e classificar esses objetos em cenários realistas. O rastreamento de objetos em uma única câmera é realizado usando a subtração do fundo, seguida pela correspondência da região. Isso leva em consideração vários sinais, incluindo velocidades, tamanhos e distâncias das caixas delimitadoras.
O mais importante durante a detecção de imagens quadro a quadro foi evitar qualquer queda de quadro, pois o bot pode entrar em um estado de limbo se o bot não perceber a direção do movimento da bola por causa das quedas de quadro. Se a bola sair do alcance da câmera, ela entrará no que chamamos de estado de limbo, nesse caso, o bot faz uma volta de 360 graus para ver o espaço ao seu redor até que a bola volte no quadro de a câmera e, em seguida, comece a se mover em sua direção.
Para a análise da imagem, estou pegando cada quadro e, em seguida, mascarando-o com a cor necessária. Então encontro todos os contornos e encontro o maior entre eles e o vinculo em um retângulo. E mostre o retângulo na imagem principal e encontre as coordenadas do centro do retângulo.
Finalmente, o bot tenta trazer as coordenadas da bola para o centro de seu eixo de coordenadas. É assim que o robô funciona. Isso pode ser ainda mais aprimorado com o uso de um dispositivo IoT como uma partícula de fóton que permite que você seja informado quando uma coisa é detectada e que o robô a está seguindo ou quando o robô perdeu a pista e agora está retornando à base.
Para fins de processamento de imagem, você precisa instalar o software OpenCV no seu raspberry pi, o que foi bastante complicado para mim.
Você pode obter todas as informações necessárias para instalar o OpenCV por meio deste link: clique aqui
Etapa 4: esquemas
Acima, forneci o esquema para meu projeto e junto com ele está a placa de circuito impresso (PCB).
E aqui estão algumas das principais conexões que você precisa fazer:
• Em primeiro lugar, o módulo da câmera Raspberry Pi é conectado diretamente ao Raspberry Pi.
• Os sensores ultrassônicos VCC são conectados ao terminal comum mesmo que o GND (terra) e as duas portas restantes do sensor ultrassônico são conectadas aos pinos GPIO no Raspberry Pi.
• Os motores são conectados usando o H-Bridge.
• A energia é fornecida usando a bateria.
Também adicionei o vídeo que pode ajudar a entender o funcionamento do sensor ultrassônico e como ele funciona.
e você também pode seguir este link caso não encontre o vídeo acima.
Etapa 5: como fazer?
Fiz este projeto descrevendo um robô básico que pode rastrear uma bola. O robô usa uma câmera para fazer o processamento da imagem, tirando quadros e rastreando a bola. Para rastrear a bola, vários recursos, como cor, tamanho e forma, são usados.
O robô encontra uma cor codificada e, em seguida, procura a bola dessa cor e a segue. Escolhi Raspberry Pi como microcontrolador neste projeto porque nos permite usar seu módulo de câmera e dá grande flexibilidade no código, pois usa a linguagem python que é muito amigável e também nos permite usar a biblioteca OpenCV para analisar as imagens.
Uma ponte H foi usada para mudar a direção de rotação dos motores ou para pará-los.
Para a análise da imagem, estou pegando cada quadro e, em seguida, mascarando-o com a cor necessária. Então eu encontro todos os contornos e encontro o maior entre eles e o vinculo em um retângulo. E mostre o retângulo na imagem principal e encontre as coordenadas do centro do retângulo.
Finalmente, o bot tenta trazer as coordenadas da bola para o centro de seu eixo de coordenadas. É assim que o robô funciona. Isso pode ser ainda mais aprimorado com o uso de um dispositivo IoT como uma partícula de fóton que permite que você seja informado quando uma coisa é detectada e que o robô a está seguindo ou quando o robô perdeu a pista e agora está retornando à base. E para fazer isso estaremos usando uma plataforma de software online que conecta os dispositivos e permite que eles executem certas ações em gatilhos específicos que são os gatilhos IFTTT.
Etapa 6: Pseudo-código
Aqui está o pseudo-código para a parte de detecção usando OpenCV onde detectamos uma bola.
Etapa 7: Código
Acima estão os trechos do código e abaixo está a descrição detalhada do código.
# importe os pacotes necessários
IMPORTAMOS TODOS OS PACOTES NECESSÁRIOS
from picamera.array import PiRGBArray #Como há um problema de resolução no raspberry pi, não será capaz de capturar frames por VideoCapture
de picamera import PiCamera import RPi. GPIO as GPIO import time import numpy as np
AGORA CONFIGURAMOS O HARDWARE E ATRIBUEMOS OS PINOS CONECTADOS NO RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Sensor ultrassônico esquerdo
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Sensor ultrassônico frontal
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 # Sensor ultrassônico direito
GPIO_ECHO3 = 35
MOTOR1B = 18 # Motor esquerdo
MOTOR1E = 22
MOTOR2B = 21 # Motor direito
MOTOR2E = 19
LED_PIN = 13 #Se encontrar a bola, acenderá o led
# Defina os pinos como saída e entrada
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Defina o gatilho como Falso (baixo)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
ESTA FUNÇÃO USA TODOS OS SENSORES ULTRASSÔNICOS COLETA A DISTÂNCIA DOS OBJETOS EM TORNO DE NOSSO BOT
# Permitir que o módulo se estabilize
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Definir pinos como saída e entrada GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Definir trigger como False (Baixo) GPIO.output (GPIO_TRIGGER, False) # Permitir que o módulo estabeleça time.sleep (0,01) #while distance> 5: #Envie pulso de 10us para acionar GPIO.output (GPIO_TRIGGER, True) time.sleep (0,00001) GPIO. output (GPIO_TRIGGER, False) begin = time.time () enquanto GPIO.input (GPIO_ECHO) == 0 e time.time ()
FAZENDO OS MOTORES DC FUNCIONAREM COM O PI DE FRAMBOESA
GPIO.setup (MOTOR1B, GPIO. OUT)
GPIO.setup (MOTOR1E, GPIO. OUT)
GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)
DEFINIÇÃO DE FUNÇÕES PARA OPERAR O ROBÔ E FAZÊ-LO MOVER EM DIFERENTES DIREÇÕES
def forward ():
GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def reverso (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)
def stop ():
GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)
FAZENDO O MÓDULO DA CÂMERA FUNCIONAR E AJUSTANDO AS CONFIGURAÇÕES
#CAMERA CAPTURE
#inicialize a câmera e pegue uma referência para a câmera de captura de câmera raw = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (câmera, tamanho = (160, 120)) # permitir a câmera para aquecer. dormir (0,001)
AGORA IMPLEMENTADO A PRINCIPAL COISA ONDE O BOT SEGUE A BOLA E EVITE QUALQUER OBSTÁCULO NO CAMINHO
enquanto (1 <10): {#distance vindo da distância do sensor ultrassônico frontalC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distance vindo da distância do sensor ultrassônico direitoR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distance vindo do sensor ultrassônico esquerdoL = sonar (GPIO_TRIGGER1, GPIO_ECHO1) if (distanceC = 8: turno à direita () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) # while found == 0: virar à esquerda () tempo.sono (0,00625) distância elifL> = 8: virar à esquerda () tempo.sono (0,00625) parar () tempo.sono (0,0125) avançar () tempo.sono (0,00625) parar () tempo.sono (0,0125) virar à direita () tempo.sono (0,00625) parar () tempo.sono (0,0125) else: parar () tempo.sono (0,01) else: # caso contrário, avança () tempo.sono (0,00625) se (distanceC> 10): #it traz as coordenadas da bola para o centro do eixo imaginário da câmera. if (centre_x = 20): if (centre_x0): flag = 1 leftturn () time.sleep (0.025) forward () time.sleep (0.00003125) stop () time.sleep (0,00625) else: stop () time.sleep (0,01)
outro:
#se encontra a bola e está muito perto acende o led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # limpar o fluxo em preparação para o próximo quadro}
FAÇA AS LIMPEZA NECESSÁRIAS
GPIO.cleanup () #free todos os pinos GPIO
Etapa 8: Links externos
Link para o vídeo de demonstração: clique aqui (Youtube)
Link para o código no Git-hub: clique aqui (Git-Hub)
Recomendado:
Como construir PHIL - um robô rastreador de luz: 6 etapas (com fotos)
Como construir o PHIL - um robô de rastreamento de luz: Neste Instructable, mostrarei como fiz este robô de rastreamento de luz de eixo duplo usando um Arduino Uno. Todo o CAD e código serão incluídos para que você possa construí-lo sozinho, sem precisar de nenhuma habilidade de programação ou design. Tudo que você vai precisar
Bola-bola de tênis de mesa LED: 16 etapas (com fotos)
Bola-bola de tênis de mesa LED: história de fundoApós ter construído um painel plano de bolas de tênis de mesa um tempo atrás, comecei a me perguntar se seria possível fazer um painel 3D com bolas de tênis de mesa. Combinado com meu interesse em fazer " arte " de formas geométricas recorrentes I
Bola do robô de estimação: 10 etapas (com fotos)
Bola do robô de estimação: Meu cachorro adora brincar com brinquedos, especialmente aqueles que ele pode perseguir! Eu construí uma bola robótica que liga e rola automaticamente sempre que ele interage com ela, me notifica através do meu telefone celular que eu posso usar para controlá-la por WiFi e fin
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
EMIREN ™ (O robô rastreador controlado por rádio): 9 etapas (com fotos)
EMIREN ™ (O robô rastreador controlado por rádio): Extremamente viciado em robôs? Bem, estou aqui para mostrar e contar ao meu robô rastejante simples e básico. Eu o chamei de robô EMIREN. Por que EMIREN? Simples, é uma combinação de dois nomes a Emily e Waren [Emi (ly) + (wa) Ren = EmiRen = EMIREN] Neste projeto