- Hardware requerido:
- Requisito de programación:
- Configuración del procesamiento en Raspberry Pi:
- Diagrama de circuito:
- Programa de seguimiento de bolas Raspberry Pi:
- Funcionamiento del robot de seguimiento de bolas Raspberry Pi:
El campo de la robótica, la inteligencia artificial y el aprendizaje automático está evolucionando rápidamente y seguramente cambiará el estilo de vida de la humanidad en un futuro próximo. Se cree que los robots comprenden e interactúan con el mundo real a través de sensores y procesamiento de aprendizaje automático. El reconocimiento de imágenes es una de las formas populares en las que se cree que los robots comprenden los objetos al mirar el mundo real a través de una cámara, tal como lo hacemos nosotros. En este proyecto, use el poder de Raspberry Pi para construir un robot que pueda rastrear la pelota y seguirla como los robots que juegan al fútbol.
OpenCV es una herramienta de código abierto muy famosa que se utiliza para el procesamiento de imágenes, pero en este tutorial para simplificar las cosas, estamos usando el IDE de procesamiento. Dado que el procesamiento para ARM también ha lanzado la biblioteca GPIO para el procesamiento, ya no tendremos que cambiar entre python y procesamiento para trabajar con Raspberry Pi. Suena bien, ¿verdad? Así que comencemos.
Hardware requerido:
- Frambuesa pi
- Módulo de cámara con cable plano
- Chasis de robot
- Motorreductores con rueda
- Controlador de motor L293D
- Banco de energía o cualquier otra fuente de energía portátil
Requisito de programación:
- Monitor u otra pantalla para Raspberry pi
- Teclado o ratón para Pi
- Procesamiento de software ARM
Nota: Es obligatorio tener una pantalla conectada a Pi a través de cables durante la programación porque solo entonces se puede ver el video de la cámara.
Configuración del procesamiento en Raspberry Pi:
Como se dijo anteriormente, usaremos el entorno de procesamiento para programar nuestra Raspberry Pi y no la forma predeterminada de usar Python. Entonces, siga los pasos a continuación:
Paso 1: - Conecte su Raspberry Pi a su monitor, teclado y mouse y enciéndalo.
Paso 2: - Asegúrese de que su Pi esté conectado a una conexión a Internet activa porque estamos a punto de descargar algunas cosas.
Paso 3: - Haga clic en Processing ARM, para descargar el IDE de procesamiento para Raspberry Pi. La descarga se realizará en forma de archivo ZIP.
Paso 4: - Una vez descargados, extraiga los archivos en su carpeta ZIP en su directorio preferido. Lo acabo de extraer en mi escritorio.
Paso 5: - Ahora, abra la carpeta extraída y haga clic en el archivo llamado procesamiento. Debería abrir una ventana como se muestra a continuación.
Paso 6: - Este es el entorno donde estaremos escribiendo nuestros códigos. Para las personas que están familiarizadas con Arduino, no se sorprendan. SÍ, el IDE se parece a Arduino y también el programa.
Paso 7: - Necesitamos dos bibliotecas para que funcione nuestro programa de seguimiento de bolas, para instalarlo, simplemente haga clic en Sketch -> Import Library -> Add Library . Se abrirá el siguiente cuadro de diálogo.
Paso 8: - Use el cuadro de texto superior izquierdo para buscar Raspberry Pi y presione enter, el resultado de la búsqueda debería verse así.
Paso 9: - Busque las bibliotecas llamadas “GL Video” y “Hardware I / O” y haga clic en instalar para instalarlas. Asegúrese de instalar ambas bibliotecas.
Paso 10: - Basado en su Internet, la instalación tomará unos minutos. Una vez hecho esto, estamos listos para procesar el software.
Diagrama de circuito:
El diagrama de circuito de este proyecto de seguimiento de bolas Raspberry Pi se muestra a continuación.
Como puede ver, el circuito involucra una cámara PI, un módulo de controlador de motor y un par de motores conectados a la Raspberry pi. El circuito completo está alimentado por un banco de energía móvil (representado por una batería AAA en el circuito de arriba).
Dado que los detalles de los pines no se mencionan en la Raspberry Pi, necesitamos verificar los pines usando la siguiente imagen
Para impulsar los motores, necesitamos cuatro pines (A, B, A, B). Estos cuatro pines están conectados desde GPIO14,4,17 y 18 respectivamente. El cable naranja y blanco juntos forman la conexión para un motor. Entonces tenemos dos pares de este tipo para dos motores.
Los motores están conectados al módulo de controlador de motor L293D como se muestra en la imagen y el módulo de controlador es alimentado por un banco de energía. Asegúrese de que la tierra del banco de energía esté conectada a la tierra de la Raspberry Pi, solo entonces su conexión funcionará.
Eso es todo, terminamos con nuestra conexión de hardware, volvamos a nuestro entorno de procesamiento y comencemos a programar para enseñarle a nuestro robot cómo rastrear una bola.
Programa de seguimiento de bolas Raspberry Pi:
El programa de procesamiento completo de este proyecto se encuentra al final de esta página, que usted utiliza directamente. Más adelante, he explicado el funcionamiento del código para que pueda usarlo para otros proyectos similares.
El concepto del programa es muy simple. Aunque la intención del proyecto es rastrear una pelota, en realidad no lo vamos a hacer. Solo vamos a identificar la bola usando su color. Como todos sabemos, los videos no son más que cuadros continuos de imágenes. Entonces tomamos cada imagen y la dividimos en píxeles. Luego comparamos cada color de píxel con el color de la bola; si se encuentra una coincidencia, podemos decir que hemos encontrado la pelota. Con esta información también podemos identificar la posición de la bola (color de píxel) en la pantalla. Si la posición está muy a la izquierda, movemos el robot hacia la derecha, si la posición es muy a la derecha, movemos el robot a la izquierda para que la posición del píxel siempre permanezca en el centro de la pantalla. Puede ver el video de Computer Vision de Daniel Shiffman para obtener una imagen clara.
Como siempre comenzamos importando las dos bibliotecas que descargamos. Esto se puede hacer con las siguientes dos líneas. La biblioteca de E / S de hardware se usa para acceder a los pines GPIO del PI directamente desde el entorno de procesamiento, la biblioteca glvideo se usa para acceder al módulo de la cámara Raspberry Pi.
procesamiento de importación.io. *; importar gohai.glvideo. *;
Dentro de la función de configuración inicializamos los pines de salida para controlar el motor y también obtenemos el video de la cámara pi y lo dimensionamos en una ventana de tamaño 320 * 240.
configuración vacía () {tamaño (320, 240, P2D); video = new GLCapture (esto); video.start (); trackColor = color (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
El dibujo vacío es como el bucle infinito, el código dentro de este bucle se ejecutará siempre que finalice el programa. Si hay una fuente de cámara disponible, leemos el video que sale de ella.
vacío dibujar () {fondo (0); if (video.available ()) {video.read (); }}
Luego comenzamos a dividir el cuadro de video en píxeles. Cada píxel tiene un valor de rojo, verde y azul. Estos valores se almacenan en la variable r1, g1 y b1
for (int x = 0; x <video.width; x ++) {for (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // ¿Cuál es el color actual? Color currentColor = video.pixels; float r1 = red (currentColor); float g1 = green (currentColor); flotador b1 = azul (color actual);
Para detectar el color de la bola inicialmente, tenemos que hacer clic en el color. Una vez que haga clic, el color de la bola se almacenará en una variable llamada trackColour .
void mousePressed () {// Guardar el color donde se hace clic con el mouse en la variable trackColor int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
Una vez que tenemos el color de la pista y el color actual tenemos que compararlos. Esta comparación utiliza la función dist. Comprueba qué tan cerca está el color actual del color de la pista.
flotar d = dist (r1, g1, b1, r2, g2, b2);
El valor de dist será cero para una coincidencia exacta. Entonces, si el valor de dist es menor que un valor especificado (récord mundial), asumimos que hemos encontrado el color de la pista. Luego obtenemos la ubicación de ese píxel y lo almacenamos en la variable más cercana X e Y más cercana para encontrar la ubicación de la bola
if (d <worldRecord) {worldRecord = d; más cercanoX = x; más cercanoY = y; }
También dibujamos una elipse alrededor del color encontrado para indicar que se ha encontrado el color. El valor de la posición también está impreso en la consola, esto ayudará mucho durante la depuración.
if (worldRecord <10) {// Dibuja un círculo en el relleno de píxeles rastreados (trackColor); strokeWeight (4.0); trazo (0); elipse (X más cercana, Y más cercana, 16, 16); println (la X más cercana, la Y más cercana);
Finalmente podemos comparar la posición de la X más cercana y la Y más cercana y ajustar los motores de tal manera que el color llegue al centro de la pantalla. El siguiente código se utiliza para girar el robot a la derecha ya que se encontró que la posición X del color estaba en el lado izquierdo de la pantalla (<140)
si (X más cercano <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); retraso (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Girar a la derecha"); }
Del mismo modo, podemos verificar la posición de X e Y para controlar los motores en la dirección requerida. Como siempre, puede consultar la parte inferior de la página para ver el programa completo.
Funcionamiento del robot de seguimiento de bolas Raspberry Pi:
Una vez que esté listo con el hardware y el programa, es hora de divertirse. Antes de probar nuestro bot en tierra, debemos asegurarnos de que todo funcione correctamente. Conecte su Pi para monitorear e iniciar el código de procesamiento. Debería ver la transmisión de video en una ventana pequeña. Ahora, lleva la bola dentro del marco y haz clic en la bola para enseñarle al robot que debe seguir este color en particular. Ahora mueve la bola por la pantalla y deberías notar que las ruedas giran.
Si todo funciona como se esperaba, suelte el bot en el suelo y comience a jugar con él. Asegúrese de que la habitación esté iluminada uniformemente para obtener mejores resultados. El funcionamiento completo del proyecto se muestra en el video a continuación. Espero que haya entendido el proyecto y haya disfrutado construyendo algo similar. Si tiene algún problema, no dude en publicarlo en la sección de comentarios a continuación o ayudar.