Leap Motion -beheerde afstandsondersoek- en -verwyderingsrobot: 5 stappe
Leap Motion -beheerde afstandsondersoek- en -verwyderingsrobot: 5 stappe
Anonim
Image
Image

As deel van my inskrywing vir die Leap Motion #3D Jam, was ek opgewonde om hierdie draadlose gebaar -beheerde Search/Rescue Robot te bou, gebaseer op die Raspberry Pi. Hierdie projek demonstreer en bied 'n minimalistiese voorbeeld van hoe draadlose 3D -handgebare gebruik kan word om fisiese dinge te beheer en te kommunikeer.

Aangesien hierdie projek die gewilde WebIOPi IoT -raamwerk op die Raspberry Pi gebruik, kan dit baie maklik uitgebrei word om tipies enige sensor/hardeware/elektronika wat met die Raspberry Pi gekoppel kan word, te beheer en te koppel.

'N Paar moontlike scenario's wat ek met mede -makers voorstel, kan hierdie projek as hul basisraamwerk gebruik om voort te bou op:

1. Bomverwyderingsrobot op afstand met gebare (met miskien 'n OWI -arm, ens.)

2. Chirurgiese operasie op afstand deur 'n dokter

3. Gebare -beheerde interaktiewe kunsuitstallings of opvoedkundige inhoud

4. Oneindige ander moontlikhede/integrasies (ek word beperk deur my verbeelding:))

Stap 1: Oorsig

Verstaan die WebIOPi -raamwerk
Verstaan die WebIOPi -raamwerk

Met hierdie projek kan 'n gebruiker 'n robot interaktief beheer met behulp van 3D -handgebare deur 'n Leap Motion wat aan 'n rekenaar gekoppel is.

Die Raspberry Pi aan boord van die Robot het ook 'n USB-webkamera wat lewendige video terugstuur na die gebruiker wat in 'n webblaaier gesien kan word. Die LeapMotion JavaScript -biblioteek wat op hierdie webblad ingebed is, verwerk handgebare en stuur beheerseine terug na die robot, wat dan dienooreenkomstig beweeg.

Die Raspberry Pi op die robot is opgestel as 'n hotspot (AP -modus) met behulp van die USB WiFi -dongle wat daaraan gekoppel is. Dit stel ons rekenaars/toestelle in staat om direk aan te sluit op die Raspberry Pi en via 'n webblad te beheer. Die Raspberry Pi kan ook gekonfigureer word om in die kliëntmodus te werk, waardeur dit draadloos kan koppel aan die WiFi -router se AP waarop die rekenaar/toestelle reeds gekoppel is.

Hierdie projek is gebaseer op WebIOPi (https://webiopi.trouch.com/), wat 'n gewilde IoT -raamwerk vir Raspberry Pi is. Deur die saamgevoegde Weaved IoT -kit te gebruik (of deur port forwarding op Router), kan hierdie robot op afstand beheer word en/of data van enige wêrelddeel ontvang.

Die volgende komponente is gebruik vir die bou van die projek:

  1. Raspberry Pi B (100% versoenbaar met Raspberry Pi B+)
  2. Logitech USB -webkamera (skamele 1,3 megapixel)
  3. L293D motorbestuurder IC en breakout -skild
  4. USB WiFi -Dongle vir Framboos Pi
  5. USB Power Bank vir Raspberry Pi
  6. Eksterne 4V/1.5A battery vir die bestuur van die robotmotors

Stap 2: Projekbou

WebIOPi installeer, persoonlike kode skryf en webcam opstel:

WebIoPi -installasie -instruksies, basiese raamwerke en baie voorbeelde is beskikbaar op die projekbladsy hier:

Om die LeapMotion -funksies op die webblad ingebed te kry, kan u GPIO -aksies op die Raspberry Pi aktiveer, het ons makro's gebruik waarvan die besonderhede hier gevind kan word:

Ek het ook 'n paar aantekeninge oor die bogenoemde proses geskryf wat u hierby kan vind.

Webcam installeer en instel

Ons gebruik MJPG-Streamer om die videostroom vanaf die Raspberry Pi terug na die blaaier te stroom via die USB-webkamera wat op die Pi gekoppel is. Volg die opstel- en bou-instruksies wat hier aangedui word https://blog.miguelgrinberg.com/post/how-to-build-… om MJPG-Streamer aan die Raspberry Pi te laat werk.

Stel die Raspberry Pi op as 'n AP/Hotspot

Om die Raspberry Pi as 'n Hostpot op te stel, volg die instruksies hier: https://elinux.org/RPI-Wireless-Hotspot. Ek het die statiese IP van die Raspberry Pi opgestel as 192.168.42.1, wat ons in die blaaier sou tik sodra die Pi in die AP -modus begin.

WebIOPi, MJPG-Streamer en WiFi-hotspot-diens is opgestel om outomaties te begin tydens opstart, en dit stel ons in staat om 'n webblaaier direk oop te maak en aan te sluit by die robot nadat dit opgestart is. Die rc.local -lêer wat in die repo beskikbaar is, word gebruik om die webcam tydens opstart te laat loop.

Stap 3: Bou-/bedradingsinstruksies

4 GPIO's van die Raspberry Pi, naamlik GPIO 9, 11, 23 en 24, is gekoppel aan L293D Motor Driver IC wat die motors dienooreenkomstig dryf nadat hulle makroversoeke ontvang het van die webblad wat deur die Webiopi -raamwerk bedien word. Die USB WiFi -dongle en die USB Logitech -webkamera is gekoppel aan die 2 USB -poorte wat op die Raspberry Pi beskikbaar is. 'N 5V 4000 Mah Power bank verskaf die hoofkrag aan die Pi. 'N 4V 1.5A loodsuurbattery word gebruik om die motors aan te dryf.

Let wel: Aangesien die maksimum uitsetstroom van die kragbank wat ek gebruik het 'n skamele 1000 Mah was, moes ek die eksterne loodsuurbattery gebruik om die motors aan te dryf. As u 'n kragbank het wat> = 2000Mah gee, kan u die motors direk vanaf die 5V -spoor op die Pi dryf (ek sou dit egter nie aanbeveel vir motors wat honger is nie)

Die drie belangrikste onderafdelings van die projek LeapMotion Javascript API, WebIOPi en MJPG-Streamer en hul basiese werk/opstelling word hieronder kort uiteengesit.

Stap 4: Begrip van die WebIOPi -raamwerk

Die voorkant wat in die blaaier vertoon word, is in HTML (lêernaam: index.html) en Javascript geskryf, terwyl die agterkant wat die GPIO's dryf, in Python (lêernaam: script.py) geskryf is. Gedetailleerde aantekeninge oor die skep van 'n pasgemaakte WebApp gebaseer op die WebIOPi -raamwerk word as aantekeninge in die Bitbucket -repo aangeheg.

Aangepaste makros wat in die Python -script gedefinieer is, kan vanuit die HTML -lêer geaktiveer word.

Bv: webiopi (). CallMacro ("go_forward"); Dit is 'n persoonlike oproep na 'n makro go_forward wat gedefinieer is in die Python -skrip wat die proses hanteer om albei die motors in die voorwaartse rigting te ry.

Die gidshiërargie van waar die lêers op die Pi gestoor word, word in die aangehegte prent getoon.

Die Robot-lêergids bevat hierdie subgidse:

  • html: bevat index.html
  • python: bevat script.py
  • mjpg-streamer-r63: bevat die bou lêers en uitvoerbaar om die webcam te laat loop

MJPG-Streamer: Die Live Video-stroom vanaf die USB-webcam loop standaard op poort 8080 van die Pi. Om die stroom handmatig te sien, gaan na RASPBERRYPI_IP: 8080 in die blaaier nadat u die webkamera aangeskakel het.

LeapMotion -kode:

Kodebrokkies uit die voorbeelde in die LeapMotion SDK is in die index.html -lêer ingebed. Die LeapMotion se leap.js -lêer moet bygevoeg word in die html -lêergids in die projekgids op die Raspberry Pi.

Die palmPosition -parameter wat deur die LeapMotion gestuur word, word gebruik om te bepaal watter makro op die Raspberry Pi moet aktiveer.

Stap 5: Die uitvoering van die projek

Skakel eenvoudig die Raspberry Pi AAN en wag ongeveer 'n minuut. U sien 'n nuwe hotpsot RaspberryPi verskyn. Koppel aan hierdie hotspot en maak hierdie statiese IP -adres oop in die blaaier: 192.168.42.1:8000. 8000 is die standaardpoort van WebIOPi.

Die Raspberry Pi kan ook gekonfigureer word om as 'n in -clien aan te sluit op die plaaslike WiFi -netwerk in plaas van as 'n hotspot te verskyn. U moet dan die dinamiese IP bepaal wat deur die router aan die Raspberry Pi toegeken is en dit dan in die blaaier slaan om met die Bot te speel.

U kan kommentaar lewer as u hulp nodig het of vrae het oor die projek. Gelukkige Spring!

Die hele bronkodes is aangeheg. U kan kommentaar lewer as u hulp nodig het met enige deel van die bou van die projek. Gelukkige Spring!