Proyecto de código abierto FPGA: Diseño de sistema de seguimiento de bolas (código abierto temporal)

1. Breve descripción

Este diseño se basa en la realización del reconocimiento de características de color. Este no es un algoritmo de alto nivel. La capacidad personal es limitada y la dificultad de la implementación FPGA del algoritmo no es pequeña, por lo que se utiliza el método más simple para lograrlo, pero como un aprendizaje introductorio de FPGA es suficiente. Este diseño se hizo alrededor del 19 de abril. En ese momento, mi conocimiento de FPGA era bastante débil y mi capacidad para desarrollar FPGA era promedio. Por lo tanto, hay muchos problemas de diseño en este diseño y no tengo tiempo para modificarlo. Espero que amigos capaces puedan mejorarlo, ¡gracias de antemano!

Cuando comencé a aprender FPGA, completé el sistema de adquisición de imágenes basado en FPGA de acuerdo con el video tutorial "Esas cosas sobre SDRAM" de Deng Kanwen. Pero había muchos errores. En ese momento, mi habilidad era muy mala y no podía resolver el problema, así que no lo usé en los siguientes proyectos de procesamiento de imágenes. Este diseño también es el mismo, usando la rutina de adquisición de imágenes entregada por la placa FPGA, desarrollé sobre esta base, agregando un módulo de procesamiento de imágenes y un módulo de control del mecanismo de dirección de dos ejes.

2. Arquitectura de algoritmos

El proceso de adquisición y visualización de imágenes es generalmente: FPGA almacena los datos de imagen recopilados por la cámara en SDRAM y luego los transporta desde SDRAM al controlador LCD para la visualización de salida. Como se puede ver en el diagrama de bloques general a continuación, el procesamiento de imágenes se realiza cuando se emite el flujo de imágenes LCD. El módulo de procesamiento de imágenes adopta un método de procesamiento de canalización para completar RGB2YCbCr (binarización), filtrado morfológico de expansión y corrosión, extracción de coordenadas de objetos de destino y finalmente coordenadas de objetos e imágenes de salida. Luego, el módulo de transmisión del mecanismo de dirección impulsa el mecanismo de dirección de dos ejes para lograr un seguimiento en tiempo real.
Inserte la descripción de la imagen aquí

3. Una breve introducción al módulo de algoritmo de imagen

1). La siguiente figura es una captura de pantalla parcial de la capa superior del módulo de procesamiento de imágenes. Esto realiza la selección y salida de la imagen. Presione el botón para seleccionar uno de los cuatro efectos de imagen de imagen original, binarización, corrosión y expansión.
Inserte la descripción de la imagen aquí
2) Todos los módulos de algoritmos de imagen se instancian en la capa superior, y también hay un puerto serie para facilitar la depuración de los parámetros de umbral binarios, lo que puede acortar el tiempo de depuración y mejorar la eficiencia. Inserte la descripción de la imagen aquí
3). La siguiente figura es el módulo de extracción de coordenadas del objeto de destino. El método de cálculo es sumar las coordenadas efectivas y finalmente dividir por el número de píxeles efectivos para obtener las coordenadas del objeto de destino. Inserte la descripción de la imagen aquí
4) Los datos de ajuste de parámetros recibidos por el puerto serie se utilizan finalmente en el módulo RGB2Ycbcr, y el sin comentar es el valor umbral determinado por el ajuste final. Cuando necesite ajustar el umbral, comente la parte superior y descomente la parte inferior. El comando de ajuste del puerto serie es: 01xx0102xx0203xx0304xx04. xx es el valor que debe ingresar, y 4 xx corresponden a los cuatro datos de ajuste.
Inserte la descripción de la imagen aquí
5) Estas son las áreas donde hay dudas sobre el procesamiento de imágenes, otros principios como la implementación de algoritmos se pueden aprender de Baidu, el contenido es demasiado pero no complicado.

4. Módulo de servodrive

1) .El control del mecanismo de dirección es generar PWM, el principio específico es Baidu. La siguiente figura produce un tiempo de referencia de 0.4us, y luego se genera un ciclo de servocontrol de 20ms, pulse_cnt, en esta referencia. Inserte la descripción de la imagen aquí
2) Convertir las coordenadas horizontales y verticales obtenidas por el módulo de procesamiento de imágenes para obtener el valor de control del ángulo de rotación del mecanismo de dirección. La coordenada y la coordenada central se restan para obtener el desplazamiento del objeto actual. Dividir por un coeficiente aquí es para ajustar la relación PID. El uso directo de / es una pequeña violación, es mejor usar la IP del divisor para manejarlo. Finalmente, obtenga los valores x_value y y_value, que son los valores que controlan el ángulo de rotación del mecanismo de dirección, y compárelos con el pulse_cnt obtenido anteriormente para generar PWM.
Inserte la descripción de la imagen aquí

5. Suplemento

Originalmente planeé compartirlo paso a paso. Ahora el horario de trabajo es demasiado ajustado y no hay mucho tiempo para organizar. Para cumplir con los requisitos de mis amigos, compartiré el proyecto original directamente. Hay algunos problemas con el código escrito antes, y espero que puedas perdonarme. La bola de seguimiento original funciona entre bastidores Re: se puede obtener una pista de bolas pequeñas .
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_40377195/article/details/109171151
Recomendado
Clasificación