Tabla de contenido:
- Suministros
- Paso 1: Introducción
- Paso 2: Materiales y productos blandos utilizados en este proyecto
- Paso 3: ¿Qué hacer?
- Paso 4: esquemas
- Paso 5: ¿Cómo hacerlo?
- Paso 6: pseudocódigo
- Paso 7: Código
- Paso 8: Enlaces externos
Video: Robot de seguimiento de bolas: 8 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Entonces, en esto, voy a decir cómo hacer un robot de rastreo de bolas que sea un robot que identifique una bola y la siga. Es básicamente una técnica de vigilancia automatizada que se puede utilizar en el mundo moderno. Entonces, simplemente saltemos y comencemos a construir …
NOTA: Esta es la asignación parcial enviada a Deakin University, School of IT, SIT-210 Embedded Systems Development
Suministros
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Paso 1: Introducción
La vigilancia actual presenta un gran inconveniente y es que se basa en la participación de humanos que, como todos sabemos, pueden distraerse fácilmente, por lo que era de suma importancia descubrir un sistema que pueda monitorear regiones de manera autónoma y continua. Y también queremos identificar cosas y peligros desagradables o no deseados al mismo tiempo que tomamos decisiones y respondemos en consecuencia. Por lo tanto, el seguimiento de objetos con el uso de sistemas y computadoras inteligentes es esencial y crucial para lograr una vigilancia automatizada.
Cualquier sistema de vigilancia al aire libre debe poder rastrear objetos en movimiento en su campo de visión, clasificar estos objetos y detectar algunas de sus actividades. He desarrollado un método para rastrear y clasificar estos objetos en escenarios realistas. El seguimiento de objetos en una sola cámara se realiza mediante la resta de fondo, seguida de la correspondencia de la región. Esto tiene en cuenta múltiples señales, incluidas velocidades, tamaños y distancias de los cuadros delimitadores.
Paso 2: Materiales y productos blandos utilizados en este proyecto
Componentes de hardware utilizados:
- Frambuesa Pi (x1)
- Módulo de cámara Raspberry Pi (x1)
- Sensor ultrasónico (x3)
- Controladores de motor SparkFun Dual H-Bridge L298 (x1)
- Motor de CC (x1)
- Tablero de pruebas (x1)
- Conexión de cables
Software utilizado:
OpenCV
Herramientas manuales:
Pitón
Paso 3: ¿Qué hacer?
Cualquier sistema de vigilancia al aire libre debe poder rastrear objetos en movimiento en su campo de visión, clasificar estos objetos y detectar algunas de sus actividades. He desarrollado un método para rastrear y clasificar estos objetos en escenarios realistas. El seguimiento de objetos en una sola cámara se realiza mediante la resta de fondo, seguida de la correspondencia de la región. Esto tiene en cuenta múltiples señales, incluidas velocidades, tamaños y distancias de los cuadros delimitadores.
Lo crucial al detectar imágenes fotograma a fotograma fue evitar cualquier caída de fotograma, ya que entonces el bot puede entrar en un estado de limbo si el bot no nota la dirección del movimiento de la pelota debido a las caídas de fotogramas. Si la pelota sale del rango de la cámara, entrará en lo que llamamos un estado de limbo, en ese caso, el bot hace un giro de 360 grados para ver el espacio a su alrededor hasta que la pelota regrese al marco de la cámara y luego comience a moverse en su dirección.
Para el análisis de la imagen, tomo cada fotograma y luego lo enmascaro con el color necesario. Luego encuentro todos los contornos y encuentro el más grande entre ellos y lo encierro en un rectángulo. Y muestre el rectángulo en la imagen principal y encuentre las coordenadas del centro del rectángulo.
Finalmente, el bot intenta llevar las coordenadas de la pelota al centro de su eje de coordenadas. Así es como funciona el robot. Esto se puede mejorar aún más mediante el uso de un dispositivo de IoT como una partícula de fotón que puede permitirle estar informado cuando se detecta algo y que el robot lo está siguiendo o cuando el robot ha perdido la pista y ahora está regresando a la base..
Para el procesamiento de imágenes, debe instalar el software OpenCV en su raspberry pi, lo cual fue bastante complicado para mí.
Puede obtener la información necesaria para instalar OpenCV a través de este enlace: haga clic aquí
Paso 4: esquemas
Arriba he proporcionado los esquemas para mi proyecto y junto con él está la placa de circuito impreso (PCB).
Y estas son algunas de las conexiones principales que debe hacer:
• En primer lugar, el módulo de la cámara Raspberry Pi se conecta directamente a la Raspberry Pi.
• Los sensores ultrasónicos VCC están conectados al terminal común, lo mismo que con el GND (tierra) y los dos puertos restantes del sensor ultrasónico están conectados a los pines GPIO en la Raspberry Pi.
• Los motores se conectan mediante H-Bridge.
• La energía se suministra mediante la batería.
También agregué el video que podría ayudar a comprender el funcionamiento del sensor ultrasónico y cómo funciona.
y también puede seguir este enlace si no puede encontrar el video de arriba.
Paso 5: ¿Cómo hacerlo?
Hice este proyecto que representa un robot básico que puede rastrear una bola. El robot usa una cámara para procesar imágenes tomando fotogramas y rastreando la pelota. Para rastrear la pelota se utilizan varias características como su color, tamaño y forma.
El robot encuentra un color codificado y luego busca la bola de ese color y la sigue. Elegí Raspberry Pi como microcontrolador en este proyecto porque nos permite usar su módulo de cámara y brinda una gran flexibilidad en el código, ya que usa el lenguaje Python que es muy fácil de usar y también nos permite usar la biblioteca OpenCV para analizar las imágenes.
Se ha utilizado un puente en H para cambiar la dirección de rotación de los motores o para detenerlos.
Para el análisis de la imagen, tomo cada fotograma y luego lo enmascaro con el color necesario. Luego encuentro todos los contornos y encuentro el más grande entre ellos y lo encierro en un rectángulo. Y muestre el rectángulo en la imagen principal y encuentre las coordenadas del centro del rectángulo.
Finalmente, el bot intenta llevar las coordenadas de la pelota al centro de su eje de coordenadas. Así es como funciona el robot. Esto se puede mejorar aún más mediante el uso de un dispositivo de IoT como una partícula de fotón que puede permitirle estar informado cuando se detecta algo y que el robot lo está siguiendo o cuando el robot ha perdido la pista y ahora está regresando a la base.. Y para ello utilizaremos una plataforma de software en línea que conecta los dispositivos y les permite realizar determinadas acciones sobre disparadores específicos que son disparadores IFTTT.
Paso 6: pseudocódigo
Aquí está el pseudocódigo para la parte de detección usando OpenCV donde detectamos una bola.
Paso 7: Código
Arriba están los fragmentos del código y abajo está la descripción detallada del código.
# importar los paquetes necesarios
IMPORTAMOS TODOS LOS PAQUETES NECESARIOS
from picamera.array import PiRGBArray # Como hay un problema de resolución en raspberry pi, no se podrán capturar fotogramas por VideoCapture
desde picamera import PiCamera import RPi. GPIO como GPIO import time import numpy as np
AHORA INSTALAMOS EL HARDWARE Y ASIGNAMOS LOS PINS CONECTADOS EN RASPBERRY PI
GPIO.setmode (GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Sensor ultrasónico izquierdo
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Sensor ultrasónico frontal
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Sensor ultrasónico derecho
GPIO_ECHO3 = 35
MOTOR1B = 18 # Motor izquierdo
MOTOR1E = 22
MOTOR2B = 21 # Motor derecho
MOTOR2E = 19
LED_PIN = 13 #Si encuentra la bola, encenderá el led
# Establecer pines como salida y entrada
GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # Activar GPIO.setup (GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # Activar GPIO.setup (GPIO_ECHO2, GPIO. IN) GPIO.setup (GPIO_TRIGGER3, GPIO. OUT) # Activar GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)
# Establezca el disparador en Falso (Bajo)
GPIO.output (GPIO_TRIGGER1, False) GPIO.output (GPIO_TRIGGER2, False) GPIO.output (GPIO_TRIGGER3, False)
ESTA FUNCIÓN UTILIZA TODOS LOS SENSORES ULTRASÓNICOS RECOGE LA DISTANCIA DE LOS OBJETOS ALREDEDOR DE NUESTRO BOT
# Permitir que el módulo se asiente
def sonar (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # Establecer pines como salida y entrada GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # Activar GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Establecer el gatillo en False (Baja) GPIO.output (GPIO_TRIGGER, False) # Permitir que el módulo establezca time.sleep (0.01) # while distance> 5: # Enviar pulso de 10us para activar GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO. salida (GPIO_TRIGGER, False) begin = time.time () mientras que GPIO.input (GPIO_ECHO) == 0 y time.time ()
CÓMO HACER FUNCIONAR LOS MOTORES DE CC CON EL RASPBERRY PI
Configuración de GPIO (MOTOR1B, GPIO. OUT)
Configuración de GPIO (MOTOR1E, GPIO. OUT)
Configuración de GPIO (MOTOR2B, GPIO. OUT) Configuración de GPIO (MOTOR2E, GPIO. OUT)
DEFINICIÓN DE FUNCIONES PARA OPERAR EL ROBOT Y HACER QUE SE MUEVA EN DIFERENTES DIRECCIONES
def adelante ():
Salida. GPIO (MOTOR1B, GPIO. ALTA) Salida. GPIO (MOTOR1E, GPIO. LOW) Salida. GPIO (MOTOR2B, GPIO. HIGH) Salida. GPIO (MOTOR2E, GPIO. LOW) def reverse (): Salida. GPIO (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) Salida. GPIO (MOTOR2B, GPIO. LOW) Salida. GPIO (MOTOR2E, GPIO. HIGH)
def detener ():
Salida. GPIO (MOTOR1E, GPIO. LOW) Salida. GPIO (MOTOR1B, GPIO. LOW) Salida. GPIO (MOTOR2E, GPIO. LOW) Salida. GPIO (MOTOR2B, GPIO. LOW)
HACER FUNCIONAR EL MÓDULO DE CÁMARA Y AJUSTAR LA CONFIGURACIÓN
# CAPTURA DE CÁMARA
#inicializar la cámara y tomar una referencia a la captura de la cámara sin procesar camera = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (camera, size = (160, 120)) # permitir la cámara al tiempo de calentamiento dormir (0.001)
AHORA IMPLEMENTANDO LO PRINCIPAL DONDE EL BOT SIGUE LA BOLA Y EVITE CUALQUIER OBSTÁCULO EN EL CAMINO
while (1 <10): {#distancia proveniente de la distancia del sensor ultrasónico frontalC = sonar (GPIO_TRIGGER2, GPIO_ECHO2) #distancia proveniente de la distancia del sensor ultrasónico derechoR = sonar (GPIO_TRIGGER3, GPIO_ECHO3) #distancia proveniente de la distancia del sensor ultrasónico izquierdoL = sonar (GPIO_TRIGGER1, GPIO_ECHO1) if (distanceC = 8: rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) # while found == 0: giro a la izquierda () tiempo.sueño (0.00625) elif distanciaL> = 8: giro a la izquierda () tiempo.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) else: stop () time.sleep (0.01) else: # de lo contrario avanza () time.sleep (0.00625) if (distanciaC> 10): #trae las coordenadas de la bola al centro del eje imaginario de la cámara. 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)
demás:
#si encuentra la bola y está demasiado cerca enciende el led. GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # borrar la secuencia en preparación para el siguiente fotograma }
HACER LAS LIMPIEZAS NECESARIAS
GPIO.cleanup () #free todos los pines GPIO
Paso 8: Enlaces externos
Enlace al video de demostración: haga clic aquí (Youtube)
Enlace al código en Git-hub: haga clic aquí (Git-Hub)
Recomendado:
Arduino - Robot de resolución de laberintos (MicroMouse) Robot de seguimiento de pared: 6 pasos (con imágenes)
Arduino | Robot de resolución de laberintos (MicroMouse) Robot de seguimiento de pared: Bienvenido, soy Isaac y este es mi primer robot " Striker v1.0 ".Este robot fue diseñado para resolver un laberinto simple.En la competencia teníamos dos laberintos y el robot fue capaz de identificarlos. Cualquier otro cambio en el laberinto puede requerir un cambio en el
Cómo construir PHIL - un robot de seguimiento de luz: 6 pasos (con imágenes)
Cómo construir PHIL: un robot de seguimiento de luz: en este Instructable, le mostraré cómo hice este robot de seguimiento de luz de doble eje usando un Arduino Uno. Se incluirá todo el CAD y el código para que pueda construirlo usted mismo sin necesidad de ninguna habilidad de programación o diseño. Todo lo que necesita
Kits de coche de seguimiento de robot inteligente de bricolaje Seguimiento de coche fotosensible: 7 pasos
DIY Smart Robot Tracking Car Kits Tracking Car Photosensitive: Design by SINONING ROBOTPuedes comprar desde el robot de seguimiento carTheoryLM393 chip compara los dos fotorresistores, cuando hay un fotorresistor LED en BLANCO, el lado del motor se detendrá inmediatamente, el otro lado del motor girar, de modo que
Cámara de 180 ° con seguimiento de bolas: 5 pasos (con imágenes)
Ball Tracking 180 ° Camera: ¡Bienvenido a mi primer proyecto! Estoy emocionado de compartir lo que hice y mostrarle los pasos para construir su propia cámara de seguimiento. Este proyecto fue posible utilizando la biblioteca OpenCV junto con Python
Guía de montaje del robot de seguimiento de línea D2-1 - Kit de robot ultra económico: 17 pasos
Guía de ensamblaje del robot de seguimiento de línea D2-1 - Kit de robot ultra barato: ¡La tecnología es increíble, y también los precios de los productos electrónicos de China! Puede obtener estos kits de robot de seguimiento de línea por aproximadamente $ 4.50 por pieza en eBay, con envío gratuito. El único inconveniente es que solo vienen con instrucciones en chino, no son de mucha utilidad para m