Tabla de contenido:

HackerBox 0024: Vision Quest: 11 pasos
HackerBox 0024: Vision Quest: 11 pasos

Video: HackerBox 0024: Vision Quest: 11 pasos

Video: HackerBox 0024: Vision Quest: 11 pasos
Video: HackerBox #0024: Vision Quest 2024, Noviembre
Anonim
HackerBox 0024: Vision Quest
HackerBox 0024: Vision Quest

Vision Quest: este mes, los hackers de HackerBox están experimentando con Computer Vision y Servo Motion Tracking. Este Instructable contiene información para trabajar con HackerBox # 0024, que puede recoger aquí hasta agotar existencias. Además, si desea recibir un HackerBox como este en su buzón cada mes, suscríbase en HackerBoxes.com y únase a la revolución.

Temas y objetivos de aprendizaje para HackerBox 0024:

  • Experimentar con visión artificial
  • Configuración de OpenCV (Computer Vision)
  • Programando el Arduino Nano desde el Arduino IDE
  • Control de servomotores con Arduino Nano
  • Montaje de un conjunto mecánico de giro e inclinación
  • Control del movimiento de giro e inclinación con un microcontrolador
  • Realización de seguimiento facial con OpenCV

HackerBoxes es el servicio de caja de suscripción mensual para electrónica de bricolaje y tecnología informática. Somos aficionados, creadores y experimentadores. Somos los soñadores de sueños. ¡HACKE EL PLANETA!

Paso 1: HackerBox 0024: Contenido de la caja

HackerBox 0024: Contenido de la caja
HackerBox 0024: Contenido de la caja
  • Tarjeta de referencia coleccionable HackerBoxes # 0024
  • Conjunto de inclinación y giro con tres soportes
  • Dos servos MG996R con accesorios
  • Dos acopladores servo circulares de aluminio
  • Arduino Nano V3 - 5 V, 16 MHz, MicroUSB
  • Ensamblaje de cámara digital con cable USB
  • Tres lentes con montura de clip universal
  • Luz de pluma de inspección médica
  • Jerséis Dupont Hombre / Mujer
  • Cable microUSB
  • Calcomanía exclusiva de OpenCV
  • Calcomanía exclusiva del Día de Muertos

Algunas otras cosas que serán útiles:

  • Pequeño trozo de tabla de madera para la base de la cámara
  • Soldador, soldadura y herramientas de soldadura básicas
  • Computadora para ejecutar herramientas de software

Lo más importante es que necesitará sentido de la aventura, espíritu de bricolaje y curiosidad por los piratas informáticos. La electrónica incondicional de bricolaje no es una actividad trivial, y no la estamos diluyendo para usted. El objetivo es el progreso, no la perfección. Cuando persiste y disfruta de la aventura, se puede obtener una gran satisfacción al aprender nuevas tecnologías y, con suerte, hacer que algunos proyectos funcionen. Sugerimos dar cada paso lentamente, prestando atención a los detalles y sin dudar nunca en pedir ayuda.

PREGUNTAS FRECUENTES: Nos gusta pedirles a todos los miembros de HackerBox un gran favor. Tómese unos minutos para revisar las preguntas frecuentes en el sitio web de HackerBoxes antes de ponerse en contacto con el soporte. Si bien obviamente queremos ayudar a todos los miembros tanto como sea necesario, la mayoría de nuestros correos electrónicos de soporte involucran preguntas simples que se tratan con mucha claridad en las Preguntas frecuentes. ¡Gracias por entender!

Paso 2: Visión por computadora

Visión por computador
Visión por computador

La visión por computadora es un campo interdisciplinario que se ocupa de cómo las computadoras obtienen una comprensión de alto nivel a partir de imágenes o videos digitales. Desde la perspectiva de la ingeniería, la visión por computadora busca automatizar tareas que el sistema visual humano puede realizar. Como disciplina científica, la visión por computadora se ocupa de la teoría detrás de los sistemas artificiales que extraen información de las imágenes. Los datos de imagen pueden tomar muchas formas, como secuencias de video, vistas desde múltiples cámaras o datos multidimensionales de un escáner médico. Como disciplina tecnológica, la visión por computadora busca aplicar sus teorías y modelos para la construcción de sistemas de visión por computadora. Los subdominios de la visión por computadora incluyen reconstrucción de escenas, detección de eventos, seguimiento de video, reconocimiento de objetos, estimación de pose 3D, aprendizaje, indexación, estimación de movimiento y restauración de imágenes.

Es interesante notar que la visión por computadora puede considerarse lo contrario de los gráficos por computadora.

Paso 3: Procesamiento y OpenCV

Procesamiento y OpenCV
Procesamiento y OpenCV

Processing es un cuaderno de bocetos de software flexible y un lenguaje para aprender a codificar dentro del contexto de las artes visuales. El procesamiento ha promovido la alfabetización en software dentro de las artes visuales y la alfabetización visual dentro de la tecnología. Hay decenas de miles de estudiantes, artistas, diseñadores, investigadores y aficionados que utilizan Processing para el aprendizaje y la creación de prototipos.

OpenCV (Open Source Computer Vision Library) es una biblioteca de software de visión artificial y aprendizaje automático de código abierto. OpenCV se creó para proporcionar una infraestructura común para aplicaciones de visión por computadora y para acelerar el uso de la percepción de la máquina en los productos comerciales. La biblioteca OpenCV tiene más de 2500 algoritmos optimizados, que incluyen un conjunto completo de algoritmos de aprendizaje automático y visión por computadora clásicos y de última generación. Estos algoritmos se pueden utilizar para detectar y reconocer rostros, identificar objetos, clasificar acciones humanas en videos, rastrear movimientos de cámara, rastrear objetos en movimiento, etc.

Instale OpenCV dentro de Procesamiento desde el menú Archivo> Ejemplos seleccionando "Agregar ejemplos" y luego en la pestaña Bibliotecas instalando las bibliotecas de Video y OpenCV. Abra el ejemplo de LiveCamTest para el seguimiento facial básico. Vea algunos otros ejemplos de OpenCV para procesamiento aquí.

Más recursos:

Getting Started with Computer Vision es un proyecto de libro que proporciona un punto de entrada fácil para la experimentación creativa con la visión por computadora. Introduce el código y los conceptos necesarios para construir proyectos de visión por computadora.

Programming Computer Vision with Python es un libro de O'Reilly sobre PCV, un módulo de código abierto de Python para la visión por computadora.

Aprendiendo OpenCV

Visión por computadora: algoritmos y aplicaciones

Dominar OpenCV

Stanford Course CS231n Redes neuronales convolucionales para el reconocimiento visual (16 videos)

Charla TED de Chris Urmson Cómo ve la carretera un automóvil sin conductor

Paso 4: Plataforma de microcontrolador Arduino Nano

Plataforma de microcontrolador Arduino Nano
Plataforma de microcontrolador Arduino Nano

Podemos usar cualquier plataforma de microcontrolador común para controlar los servos en nuestro soporte de cámara de giro e inclinación. Arduino Nano es una placa Arduino miniaturizada, compatible con protoboard y de montaje en superficie con USB integrado. Es increíblemente completo y fácil de piratear.

Características:

  • Microcontrolador: Atmel ATmega328P
  • Voltaje: 5 V
  • Pines de E / S digitales: 14 (6 PWM)
  • Pines de entrada analógica: 8
  • Corriente CC por pin de E / S: 40 mA
  • Memoria Flash: 32 KB (2 KB para el gestor de arranque)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Velocidad de reloj: 16 MHz
  • Dimensiones: 17 mm x 43 mm

Esta variante particular del Arduino Nano es el diseño Robotdyn negro. La interfaz es mediante un puerto MicroUSB integrado que es compatible con los mismos cables MicroUSB que se utilizan con muchos teléfonos móviles y tabletas.

Los Arduino Nanos cuentan con un chip de puente USB / serie integrado. En esta variante en particular, el chip puente es el CH340G. Tenga en cuenta que hay varios otros tipos de chips de puente USB / serie que se utilizan en los diversos tipos de placas Arduino. Estos chips permiten que el puerto USB de su computadora se comunique con la interfaz serial en el chip del procesador de Arduino.

El sistema operativo de una computadora requiere un controlador de dispositivo para comunicarse con el chip USB / serial. El controlador permite que el IDE se comunique con la placa Arduino. El controlador de dispositivo específico que se necesita depende tanto de la versión del sistema operativo como del tipo de chip USB / serie. Para los chips USB / serie CH340, hay controladores disponibles para muchos sistemas operativos (UNIX, Mac OS X o Windows). El fabricante de la CH340 suministra esos controladores aquí.

Cuando conecte por primera vez el Arduino Nano a un puerto USB de su computadora, la luz verde de encendido debería encenderse y poco después el LED azul debería comenzar a parpadear lentamente. Esto sucede porque el Nano está precargado con el programa BLINK, que se ejecuta en el nuevo Arduino Nano.

Paso 5: Entorno de desarrollo integrado de Arduino (IDE)

Entorno de desarrollo integrado de Arduino (IDE)
Entorno de desarrollo integrado de Arduino (IDE)

Si aún no tiene el IDE de Arduino instalado, puede descargarlo desde Arduino.cc

Si desea información introductoria adicional para trabajar en el ecosistema Arduino, le sugerimos que consulte las instrucciones del Taller de inicio de HackerBoxes.

Conecte el Nano al cable MicroUSB y el otro extremo del cable a un puerto USB en la computadora, inicie el software Arduino IDE, seleccione el puerto USB apropiado en el IDE en herramientas> puerto (probablemente un nombre con "wchusb" en él). También seleccione "Arduino Nano" en el IDE en herramientas> tablero.

Finalmente, cargue un fragmento de código de ejemplo:

Archivo-> Ejemplos-> Conceptos básicos-> Parpadeo

Este es en realidad el código que se precargó en el Nano y debería estar ejecutándose ahora mismo para hacer parpadear lentamente el LED azul. En consecuencia, si cargamos este código de ejemplo, nada cambiará. En cambio, modifiquemos un poco el código.

Mirando de cerca, puede ver que el programa enciende el LED, espera 1000 milisegundos (un segundo), apaga el LED, espera otro segundo y luego lo hace todo de nuevo, para siempre.

Modifique el código cambiando las dos declaraciones "delay (1000)" por "delay (100)". Esta modificación hará que el LED parpadee diez veces más rápido, ¿verdad?

Carguemos el código modificado en el Nano haciendo clic en el botón SUBIR (el icono de flecha) justo encima de su código modificado. Mire a continuación el código para ver la información de estado: "compilando" y luego "cargando". Finalmente, el IDE debería indicar "Carga completa" y su LED debería parpadear más rápido.

Si es así, ¡enhorabuena! Acaba de piratear su primer código incrustado.

Una vez que su versión de parpadeo rápido esté cargada y ejecutándose, ¿por qué no ver si puede cambiar el código nuevamente para que el LED parpadee rápidamente dos veces y luego espere un par de segundos antes de repetir? ¡Darle una oportunidad! ¿Qué tal algunos otros patrones? Una vez que logre visualizar un resultado deseado, codificarlo y observar que funciona según lo planeado, habrá dado un paso enorme para convertirse en un hacker de hardware competente.

Paso 6: servomotores

Servomotores
Servomotores

Los servomotores generalmente se controlan mediante una serie de pulsos eléctricos repetidos donde el ancho de los pulsos indica la posición del servo. La señal de control modulada por ancho de pulso (PWM) a menudo es generada por un microcontrolador común como un Arduino.

Los pequeños servos de hobby, como el MG996R, se conectan a través de una conexión estándar de tres cables: dos cables para una fuente de alimentación de CC y un cable para llevar los pulsos de control. Los servos MG996R tienen un rango de voltaje de operación de 4.8-7.2 VDC.

Paso 7: Montaje del mecanismo de giro e inclinación

Montaje del mecanismo de giro e inclinación
Montaje del mecanismo de giro e inclinación
  1. Saque ambos servos MG996R de sus bolsas y deje a un lado los accesorios incluidos por ahora.
  2. Conecte un servo acoplador circular de aluminio a cada servo. Tenga en cuenta que los acopladores vienen en bolsas separadas de los servos. El acoplador tiene un ajuste muy ajustado. Comience presionando el acoplador en el extremo de la salida del servo y luego enrosque un tornillo en el orificio central. Apriete la rosca para atraer el acoplador a la salida del servo.
  3. Tenga en cuenta que hay tres soportes para el conjunto de giro e inclinación: dos soportes de caja y un soporte en U.
  4. Monte uno de los soportes de caja en el círculo de aluminio para uno de los servos. A este servo lo llamaremos pan servo. Oriente el soporte de la caja con su pared central contra el círculo de aluminio de manera que las otras dos paredes del soporte de la caja estén orientadas hacia afuera del servo de bandeja. Utilice los orificios centrales en la pared central del soporte de la caja. Esta disposición debe permitir que el servo de bandeja gire el soporte de caja adjunto una vez que se active.
  5. Coloque el otro servo (servo de inclinación) en el soporte de caja que está unido al círculo de aluminio del servo panorámico. Utilice al menos dos tuercas y tornillos para fijar el servo de inclinación, uno a cada lado.
  6. Sosteniendo el soporte en U, inserte el "cojinete" de latón desde el interior de la U a través de uno de los grandes orificios de montaje del pivote.
  7. Coloque el soporte en U con el rodamiento en el servo de inclinación que está dentro del soporte de la caja de manera que el otro orificio de montaje de pivote grande (el que no tiene el rodamiento) se alinee con el círculo de aluminio en el servo de inclinación.
  8. Utilice tornillos para fijar el soporte en U en el círculo de aluminio en un lado del soporte en U.
  9. En el otro lado del soporte en U, apriete un solo tornillo a través del cojinete y dentro del pequeño orificio en el soporte de la caja dentro. Esto debería permitir que el soporte en U gire alrededor del soporte de la caja más tarde cuando se active el servo de inclinación.

Paso 8: Montaje del conjunto de giro e inclinación

Montaje del conjunto de giro e inclinación
Montaje del conjunto de giro e inclinación
Montaje del conjunto de giro e inclinación
Montaje del conjunto de giro e inclinación

El soporte de caja restante se puede atornillar a un pequeño trozo de tabla de madera para que sirva como base de la cámara, como se muestra en la imagen. Finalmente, el servo de pan se monta dentro de ese soporte de caja restante usando al menos dos tuercas y pernos para fijar el servo al soporte, uno a cada lado.

Paso 9: Cablee y pruebe el conjunto de giro e inclinación

Cablee y pruebe el conjunto de giro e inclinación
Cablee y pruebe el conjunto de giro e inclinación

Para cablear los servos de acuerdo con el esquema, lo más rápido es simplemente cortar los conectores hembra originales de los servos y luego usar algunos extremos de puente hembra DuPont para conectar las líneas de señal y tierra a los pines Nano.

El Nano no tiene suficiente corriente en el suministro de 5 V para alimentar los servos desde USB, por lo que se recomienda un suministro adicional. Esto puede ser cualquier cosa en el rango de 4,8 a 7,2 voltios. Por ejemplo, cuatro pilas AA (en serie) funcionarán bien. Un suministro de banco o una verruga de pared también es una buena opción.

El código de Arduino de ejemplo simple adjunto aquí como PanTiltTest.ino se puede utilizar para probar el control de los dos servos desde el monitor en serie en el IDE de Arduino. Configure la velocidad en baudios del monitor para que coincida con los 9600bps establecidos en el código de ejemplo. La introducción de valores de ángulo entre 0 y 180 grados posicionará los servos en consecuencia.

Por último, el módulo de cámara USB (u otro sensor) se puede montar en el soporte en U del conjunto de giro e inclinación para su uso en aplicaciones de seguimiento.

Paso 10: Seguimiento facial con OpenCV

Image
Image
Hackear el planeta
Hackear el planeta

Se puede implementar un sistema de seguimiento facial por visión artificial combinando subsistemas como se muestra en el diagrama de bloques. El boceto de SerialServoControl para Arduino se puede encontrar en el siguiente tutorial de Sparkfun junto con una demostración relacionada usando OpenCV, Processing, un Arduino, una cámara USB y un Pan / Tilt Assembly para rastrear un rostro humano. La demostración utiliza dos servos para reposicionar la cámara a fin de mantener la cara centrada en el cuadro de video incluso cuando el usuario se mueve por la habitación. Por ejemplo, código en C #, consulte el repositorio de GitHub para el video de CamBot.

Paso 11: Hackear el planeta

Si ha disfrutado de este Instrucable y le gustaría recibir una caja de proyectos de electrónica y tecnología informática como esta directamente en su buzón de correo cada mes, únase a nosotros SUSCRIBIENDO AQUÍ.

Comuníquese y comparta su éxito en los comentarios a continuación o en la página de Facebook de HackerBoxes. Ciertamente, háganos saber si tiene alguna pregunta o necesita ayuda con algo. Gracias por ser parte de HackerBoxes. Por favor, siga enviando sus sugerencias y comentarios. Los HackerBoxes son SUS cajas. ¡Hagamos algo grandioso!

Recomendado: