Índice:

Robô Rastreador de Bola: 8 Passos
Robô Rastreador de Bola: 8 Passos

Vídeo: Robô Rastreador de Bola: 8 Passos

Vídeo: Robô Rastreador de Bola: 8 Passos
Vídeo: ENSINEI O ROBÔ A DANÇAR 😱 2024, Julho
Anonim
Robô Rastreador de Bola
Robô Rastreador de Bola
Robô Rastreador de Bola
Robô Rastreador de Bola
Robô Rastreador de Bola
Robô Rastreador de Bola

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

Introdução
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

Materiais e softwares usados neste projeto
Materiais e softwares usados neste projeto
Materiais e softwares usados neste projeto
Materiais e softwares usados neste projeto
Materiais e softwares usados neste projeto
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

Image
Image
Esquemas
Esquemas
Esquemas
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

Pseudo-código
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

Código
Código
Código
Código
Código
Código
Código
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: