Tabla de contenido:

Robot Nao que imita movimientos con Kinect: 7 pasos
Robot Nao que imita movimientos con Kinect: 7 pasos

Video: Robot Nao que imita movimientos con Kinect: 7 pasos

Video: Robot Nao que imita movimientos con Kinect: 7 pasos
Video: El Robot mas INTELIGENTE del MUNDO (Ameca) 2024, Junio
Anonim
Robot Nao que imita movimientos con Kinect
Robot Nao que imita movimientos con Kinect

En este instructivo, te explicaré cómo permitimos que un robot Nao imite nuestros movimientos usando un sensor kinect. El objetivo real del proyecto es un propósito educativo: un maestro tiene la capacidad de grabar ciertos conjuntos de movimientos (por ejemplo, un baile) y puede usar estas grabaciones para permitir que los niños en el aula imiten al robot. Al pasar por todo este instructable paso a paso, debería poder recrear completamente este proyecto.

Este es un proyecto relacionado con la escuela (NMCT @ Howest, Kortrijk).

Paso 1: Conocimientos básicos

Para recrear este proyecto debes poseer algunos conocimientos básicos:

- Conocimientos básicos de Python

- Conocimientos básicos de C # (WPF)

- Conocimientos básicos de trigonometría.

- Conocimiento sobre cómo configurar MQTT en una Raspberry Pi

Paso 2: Adquirir los materiales necesarios

Materiales necesarios para este proyecto:

- Frambuesa Pi

- Sensor Kinect v1.8 (Xbox 360)

- Robot nao o robot virutal (Choregraph)

Paso 3: cómo funciona

Image
Image
Cómo funciona
Cómo funciona

Un sensor kinect está conectado a una computadora que ejecuta la aplicación WPF. La aplicación WPF envía datos a la aplicación Python (robot) mediante MQTT. Los archivos locales se guardan si el usuario así lo desea.

Explicación detallada:

Antes de comenzar a grabar, el usuario debe ingresar la dirección IP del corredor MQTT. Además de eso, también necesitamos el tema sobre el que queremos publicar los datos. Después de presionar inicio, la aplicación verificará si se pudo establecer una conexión con el corredor y nos dará su opinión. No es posible verificar si existe un tema, por lo que usted es totalmente responsable de este. Cuando ambas entradas están bien, la aplicación comenzará a enviar datos (coordenadas x, y & z de cada articulación) desde el esqueleto que se está rastreando hasta el tema en el corredor MQTT.

Debido a que el robot está conectado con el mismo agente MQTT y suscrito al mismo tema (esto también debe ingresarse en la aplicación Python), la aplicación Python ahora recibirá los datos de la aplicación WPF. Usando trigonometría y algoritmos escritos por nosotros mismos, convertimos las coordenadas a ángulos y radianes, que usamos para rotar los motores dentro del robot en tiempo real.

Cuando el usuario termina de grabar, presiona el botón de parada. Ahora el usuario recibe una ventana emergente que le pregunta si quiere guardar la grabación. Cuando el usuario pulsa cancelar, todo se restablece (se pierden los datos) y se puede iniciar una nueva grabación. Si el usuario desea guardar la grabación, debe ingresar un título y presionar 'guardar'. Al presionar "guardar", todos los datos adquiridos se escriben en un archivo local utilizando la entrada del título como nombre de archivo. El archivo también se agrega a la vista de lista en el lado derecho de la pantalla. De esta manera, después de hacer doble clic en la nueva entrada en la vista de lista, el archivo se lee y se envía al corredor de MQTT. En consecuencia, el robot reproducirá la grabación.

Paso 4: Configuración del agente MQTT

Configuración del agente MQTT
Configuración del agente MQTT

Para la comunicación entre el kinect (proyecto WPF) y el robot (proyecto Python) usamos MQTT. MQTT consta de un intermediario (una computadora Linux en la que se ejecuta el software mqtt (por ejemplo, Mosquitto)) y un tema al que los clientes pueden suscribirse (reciben un mensaje del tema) y publicar (publican un mensaje sobre el tema).

Para configurar el corredor MQTT, simplemente descargue esta imagen de jessie completa. Esta es una instalación limpia para su Raspberry Pi con un agente MQTT. El tema es "/ Sandro".

Paso 5: Instalación de Kinect SDK V1.8

Para que kinect funcione en su computadora, debe instalar Microsoft Kinect SDK.

Puedes descargarlo aquí:

www.microsoft.com/en-us/download/details.a…

Paso 6: Instalar Python V2.7

El robot funciona con el marco NaoQi, este marco solo está disponible para python 2.7 (NO 3.x), así que verifique qué versión de python tiene instalada.

Puede descargar Python 2.7 aquí:

www.python.org/downloads/release/python-27…

Paso 7: codificación

Codificación
Codificación
Codificación
Codificación
Codificación
Codificación

Github:

Notas:

- Codificación con kinect: primero busca el kinect conectado. Después de guardar esto dentro de una propiedad, habilitamos color y skeletonstream en el kinect. Colorstream es el video en vivo, mientras que skeletonstream significa que se mostrará un esqueleto de la persona frente a la cámara. Colorstream no es realmente necesario para que este proyecto funcione, simplemente lo habilitamos porque el mapeo de bits del skeletonstream al colorstream se ve elegante.

- En realidad, es realmente el skeletonstream el que hace el trabajo. Habilitar skeletonstream significa que se está rastreando el esqueleto de la persona. De este esqueleto recibes todo tipo de información, por ejemplo. orientaciones óseas, información articular,… La clave de nuestro proyecto fue la información articular. Usando las coordenadas x-y & z de cada una de las articulaciones del esqueleto rastreado, sabíamos que podíamos hacer que el robot se moviera. Entonces, cada.8 segundos (usando un temporizador) publicamos las coordenadas x, y & z de cada una de las articulaciones al corredor mqtt.

- Dado que el proyecto python tiene una suscripción en el corredor mqtt, ahora podemos acceder a los datos dentro de este proyecto. Dentro de cada articulación del robot hay dos motores. Estos motores no pueden dirigirse simplemente usando las coordenadas x, y & z directamente. Entonces, usando trigonometría y algo de sentido común, convertimos las coordenadas x, y y z de las articulaciones en ángulos que no se pueden asimilar a los robots.

Básicamente, cada 0,8 segundos, el proyecto WPF publica las coordenadas x, y y z de cada una de las articulaciones. En consecuencia, dentro del proyecto Python estas coordenadas se convierten en ángulos, que luego se envían a los motores correspondientes del robot.

Recomendado: