Innehållsförteckning:

Leap Motion Controlled Remote Search and Disposal Robot: 5 steg
Leap Motion Controlled Remote Search and Disposal Robot: 5 steg

Video: Leap Motion Controlled Remote Search and Disposal Robot: 5 steg

Video: Leap Motion Controlled Remote Search and Disposal Robot: 5 steg
Video: Motion-controlled Servos with Leap Motion & Raspberry Pi 2024, November
Anonim
Image
Image

Som en del av min anmälan till Leap Motion #3D Jam var jag upphetsad att bygga denna trådlösa geststyrda sök-/räddningsrobot baserad på Raspberry Pi. Detta projekt demonstrerar och ger ett minimalistiskt exempel på hur trådlösa 3D -handrörelser kan användas för att styra och interagera med fysiska saker.

Eftersom detta projekt använder det populära WebIOPi IoT -ramverket på Raspberry Pi kan det mycket enkelt byggas ut för att styra och koppla in typiskt alla sensorer/hårdvara/elektronik som kan kopplas till Raspberry Pi.

Några möjliga scenarier som jag föreställer mig andra tillverkare kan använda detta projekt som basram för att bygga vidare på:

1. Fjärrstyrd bombbortskaffningsrobot (med kanske en OWI -arm etc)

2. Fjärrkirurgisk operation av en läkare

3. Gestkontrollerade interaktiva konstutställningar eller utbildningsinnehåll

4. Oändliga andra möjligheter/integrationer (jag är begränsad av min fantasi:))

Steg 1: Översikt

Förstå WebIOPi Framework
Förstå WebIOPi Framework

Detta projekt låter en användare interaktivt styra en robot med hjälp av 3D -handrörelser genom en språngrörelse ansluten till en dator.

Raspberry Pi ombord på roboten har också en USB-webbkamera som strömmar livevideo tillbaka till användaren som kan ses i en webbläsare. LeapMotion JavaScript -bibliotek inbäddat i denna webbsida behandlar handgester och skickar styrsignaler tillbaka till roboten, som sedan rör sig därefter.

Raspberry Pi på roboten är konfigurerad som en hotspot (AP -läge) med hjälp av USB WiFi -dongeln ansluten till den. Detta gör att våra datorer/enheter kan ansluta direkt till Raspberry Pi och styra via en webbsida. Raspberry Pi kan också konfigureras för att fungera i klientläge, där den trådlöst ansluter till WiFi -routerns AP som datorn/enheterna redan är anslutna till.

Detta projekt är baserat på WebIOPi (https://webiopi.trouch.com/) som är ett populärt IoT -ramverk för Raspberry Pi. Genom att använda det medföljande Weaved IoT -kit (eller genom portvidarebefordran på routern) kan denna robot fjärrstyras och/eller ta emot data från någon del av världen.

Följande komponenter användes för att bygga projektet:

  1. Raspberry Pi B (100% framåtkompatibel med Raspberry Pi B+)
  2. Logitech USB -webbkamera (usla 1,3 megapixel)
  3. L293D motorförar -IC och breakout -sköld
  4. USB WiFi -dongel för Raspberry Pi
  5. USB Power Bank för Raspberry Pi
  6. Externt 4V/1,5A batteri för att driva robotmotorerna

Steg 2: Projektbygge

Installera WebIOPi, skriva anpassad kod och konfigurera webbkamera:

WebIoPi -installationsanvisningar, grundläggande ramverk och många exempel finns på projektsidan här:

För att få LeapMotion -funktionerna inbäddade på webbsidan utlöser GPIO -åtgärder på Raspberry Pi, vi har använt makron, detaljerna finns här:

Jag har också skrivit några startkommentarer om ovanstående process som finns bifogade.

Installera och konfigurera webbkamera

Vi använder MJPG-Streamer för att strömma videoflöden från Raspberry Pi tillbaka till webbläsaren via USB-webbkameran som är ansluten till Pi. Följ installations- och bygginstruktionerna som anges här https://blog.miguelgrinberg.com/post/how-to-build-… för att få MJPG-Streamer att arbeta med Raspberry Pi.

Konfigurera Raspberry Pi som en AP/Hotspot

För att konfigurera Raspberry Pi som en Hostpot, följ instruktionerna här: https://elinux.org/RPI-Wireless-Hotspot. Jag konfigurerade den statiska IP -adressen för Raspberry Pi som 192.168.42.1 vilket är vad vi skulle skriva i webbläsaren när Pi startar upp i AP -läge.

WebIOPi, MJPG-Streamer och WiFi-hotspot-tjänsten har konfigurerats för att köras automatiskt vid start och det gör att vi direkt kan öppna en webbläsare och ansluta till roboten när den startar. Den rc.local -fil som finns i repo används för att köra webbkameran vid start.

Steg 3: Instruktioner för byggning/anslutning

4 GPIO på Raspberry Pi, nämligen GPIO 9, 11, 23 & 24 är anslutna till L293D Motor Driver IC som driver motorerna i enlighet därmed efter att ha mottagit makroförfrågningar från webbsidan som betjänas av Webiopi -ramverket. USB WiFi -dongeln och USB Logitech -webbkameran är anslutna till de 2 USB -portarna som finns på Raspberry Pi. En 5V 4000 Mah Power bank levererar huvudströmmen till Pi. Ett 4V 1.5A blybatteri används för att driva motorerna.

Obs: Eftersom den maximala utströmmen för powerbanken jag använde var en blygsam 1000 Mah, var jag tvungen att använda det externa blybatteriet för att driva motorerna. Om du har en powerbank som ger> = 2000Mah kan du direkt driva motorerna från 5V -skenan på Pi (jag skulle dock inte rekommendera detta för motorhungriga motorer)

De tre viktiga underavsnitten i projektet LeapMotion Javascript API, WebIOPi och MJPG-Streamer och deras grundläggande arbete/installation beskrivs kort nedan.

Steg 4: Förstå WebIOPi Framework

Frontänden som visas i webbläsaren är skriven i HTML (filnamn: index.html) & Javascript medan backend som driver GPIO: erna skrivs i Python (filnamn: script.py). Detaljerade anteckningar om hur du skapar en anpassad WebApp baserad på WebIOPi -ramverket bifogas som anteckningar i Bitbucket -repo.

Anpassade makron som definieras i Python -skriptet kan utlösas från HTML -filen.

Exempel: webiopi (). CallMacro ("go_forward"); Detta är ett anpassat anrop till ett makro go_forward som definieras i Python -skriptet som hanterar processen med att driva båda motorerna i riktning framåt.

Kataloghierarkin där filerna är lagrade på Pi visas i den bifogade bilden.

Robotmappen innehåller följande undermappar:

  • html: innehållande index.html
  • python: innehåller script.py
  • mjpg-streamer-r63: innehåller byggfilerna och körbara för att köra webbkameran

MJPG-Streamer: Live-videoströmmen från USB-webbkameran körs som standard på port 8080 på Pi. För att se strömmen manuellt, navigerar du till RASPBERRYPI_IP: 8080 i webbläsaren efter att du har startat webbkameran.

LeapMotion -kod:

Kodavsnitt från exemplen i LeapMotion SDK inbäddades i filen index.html. LeapMotion's leap.js -fil måste läggas till i html -mappen i projektkatalogen på Raspberry Pi.

PalmPosition -parametern som skickas av LeapMotion används för att bestämma vilket makro som ska aktiveras på Raspberry Pi.

Steg 5: Kör projektet

Slå bara på Raspberry Pi och vänta ungefär i en minut. Du kommer att se en ny hotpsot RaspberryPi dyka upp. Anslut till denna hotspot och öppna den statiska IP -adressen i webbläsaren: 192.168.42.1:8000. 8000 är standardporten för WebIOPi.

Raspberry Pi kan också konfigureras för att ansluta till det lokala WiFi -nätverket som en in clien istället för att visas som en hotspot. Du måste sedan bestämma den dynamiska IP -adressen som tilldelas Raspberry Pi av routern och sedan slå upp den i webbläsaren för att leka med Bot.

Du kan lämna en kommentar om du behöver hjälp eller har frågor om projektet. Glad hoppning!

Hela källkoderna har bifogats. Du kan lämna en kommentar om du behöver hjälp med någon del av byggandet av projektet. Glad hoppning!

Rekommenderad: