Tabla de contenido:

Robot de búsqueda y eliminación remota controlado por movimiento Leap: 5 pasos
Robot de búsqueda y eliminación remota controlado por movimiento Leap: 5 pasos

Video: Robot de búsqueda y eliminación remota controlado por movimiento Leap: 5 pasos

Video: Robot de búsqueda y eliminación remota controlado por movimiento Leap: 5 pasos
Video: La Educación Prohibida - Película Completa HD Oficial 2024, Diciembre
Anonim
Image
Image

Como parte de mi participación en el Leap Motion # 3D Jam, estaba emocionado de construir este robot de búsqueda / rescate inalámbrico controlado por gestos basado en la Raspberry Pi. Este proyecto demuestra y proporciona un ejemplo minimalista de cómo los gestos de manos 3D inalámbricos se pueden utilizar para controlar e interactuar con cosas físicas.

Dado que este proyecto utiliza el popular marco de trabajo WebIOPi IoT en Raspberry Pi, se puede expandir muy fácilmente para controlar e interconectar típicamente cualquier sensor / hardware / electrónica que se pueda interconectar con Raspberry Pi.

Algunos posibles escenarios que imagino que otros creadores pueden usar este proyecto como su marco base para construir:

1. Robot de eliminación de bombas operado por gestos a distancia (usando tal vez un brazo OWI, etc.)

2. Operación quirúrgica remota por un médico

3. Exhibiciones de arte interactivas controladas por gestos o contenido educativo

4. Infinitas otras posibilidades / integraciones (estoy limitado por mi imaginación:))

Paso 1: descripción general

Comprensión del marco WebIOPi
Comprensión del marco WebIOPi

Este proyecto permite a un usuario controlar de forma interactiva un robot mediante gestos con las manos en 3D a través de un Leap Motion conectado a una PC.

La Raspberry Pi a bordo del Robot también tiene una cámara web USB que transmite video en vivo al usuario que se puede ver en un navegador web. La biblioteca de JavaScript de LeapMotion incrustada en esta página web procesa los gestos con las manos y envía señales de control al Robot, que luego se mueve en consecuencia.

La Raspberry Pi en el robot se configura como un punto de acceso (modo AP) con la ayuda de la llave USB WiFi conectada a ella. Esto permite que nuestras PC / Dispositivos se conecten directamente a la Raspberry Pi y controlen a través de una página web. La Raspberry Pi también se puede configurar para operar en modo cliente, en el que se conecta de forma inalámbrica al AP del enrutador WiFi al que la PC / Dispositivos ya están conectados.

Este proyecto se basa en WebIOPi (https://webiopi.trouch.com/), que es un marco de IoT popular para Raspberry Pi. Al utilizar el kit Weaved IoT incluido (o mediante el reenvío de puertos en el enrutador), este robot se puede controlar de forma remota y / o recibir datos de cualquier parte del mundo.

Los siguientes componentes se utilizaron para construir el proyecto:

  1. Raspberry Pi B (100% compatible con Raspberry Pi B +)
  2. Cámara web USB Logitech (miserable 1,3 megapíxeles)
  3. Circuito integrado de controlador de motor L293D y protector de ruptura
  4. Dongle USB WiFi para Raspberry Pi
  5. Banco de energía USB para Raspberry Pi
  6. Batería externa de 4 V / 1,5 A para accionar los motores del robot

Paso 2: construcción del proyecto

Instalación de WebIOPi, escritura de código personalizado y configuración de la cámara web:

Las instrucciones de instalación de WebIoPi, los conceptos básicos del marco y muchos ejemplos están disponibles en la página del proyecto aquí:

Para que las funciones de LeapMotion integradas en la página web activen acciones GPIO en la Raspberry Pi, hemos utilizado macros, cuyos detalles se encuentran aquí:

También escribí algunas notas iniciales sobre el proceso anterior que se pueden encontrar adjuntas.

Instalación y configuración de la cámara web

Estamos usando MJPG-Streamer para transmitir la transmisión de video desde la Raspberry Pi al navegador a través de la cámara web USB conectada en la Pi. Siga las instrucciones de configuración y compilación que se indican aquí https://blog.miguelgrinberg.com/post/how-to-build-… para que MJPG-Streamer funcione en la Raspberry Pi.

Configuración de Raspberry Pi como AP / Hotspot

Para configurar la Raspberry Pi como Hostpot, siga las instrucciones que se proporcionan aquí: https://elinux.org/RPI-Wireless-Hotspot. Configuré la IP estática de la Raspberry Pi como 192.168.42.1, que es lo que escribiríamos en el navegador una vez que la Pi se inicie en modo AP.

WebIOPi, MJPG-Streamer y el servicio de punto de acceso WiFi se han configurado para que se ejecuten automáticamente en el arranque y esto nos permite abrir directamente un navegador web y conectarnos al robot después de que se inicie. El archivo rc.local disponible en el repositorio se utiliza para ejecutar la cámara web en el arranque.

Paso 3: Instrucciones de construcción / cableado

4 GPIO de Raspberry Pi, a saber, GPIO 9, 11, 23 y 24, están conectados a L293D Motor Driver IC, que impulsa los motores en consecuencia después de recibir solicitudes de macro de la página web servida por el marco Webiopi. El dongle USB WiFi y la cámara web USB Logitech están conectados a los 2 puertos USB disponibles en la Raspberry Pi. Un banco de energía de 5V 4000 Mah suministra la energía principal al Pi. Se utiliza una batería de plomo ácido de 4 V y 1,5 A para impulsar los motores.

Nota: Dado que la corriente de salida máxima del banco de energía que utilicé era miserablemente de 1000 Mah, tuve que usar la batería de plomo ácido externa para impulsar los motores. Si tiene un banco de energía que da> = 2000Mah, puede conducir directamente los motores desde el riel de 5V en el Pi (aunque no lo recomendaría para motores hambrientos de energía)

Las 3 subsecciones clave del proyecto LeapMotion Javascript API, WebIOPi y MJPG-Streamer y su funcionamiento / configuración básicos se describen brevemente a continuación.

Paso 4: Comprensión del marco WebIOPi

La interfaz que se muestra en el navegador está escrita en HTML (nombre de archivo: index.html) y Javascript, mientras que la interfaz que maneja los GPIO está escrita en Python (nombre de archivo: script.py). Las notas detalladas sobre la creación de una aplicación web personalizada basada en el marco WebIOPi se adjuntan como notas en el repositorio de Bitbucket.

Las macros personalizadas definidas en la secuencia de comandos de Python se pueden activar desde el archivo HTML.

Por ejemplo: webiopi (). CallMacro ("go_forward"); Esta es una llamada personalizada a una macro go_forward definida en el script de Python que maneja el proceso de conducir ambos motores en la dirección de avance.

La jerarquía del directorio de dónde se almacenan los archivos en la Pi se muestra en la imagen adjunta.

La carpeta Robot contiene estas subcarpetas:

  • html: contiene index.html
  • python: contiene script.py
  • mjpg-streamer-r63: contiene los archivos de compilación y el ejecutable para ejecutar la cámara web

MJPG-Streamer: la transmisión de video en vivo desde la cámara web USB se ejecuta en el puerto 8080 del Pi de forma predeterminada. Para ver la transmisión manualmente, navegue hasta RASPBERRYPI_IP: 8080 en el navegador después de encender la cámara web.

Código LeapMotion:

Los fragmentos de código de los ejemplos proporcionados en el SDK de LeapMotion se incrustaron en el archivo index.html. El archivo leap.js de LeapMotion debe agregarse a la carpeta html en el directorio del proyecto en la Raspberry Pi.

El parámetro palmPosition enviado por LeapMotion se utiliza para determinar qué macro activar en la Raspberry Pi.

Paso 5: Ejecución del proyecto

Simplemente encienda la Raspberry Pi y espere aproximadamente un minuto. Verá aparecer un nuevo hotpsot RaspberryPi. Conéctese a este punto de acceso y abra esta dirección IP estática en el navegador: 192.168.42.1:8000. 8000 es el puerto predeterminado de WebIOPi.

La Raspberry Pi también se puede configurar para conectarse a la red WiFi local como un cliente en lugar de aparecer como un punto de acceso. Luego, necesitaría determinar la IP dinámica asignada a la Raspberry Pi por el enrutador y luego presionarla en el navegador para jugar con el bot.

Puede dejar un comentario si necesita ayuda o tiene alguna pregunta sobre el proyecto. ¡Feliz salto!

Se han adjuntado los códigos fuente completos. Puede dejar un comentario si necesita ayuda con cualquier parte de la construcción del proyecto. ¡Feliz salto!

Recomendado: