Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Reconocimiento de gestos con acelerómetro y ESP

Componentes y suministros

Arduino 101
Incluye un acelerómetro incorporado, por lo que no se requieren componentes o circuitos adicionales.
× 1
Arduino UNO
Puede usar un Arduino Uno (u otro Arduino) en lugar del Arduino 101, pero también necesita un acelerómetro.
× 1
Acelerómetro analógico Adafruit:ADXL335
Use esto (o el equivalente de SparkFun) si está usando un Arduino que no sea Arduino 101 ( que tiene un acelerómetro incorporado).
× 1
Desglose del acelerómetro de triple eje SparkFun - ADXL335
Use esto (o el equivalente de Adafruit) si está usando un Arduino que no sea el Arduino 101 ( que tiene un acelerómetro incorporado).
× 1

Acerca de este proyecto

Descripción general

Este tutorial le muestra cómo incorporar el reconocimiento de gestos básico en sus proyectos Arduino usando el sistema ESP. Por ejemplo, puede reconocer diferentes gestos de tenis como un golpe de derecha, un revés y un servicio; elementos de una rutina de baile; gestos de levantamiento de pesas; etc. Los gestos se detectan mediante un acelerómetro y se envían a la aplicación ESP que se ejecuta en su computadora. ESP utiliza un algoritmo de aprendizaje automático simple para hacer coincidir los datos del acelerómetro en vivo con ejemplos grabados de diferentes gestos, enviando un mensaje al Arduino cuando reconoce un gesto similar a uno de los ejemplos. El sistema solo reconoce ocurrencias individuales de gestos discretos; no proporciona información sobre cómo se realiza el gesto. Aún así, se puede utilizar para una amplia gama de aplicaciones interactivas.

Descarga la aplicación de reconocimiento de gestos ESP:

  • Mac:ESP-Gestures-Mac-20161028.zip
  • Windows:ESP-Gestures-Win-20161028.zip. Es posible que también necesite Visual C ++ Redistributable (Actualización 3) de Microsoft.
  • Ubuntu:ESP-Gestures-Ubuntu-20161028.tar.gz
  • Ejemplos de gestos:ForehandBackhandServe.grt

Paso 1. Conecte su acelerómetro.

Si está utilizando el Arduino 101, que tiene un acelerómetro incorporado, puede omitir este paso. De lo contrario, deberá conectar su acelerómetro. Para hacer esto, primero suelde los pines macho del cabezal en la placa de conexión, si aún no lo ha hecho. Luego, conectará el acelerómetro al Arduino.

Como atajo, puede conectar la salida del acelerómetro directamente a los pines de entrada analógica del Arduino Uno (u otro Arduino con el mismo factor de forma). Luego, en el código Arduino, puede configurar los pines apropiados para proporcionar energía y tierra al acelerómetro.

Alternativamente, puede conectar su acelerómetro a una placa y conectarlo al Arduino, conectando sus pines de alimentación y tierra a los pines 5V y GND del Arduino, y sus pines de los ejes X, Y y Z a tres entradas analógicas de la placa Arduino.

Paso 2. Sube el código Arduino.

Puede usar uno de los programas de Arduino a continuación para leer datos del acelerómetro y enviarlos por serial (USB) a la computadora. Primero, verifique que los pines especificados en el programa Arduino coincidan con la forma en que conectó su acelerómetro (por ejemplo, que xpin corresponde al pin de entrada analógica que está conectado al pin del eje X de su acelerómetro). (Esto no se aplica si está utilizando el Arduino 101, donde el acelerómetro está conectado internamente). Luego seleccione la placa y el puerto serie apropiados en el menú de herramientas de Arduino y cargue el boceto de Arduino.

Paso 3. Verifique los datos en el monitor en serie.

Abra el monitor serial Arduino, configúrelo en 9600 baudios y verifique que está obteniendo datos del acelerómetro de su Arduino. Debería ver tres columnas de números que cambian cuando mueve el acelerómetro. Utilice el trazador de serie Arduino para ver un gráfico de estos números.

Asegúrese de cerrar el monitor serial y el trazador serial antes de continuar, ya que de lo contrario bloquearán la aplicación ESP para que no hable con su Arduino.

Paso 4. Ejecute la aplicación de reconocimiento de gestos ESP y seleccione su puerto serie.

Descarga la aplicación de reconocimiento de gestos ESP:

  • Mac:ESP-Gestures-Mac-20160812.zip
  • Windows:ESP-Gestures-Win-20160812.zip

Seleccione el puerto serie correspondiente a su placa Arduino en el menú de configuración. (Haga clic en el encabezado "Seleccionar un puerto serie" para abrir la lista de puertos).

Debería ver la transmisión de datos en vivo en el gráfico "Datos sin procesar". Las tres líneas del gráfico corresponden a los tres ejes de su acelerómetro:la línea roja corresponde al eje X, la verde al eje Y y la azul al eje Z.

Paso 5. Registre las muestras de calibración.

Para permitir que la aplicación ESP comprenda qué rango de valores esperar de su acelerómetro y Arduino, deberá registrar una muestra de calibración. Coloque su acelerómetro sobre una superficie plana, con el eje Z hacia arriba. Mantenga presionada la tecla "1" durante aproximadamente un segundo para registrar la muestra de calibración "vertical". Debería ver aparecer un gráfico de la muestra. Luego, voltee el acelerómetro y, manteniéndolo plano y quieto, mantenga presionada la tecla "2" para registrar la muestra de calibración invertida. El sistema ESP utiliza estos datos para determinar qué valores numéricos corresponden a 0 g de aceleración (en los ejes X e Y) y cuáles corresponden a 1 g de aceleración (en el eje Z).

Paso 6. Grabe gestos de ejemplo.

Vaya a la pestaña "Entrenamiento" de la aplicación ESP haciendo clic en ella o escribiendo una "T" mayúscula. Esta pestaña le permite grabar o cargar ejemplos de los gestos que desea que el sistema ESP reconozca. Puede grabar ejemplos de hasta nueve gestos diferentes.

Para grabar un ejemplo de gesto, realice el gesto mientras presiona la tecla correspondiente a la etiqueta que desea asociar con el gesto. Por ejemplo, para grabar un gesto con la etiqueta 1, mantenga presionada la tecla "1" en su teclado mientras realiza el gesto. (Alternativamente, puede cargar los gestos de tenis de ejemplo en ForehandBackhandServe.grt.)

Asegúrate de registrar los gestos de ejemplo con el acelerómetro en la misma configuración que estará después, cuando quieras que el sistema reconozca los gestos. Por ejemplo, puede sostener el acelerómetro en la mano con una orientación particular o adjuntarlo a un objeto que sostendrá con una orientación particular.

Una buena muestra contiene los datos correspondientes a todo el gesto, pero sin muchos datos de referencia adicionales al principio o al final. Es decir, la muestra debe comenzar y terminar con un período corto de líneas relativamente planas, ni demasiado largas ni ausentes del todo. Además, si su gesto termina en un lugar diferente al que comienza, asegúrese de no para registrar el tiempo en el que está devolviendo el acelerómetro a la posición inicial. Por ejemplo, si estuviera grabando un gesto de deslizar el dedo hacia la derecha, querría grabar solo la parte del gesto cuando su mano se mueve de izquierda a derecha, no el momento en que su mano vuelve a su posición inicial.

Cada ejemplo adicional que registre es otra muestra con la que el algoritmo de aprendizaje automático puede comparar cuando reconoce gestos. Eso significa que si desea que el sistema reconozca diferentes variaciones de un gesto (por ejemplo, las diferentes formas en que lo hacen diferentes personas), puede ser útil registrar muestras de cada variación. Por otro lado, si tiene muestras incorrectas, pueden confundir al sistema; más muestras no es necesariamente mejor. En general, hemos tenido buena suerte al registrar entre 5 y 10 muestras para cada gesto, aunque nuevamente, la calidad de las muestras individuales es más importante que su cantidad.

Si no le gusta una muestra (por ejemplo, porque presionó la tecla en el momento equivocado y perdió los datos correspondientes a parte del gesto), puede eliminarla haciendo clic en el cuadro junto a la palabra "eliminar" debajo de la muestra. . Puede recortar una muestra haciendo clic y arrastrando el gráfico de la muestra para seleccionar la parte de la muestra que desea conservar, luego haciendo clic en el cuadro etiquetado "recortar". Puede navegar entre las diferentes muestras de una clase haciendo clic en los iconos de flecha debajo del gráfico de la muestra. Si grabó una muestra en la clase incorrecta, puede moverla haciendo clic en el botón "volver a etiquetar" y luego presionando la tecla correspondiente a la etiqueta a la que desea asignar la muestra. Para nombrar un gesto, haga clic en el botón "renombrar", escriba el nombre y presione Intro.

Paso 7. Entrene al sistema para que reconozca los gestos.

Una vez que haya grabado algunos gestos de ejemplo, puede entrenar el sistema ESP para que reconozca esos gestos de sus ejemplos. Presione la tecla "t" en su teclado para entrenar el sistema. Debería ver el mensaje "entrenamiento exitoso" en la parte inferior de la ventana. Ahora, cuando haga un gesto similar a uno de sus ejemplos grabados, debería ver aparecer su nombre en el gráfico de los datos del sensor en vivo.

Es posible que el sistema no funcione bien la primera vez que lo entrene. Es útil entrenar y probar el sistema con frecuencia mientras registra sus gestos de ejemplo, para que pueda tener una idea de cómo se comporta.

En particular, si el sistema no reconoce los gestos que usted cree que debería, es posible que desee registrar ejemplos adicionales de ese gesto. Si el sistema reconoce gestos cuando no debería, es posible que desee eliminar o recortar ejemplos que se vean diferentes a los demás o que contengan períodos prolongados de líneas relativamente planas. Asegúrese de presionar "t" después de modificar sus ejemplos para volver a entrenar el sistema.

Paso 8. Ajuste la configuración del sistema según sea necesario.

Si bien modificar sus ejemplos de entrenamiento es probablemente el medio más importante para ayudar a que el sistema funcione correctamente, ESP también le permite configurar algunos parámetros subyacentes del sistema. Para hacer esto, haga clic en la etiqueta "haga clic para abrir la configuración". Debería ver dos parámetros:variabilidad y tiempo de espera. Tenga en cuenta que después de cambiar estos parámetros, debe volver a entrenar el sistema presionando "t".

El parámetro de variabilidad controla qué tan diferente puede ser un gesto de uno de los ejemplos registrados y aún ser reconocido. Cuanto mayor sea el número, más diferente puede ser. Si el sistema parece requerir que sus gestos sean demasiado similares a los ejemplos grabados, puede intentar aumentar este número. (También puede intentar grabar ejemplos adicionales). Si el sistema reconoce gestos falsos, puede intentar reducir este número, aunque también puede intentar eliminar cualquier ejemplo de entrenamiento que parezca incorrecto.

El parámetro de tiempo de espera controla cuánto tiempo después de reconocer un gesto espera el sistema antes de reconocer uno nuevo. Se mide en milisegundos (milésimas de segundo). Si parece que al sistema le faltan gestos hechos en sucesión cercana a otro gesto, intente reducir este número. Sin embargo, tenga cuidado, porque si hace que este número sea demasiado bajo, el sistema puede reconocer un solo gesto varias veces. Si el sistema parece reconocer múltiples gestos cuando solo hace un gesto (por ejemplo, si ve un golpe de derecha seguido de un revés cuando solo hizo un golpe de derecha), puede intentar aumentar este parámetro.

Paso 9. Incorpore el reconocimiento de gestos en su proyecto Arduino.

Cuando el sistema ESP hace una predicción, envía un mensaje a su Arduino con el número del gesto que reconoció (como texto ASCII seguido de una nueva línea, por ejemplo, "1 \ n"). Al leer estas predicciones en el puerto serie, puede hacer que su Arduino responda al gesto de varias maneras.

Las predicciones también se envían a través de TCP a un servidor que se ejecuta en el puerto localhost 5204 (en el mismo formato que para Arduino). Por ejemplo, esto podría ser un juego escrito en Processing u otro software. Asegúrese de que el servidor TCP se esté ejecutando antes de iniciar la aplicación ESP.

Cómo funciona

Esta aplicación ESP en particular utiliza un algoritmo llamado Dynamic Time Warping (o DTW). Este algoritmo deforma la señal del sensor en vivo eliminando o duplicando lecturas individuales, generando una serie de variaciones y verificando qué tan similares son a las muestras grabadas. El algoritmo busca la muestra de entrenamiento más cercana a los datos del sensor en vivo. Si la diferencia entre los dos es menor que un cierto umbral, lo considera una coincidencia y genera una predicción correspondiente a la clase de entrenamiento que contiene esa muestra. Puede ajustar la distancia requerida utilizando el parámetro "variabilidad" en el menú desplegable de configuración.

El reconocimiento de gestos es solo un dominio al que se puede aplicar el sistema ESP. ESP está construido sobre el Gesture Recognition Toolkit (GRT), que, a pesar de su nombre, en realidad contiene una amplia gama de algoritmos de aprendizaje automático que se pueden aplicar a una amplia gama de aplicaciones de detección en tiempo real. ESP toma código para una aplicación en particular y lo traduce a una interfaz de usuario personalizada para trabajar con esa canalización de aprendizaje automático. Estos programas específicos de la aplicación incluyen una canalización de aprendizaje automático GRT, la especificación de las entradas del sensor, la definición del proceso de calibración y las especificaciones de los parámetros ajustables. Hemos creado ejemplos de ESP para detección de color, detección de poses mediante acelerómetros y reconocimiento de audio simple. Consulte ESP GitHub para obtener más información.

Código

Código Arduino ADXL335
Este código se lee en un ADXL335 conectado a un Arduino:el pin del eje X del acelerómetro debe estar conectado al pin A5 del Arduino, el eje Y a A4 y el eje Z a A3. Las lecturas se envían a través del puerto serie (USB) a 9600 baudios, como datos ASCII separados por tabulaciones y terminados en nueva línea.
Código del acelerómetro Arduino 101
Lee los datos del acelerómetro del acelerómetro integrado en un Arduino 101. Las lecturas se envían a través del puerto serie (USB) en 9600 como datos ASCII separados por tabulaciones y terminados en una nueva línea.

Proceso de manufactura

  1. Sistema de asistencia que usa Arduino y RFID con Python
  2. Control remoto universal usando Arduino, 1Sheeld y Android
  3. Voltímetro de bricolaje con Arduino y un teléfono inteligente
  4. IOT - Smart Jar usando ESP8266, Arduino y sensor ultrasónico
  5. Medición de frecuencia y ciclo de trabajo con Arduino
  6. Controla Arduino Rover usando Firmata y el controlador Xbox One
  7. Sonda usando arduino y visualización en procesamiento IDE
  8. Control del brillo del LED usando Bolt y Arduino
  9. Brazo robótico simple e inteligente con Arduino
  10. Reconocimiento y síntesis de voz con Arduino
  11. Cómo hacer una brújula usando Arduino y Processing IDE