Inhoudsopgave:

Leap Motion gestuurde robot voor zoeken en verwijderen op afstand - Ajarnpa
Leap Motion gestuurde robot voor zoeken en verwijderen op afstand - Ajarnpa

Video: Leap Motion gestuurde robot voor zoeken en verwijderen op afstand - Ajarnpa

Video: Leap Motion gestuurde robot voor zoeken en verwijderen op afstand - Ajarnpa
Video: Part 09 - Moby Dick Audiobook by Herman Melville (Chs 105-123) 2024, November
Anonim
Image
Image

Als onderdeel van mijn inzending voor de Leap Motion #3D Jam, was ik verheugd om deze draadloze, gebarengestuurde zoek-/reddingsrobot te bouwen op basis van de Raspberry Pi. Dit project demonstreert en biedt een minimalistisch voorbeeld van hoe draadloze 3D-handgebaren kunnen worden gebruikt om fysieke dingen te besturen en ermee om te gaan.

Aangezien dit project het populaire WebIOPi IoT-framework op de Raspberry Pi gebruikt, kan het heel eenvoudig worden uitgebreid om elke sensor/hardware/elektronica die kan worden gekoppeld aan de Raspberry Pi te besturen en te koppelen.

Enkele mogelijke scenario's die ik voor ogen heb, kunnen mede-makers dit project gebruiken als hun basisraamwerk om op voort te bouwen:

1. Op afstand bediende bomverwijderingsrobot (misschien met een OWI-arm enz.)

2. Chirurgische operatie op afstand door een arts

3. Gebaargestuurde interactieve kunsttentoonstellingen of educatieve inhoud

4. Oneindige andere mogelijkheden/integraties (ik word beperkt door mijn verbeeldingskracht:))

Stap 1: Overzicht

Het WebIOPi-framework begrijpen
Het WebIOPi-framework begrijpen

Met dit project kan een gebruiker een robot interactief besturen met behulp van 3D-handgebaren via een Leap Motion die is aangesloten op een pc.

De Raspberry Pi aan boord van de robot heeft ook een USB-webcam die live video terug naar de gebruiker streamt, die kan worden bekeken in een webbrowser. De LeapMotion JavaScript-bibliotheek die in deze webpagina is ingebed, verwerkt handgebaren en stuurt besturingssignalen terug naar de robot, die vervolgens overeenkomstig beweegt.

De Raspberry Pi op de Robot wordt geconfigureerd als Hotspot (AP-modus) met behulp van de daarop aangesloten USB WiFi-dongle. Hierdoor kunnen onze pc's/apparaten rechtstreeks op de Raspberry Pi worden aangesloten en via een webpagina worden bestuurd. De Raspberry Pi kan ook worden geconfigureerd om in client-modus te werken, waarbij hij draadloos verbinding maakt met het AP van de WiFi-router waarmee de pc/apparaten al zijn verbonden.

Dit project is gebaseerd op WebIOPi (https://webiopi.trouch.com/), een populair IoT-framework voor Raspberry Pi. Door gebruik te maken van de gebundelde Weaved IoT Kit (of via port forwarding op router), kan deze robot op afstand worden bestuurd en/of data ontvangen vanuit elk deel van de wereld.

Voor de bouw van het project zijn de volgende onderdelen gebruikt:

  1. Raspberry Pi B (100% voorwaarts compatibel met Raspberry Pi B+)
  2. Logitech USB-webcam (arme 1,3 Megapixel)
  3. L293D Motor Driver IC en Breakout Shield
  4. USB WiFi-dongle voor Raspberry Pi
  5. USB Powerbank voor Raspberry Pi
  6. Externe 4V/1.5A batterij voor het aandrijven van de robotmotoren

Stap 2: Projectopbouw

WebIOPi installeren, aangepaste code schrijven en webcam configureren:

WebIoPi-installatie-instructies, basisprincipes van het framework en vele voorbeelden zijn beschikbaar op de projectpagina hier:

Om ervoor te zorgen dat de LeapMotion-functies in de webpagina worden ingebed, worden GPIO-acties op de Raspberry Pi geactiveerd. We hebben macro's gebruikt, waarvan de details hier te vinden zijn:

Ik heb ook een aantal aan de slag aan de slag geschreven over het bovenstaande proces dat als bijlage kan worden gevonden.

Webcam installeren en configureren

We gebruiken MJPG-Streamer om de videofeed van de Raspberry Pi terug naar de browser te streamen via de USB-webcam die op de Pi is aangesloten. Volg de installatie- en bouwinstructies die hier worden aangegeven https://blog.miguelgrinberg.com/post/how-to-build-… om MJPG-Streamer op de Raspberry Pi te laten werken.

De Raspberry Pi configureren als AP/Hotspot

Om de Raspberry Pi als Hostpot in te stellen, volgt u de instructies die hier worden gegeven: https://elinux.org/RPI-Wireless-Hotspot. Ik heb het statische IP-adres van de Raspberry Pi geconfigureerd als 192.168.42.1, wat we in de browser zouden typen zodra de Pi opstart in AP-modus.

WebIOPi, MJPG-Streamer en WiFi-hotspotservice zijn geconfigureerd om automatisch te starten bij het opstarten en dit stelt ons in staat om direct een webbrowser te openen en verbinding te maken met de robot nadat deze is opgestart. Het bestand rc.local dat beschikbaar is in de repo wordt gebruikt om de webcam tijdens het opstarten uit te voeren.

Stap 3: bouw-/bedradingsinstructies

4 GPIO's van de Raspberry Pi, namelijk GPIO 9, 11, 23 en 24, zijn verbonden met L293D Motor Driver IC die de motoren dienovereenkomstig aanstuurt na het ontvangen van macroverzoeken van de webpagina die wordt bediend door het Webiopi-framework. De USB WiFi-dongle en de USB Logitech-webcam worden aangesloten op de 2 beschikbare USB-poorten van de Raspberry Pi. Een 5V 4000 Mah Powerbank levert de hoofdstroom aan de Pi. Een 4V 1,5A loodzuuraccu wordt gebruikt om de motoren aan te drijven.

Opmerking: aangezien de maximale uitgangsstroom van de powerbank die ik gebruikte een magere 1000 Mah was, moest ik de externe loodzuurbatterij gebruiken om de motoren aan te drijven. Als je een powerbank hebt die>= 2000Mah geeft, kun je de motoren rechtstreeks vanaf de 5V-rail op de Pi aandrijven (ik zou dit echter niet aanbevelen voor krachtige motoren)

De 3 belangrijkste subsecties van het project LeapMotion Javascript API, WebIOPi en MJPG-Streamer en hun basiswerking/configuratie worden hieronder kort beschreven.

Stap 4: Het WebIOPi-framework begrijpen

De frontend die in de browser wordt weergegeven, is geschreven in HTML (Bestandsnaam:index.html) & Javascript, terwijl de backend die de GPIO's aanstuurt, is geschreven in Python (Bestandsnaam: script.py). Gedetailleerde opmerkingen over het maken van een aangepaste WebApp op basis van het WebIOPi-framework zijn als opmerkingen bijgevoegd in de Bitbucket-repo.

Aangepaste macro's die zijn gedefinieerd in het Python-script kunnen worden geactiveerd vanuit het HTML-bestand.

Bijv.: webiopi().callMacro("go_forward"); Dit is een aangepaste aanroep naar een macro go_forward gedefinieerd in het Python-script dat het proces afhandelt om beide motoren in voorwaartse richting te sturen.

De directoryhiërarchie van waar de bestanden op de Pi zijn opgeslagen, wordt weergegeven in de bijgevoegde afbeelding.

De map Robot bevat deze submappen:

  • html: bevat index.html
  • python: met script.py
  • mjpg-streamer-r63: bevat de buildbestanden en het uitvoerbare bestand om de webcam uit te voeren

MJPG-Streamer: De Live Video-stream van de USB-webcam draait standaard op poort 8080 van de Pi. Om de stream handmatig te bekijken, navigeert u naar RASPBERRYPI_IP:8080 in de browser nadat u de webcam hebt ingeschakeld.

LeapMotion-code:

Codefragmenten uit de voorbeelden in de LeapMotion SDK zijn ingesloten in het index.html-bestand. Het bestand leap.js van LeapMotion moet worden toegevoegd aan de html-map in de projectdirectory op de Raspberry Pi.

De parameter palmPosition die door de LeapMotion wordt verzonden, wordt gebruikt om te bepalen welke macro op de Raspberry Pi moet worden geactiveerd.

Stap 5: Het project uitvoeren

Schakel gewoon de Raspberry Pi in en wacht ongeveer een minuut. Je zult een nieuwe hotpsot RaspberryPi zien verschijnen. Maak verbinding met deze hotspot en open dit statische IP-adres in de browser: 192.168.42.1:8000. 8000 is de standaardpoort van WebIOPi.

De Raspberry Pi kan ook worden geconfigureerd om verbinding te maken met het lokale wifi-netwerk als een in-client in plaats van als een hotspot te verschijnen. Je moet dan het dynamische IP-adres bepalen dat door de router aan de Raspberry Pi is toegewezen en het vervolgens in de browser gebruiken om met de Bot te spelen.

Je kunt een reactie achterlaten als je hulp nodig hebt of vragen hebt over het project. Gelukkig springen!

De volledige broncodes zijn bijgevoegd. U kunt een opmerking achterlaten als u hulp nodig heeft bij een onderdeel van het bouwen van het project. Gelukkig springen!

Aanbevolen: