Taula de continguts:

Robot de cerca i eliminació remota controlada per moviment de salt: 5 passos
Robot de cerca i eliminació remota controlada per moviment de salt: 5 passos

Vídeo: Robot de cerca i eliminació remota controlada per moviment de salt: 5 passos

Vídeo: Robot de cerca i eliminació remota controlada per moviment de salt: 5 passos
Vídeo: A Desperate Call | Critical Role | Campaign 3, Episode 36 2024, Desembre
Anonim
Image
Image

Com a part de la meva entrada al Leap Motion # 3D Jam, em feia il·lusió construir aquest robot de cerca / rescat controlat per gest sense fils basat en el Raspberry Pi. Aquest projecte demostra i proporciona un exemple minimalista de com es poden utilitzar gestos de mans 3D sense fils per controlar i interactuar amb coses físiques.

Atès que aquest projecte utilitza el popular framework IoT de WebIOPi al Raspberry Pi, es pot ampliar molt fàcilment per controlar i relacionar normalment qualsevol Sensor / Maquinari / Electrònica que es pugui relacionar amb el Raspberry Pi.

Alguns escenaris possibles que imagino que els altres fabricants poden utilitzar aquest projecte com a marc bàsic per aprofitar-se:

1. Robot d'eliminació de bombes amb gestos remots (amb potser un braç OWI, etc.)

2. Operació quirúrgica remota per un metge

3. Exposicions d'art interactives o contingut educatiu controlat per gestos

4. Infinites altres possibilitats / integracions (la meva imaginació em limita:))

Pas 1: Visió general

Comprensió del marc WebIOPi
Comprensió del marc WebIOPi

Aquest projecte permet a l'usuari controlar de forma interactiva un robot mitjançant gestos 3D de mans mitjançant un moviment de salt connectat a un PC.

El Raspberry Pi incorporat al robot també té una càmera web USB que emet vídeos en directe a l'usuari que es poden veure en un navegador web. La biblioteca JavaScript LeapMotion incrustada en aquesta pàgina web processa gestos manuals i envia senyals de control al robot, que després es mou en conseqüència.

El Raspberry Pi del robot es configura com un punt d'accés (mode AP) amb l'ajut del dongle USB WiFi que hi està connectat. Això permet als nostres equips / dispositius connectar-se directament al Raspberry Pi i controlar-los mitjançant una pàgina web. El Raspberry Pi també es pot configurar per funcionar en mode client, on es connecta sense fils a l’AP del router WiFi al qual ja estan connectats els PC / Dispositius.

Aquest projecte es basa en WebIOPi (https://webiopi.trouch.com/), que és un marc IoT popular per a Raspberry Pi. Mitjançant l’ús del kit IoT teixit inclòs (o mitjançant el reenviament de ports al router), aquest robot es pot controlar remotament i / o rebre dades de qualsevol part del món.

Es van utilitzar els components següents per construir el projecte:

  1. Raspberry Pi B (100% compatible amb Raspberry Pi B +)
  2. Càmera web USB Logitech (petita 1,3 megapíxels)
  3. IC del controlador de motor L293D i escut de sortida
  4. Dongle WiFi USB per a Raspberry Pi
  5. Banc d'alimentació USB per a Raspberry Pi
  6. Bateria externa de 4V / 1,5A per conduir els motors del robot

Pas 2: creació del projecte

Instal·lació de WebIOPi, escriptura de codi personalitzat i configuració de càmera web:

Les instruccions d'instal·lació de WebIoPi, els conceptes bàsics del marc i molts exemples estan disponibles a la pàgina del projecte aquí:

Per tal d’incorporar les funcions de LeapMotion a la pàgina web que desencadenin accions GPIO al Raspberry Pi, hem utilitzat Macros, els detalls dels quals es troben aquí:

També he escrit algunes notes inicials sobre el procés anterior que es poden trobar adjuntes.

Instal·lació i configuració de càmera web

Estem utilitzant MJPG-Streamer per transmetre el flux de vídeo des del Raspberry Pi fins al navegador mitjançant la càmera web USB connectada al Pi. Seguiu les instruccions de configuració i construcció que s’indiquen aquí https://blog.miguelgrinberg.com/post/how-to-build-… per aconseguir que MJPG-Streamer funcioni al Raspberry Pi.

Configuració del Raspberry Pi com a punt d'accés / punt d'accés

Per configurar el Raspberry Pi com a hostpot, seguiu les instruccions que es proporcionen aquí: https://elinux.org/RPI-Wireless-Hotspot. Vaig configurar la IP estàtica del Raspberry Pi com a 192.168.42.1, que és el que escriuríem al navegador un cop el Pi arrencés al mode AP.

El servei WebIOPi, MJPG-Streamer i el punt d'accés WiFi s'han configurat per executar-se automàticament a l'arrencada i això ens permet obrir directament un navegador web i connectar-nos al robot després que arrenci. El fitxer rc.local disponible al repo s’utilitza per executar la càmera web en arrencar.

Pas 3: Instruccions de construcció / cablejat

4 GPIO del Raspberry Pi, és a dir, GPIO 9, 11, 23 i 24, estan connectats a l'IC del controlador de motor L293D que acciona els motors en conseqüència després de rebre sol·licituds de macro des de la pàgina web servida pel marc Webiopi. El dongle USB WiFi i la càmera web USB Logitech estan connectats als 2 ports USB disponibles al Raspberry Pi. Un banc d’energia de 5V 4000 Mah subministra l’energia principal al Pi. Per conduir els motors s’utilitza una bateria de plom àcid de 4V 1,5A.

Nota: Atès que el corrent de sortida màxim del banc de potència que he utilitzat era de pocs 1000 Mah, vaig haver d’utilitzar la bateria de plom àcid externa per accionar els motors. Si teniu un banc de potència que dóna> = 2000Mah, podeu conduir directament els motors des del carril de 5V del Pi (però no ho recomanaria per als motors que necessiten alimentació)

A continuació es detallen breument les 3 subseccions claus del projecte LeapMotion Javascript API, WebIOPi i MJPG-Streamer i el seu funcionament / configuració bàsica.

Pas 4: entendre el marc WebIOPi

El frontend que es mostra al navegador s’escriu en HTML (Filename: index.html) i Javascript mentre que el backend que condueix els GPIO s’escriu en Python (Filename: script.py). Notes detallades sobre la creació d’una WebApp personalitzada basada en el marc WebIOPi s’adjunten com a notes al repositori de Bitbucket.

Les macros personalitzades definides a l’escriptura Python es poden activar des del fitxer HTML.

Per exemple: webiopi (). CallMacro ("go_forward"); Es tracta d’una trucada personalitzada a una macro go_forward definida a l’escriptura Python que gestiona el procés de desplaçament dels dos motors en la direcció cap endavant.

La jerarquia del directori on s’emmagatzemen els fitxers al Pi es mostra a la imatge adjunta.

La carpeta Robot conté aquestes subcarpetes:

  • html: que conté index.html
  • python: conté script.py
  • mjpg-streamer-r63: conté els fitxers de compilació i executables per executar la càmera web

MJPG-Streamer: el flux de vídeo en directe des de la càmera web USB s’executa al port 8080 del Pi per defecte. Per tal de veure el flux manualment, aneu a RASPBERRYPI_IP: 8080 al navegador després d’haver activat la càmera web.

Codi LeapMotion:

Els fragments de codi dels exemples proporcionats a l'SDK de LeapMotion es van incrustar al fitxer index.html. El fitxer leap.js de LeapMotion s’ha d’afegir a la carpeta html del directori del projecte al Raspberry Pi.

El paràmetre palmPosition enviat per LeapMotion s’utilitza per determinar quina macro activar al Raspberry Pi.

Pas 5: execució del projecte

Simplement engegueu el Raspberry Pi i espereu aproximadament un minut. Veureu un nou punt actiu RaspberryPi. Connecteu-vos a aquest punt d'accés i obriu aquesta adreça IP estàtica al navegador: 192.168.42.1:8000. 8000 és el port per defecte de WebIOPi.

El Raspberry Pi també es pot configurar per connectar-se a la xarxa WiFi local com a client en lloc de mostrar-se com un punt d'accés Wi-Fi. Aleshores haureu de determinar la IP dinàmica assignada al Raspberry Pi pel router i, a continuació, colpejar-la al navegador per jugar amb el bot.

Podeu deixar un comentari si necessiteu ajuda o teniu cap pregunta sobre el projecte. Feliç Salt!

S'han adjuntat tots els codis font. Podeu deixar un comentari si necessiteu ajuda amb alguna part de l'edifici del projecte. Feliç Salt!

Recomanat: