Innholdsfortegnelse:

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

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

Video: Leap Motion Controlled Remote Search and Disposal Robot: 5 trinn
Video: The Open Road | Critical Role: THE MIGHTY NEIN | Episode 5 2024, Desember
Anonim
Image
Image

Som en del av mitt bidrag til Leap Motion #3D Jam, var jeg spent på å bygge denne trådløse geststyrte Search/Rescue Robot basert på Raspberry Pi. Dette prosjektet demonstrerer og gir et minimalistisk eksempel på hvordan trådløse 3D -håndbevegelser kan brukes til å kontrollere og samhandle med fysiske ting.

Siden dette prosjektet bruker det populære WebIOPi IoT -rammeverket på Raspberry Pi, kan det veldig enkelt utvides til å kontrollere og grensesnitt vanligvis enhver sensor/maskinvare/elektronikk som kan grensesnittes med Raspberry Pi.

Noen mulige scenarier jeg ser for meg andre produsenter, kan bruke dette prosjektet som sitt grunnlag for å bygge videre på:

1. Robot for fjerning av bomber med fjernbevegelse (ved bruk av kanskje en OWI -arm osv.)

2. Ekstern kirurgisk operasjon av en lege

3. Geststyrte interaktive kunstutstillinger eller utdanningsinnhold

4. Uendelige andre muligheter/integrasjoner (jeg er begrenset av fantasien min:))

Trinn 1: Oversikt

Forstå WebIOPi Framework
Forstå WebIOPi Framework

Dette prosjektet lar en bruker interaktivt styre en robot ved hjelp av 3D -håndbevegelser gjennom en sprangbevegelse koblet til en PC.

Raspberry Pi ombord på roboten har også et USB-webkamera som streamer livevideo tilbake til brukeren som kan sees i en nettleser. LeapMotion JavaScript -bibliotek innebygd i denne websiden behandler håndbevegelser og sender kontrollsignaler tilbake til roboten, som deretter beveger seg deretter.

Raspberry Pi på roboten er konfigurert som et hotspot (AP -modus) ved hjelp av USB WiFi -dongelen som er koblet til den. Dette gjør at våre PCer/enheter kan koble seg direkte til Raspberry Pi og kontrollere via en webside. Raspberry Pi kan også konfigureres til å fungere i klientmodus, der den trådløst kobles til WiFi -ruteren AP som PC/enheter allerede er koblet til.

Dette prosjektet er basert på WebIOPi (https://webiopi.trouch.com/) som er et populært IoT -rammeverk for Raspberry Pi. Ved å bruke det medfølgende Weaved IoT -settet (eller via portvideresending på ruteren) kan denne roboten fjernstyres og/eller motta data fra hvilken som helst del av verden.

Følgende komponenter ble brukt til å bygge prosjektet:

  1. Raspberry Pi B (100% kompatibel med Raspberry Pi B+)
  2. Logitech USB -webkamera (beskjedne 1,3 megapiksler)
  3. L293D motordriver IC og breakout -skjold
  4. USB WiFi Dongle for Raspberry Pi
  5. USB Power Bank for Raspberry Pi
  6. Eksternt 4V/1,5A batteri for kjøring av robotmotorene

Trinn 2: Prosjektbygg

Installere WebIOPi, skrive tilpasset kode og konfigurere webkamera:

WebIoPi installasjonsinstruksjoner, grunnleggende rammeverk og mange eksempler er tilgjengelig på projektsiden her:

For å få LeapMotion -funksjonene innebygd på nettsiden utløser GPIO -handlinger på Raspberry Pi, vi har brukt makroer, detaljer om disse finnes her:

Jeg har også skrevet noen startnotater om prosessen ovenfor som du finner vedlagt.

Installere og konfigurere webkamera

Vi bruker MJPG-Streamer for å streame videofeed fra Raspberry Pi tilbake til nettleseren via USB-webkameraet som er koblet til Pi. Følg installasjons- og byggeinstruksjonene som er angitt her https://blog.miguelgrinberg.com/post/how-to-build-… for å få MJPG-Streamer til å jobbe med Raspberry Pi.

Konfigurering av Raspberry Pi som et AP/hotspot

For å konfigurere Raspberry Pi som en Hostpot, følg instruksjonene her: https://elinux.org/RPI-Wireless-Hotspot. Jeg konfigurerte den statiske IP -en til Raspberry Pi som 192.168.42.1, det er det vi ville skrive inn i nettleseren når Pi starter opp i AP -modus.

WebIOPi, MJPG-Streamer og WiFi hotspot-tjenesten er konfigurert til å kjøre automatisk ved oppstart, og dette lar oss åpne en nettleser og koble til roboten etter at den har startet opp. Rc.local -filen som er tilgjengelig i repoen, brukes til å kjøre webkameraet ved oppstart.

Trinn 3: Bygg-/ledningsinstruksjoner

4 GPIO -er fra Raspberry Pi, nemlig GPIO 9, 11, 23 og 24, er koblet til L293D -motordriver -IC som driver motorene tilsvarende etter å ha mottatt makroforespørsler fra websiden som betjenes av Webiopi -rammeverket. USB WiFi -dongelen og USB Logitech -webkameraet er koblet til de 2 USB -portene som er tilgjengelige på Raspberry Pi. En 5V 4000 Mah Power bank leverer hovedstrømmen til Pi. Et 4V 1,5A blybatteri brukes til å drive motorene.

Merk: Siden maksimal utgangsstrøm for kraftbanken jeg brukte var en 1000 Mah, måtte jeg bruke det eksterne blybatteriet til å drive motorene. Hvis du har en powerbank som gir> = 2000Mah, kan du kjøre motorene direkte fra 5V -skinnen på Pi (jeg vil imidlertid ikke anbefale dette for kraftsultne motorer)

De tre viktige underseksjonene av prosjektet LeapMotion Javascript API, WebIOPi og MJPG-Streamer og deres grunnleggende arbeid/oppsett er kort beskrevet nedenfor.

Trinn 4: Forstå WebIOPi Framework

Frontenden som vises i nettleseren er skrevet i HTML (filnavn: index.html) og Javascript mens backend som driver GPIO -er er skrevet i Python (filnavn: script.py). Detaljerte notater om hvordan du oppretter en tilpasset WebApp basert på WebIOPi -rammen er vedlagt som notater i Bitbucket -repoen.

Egendefinerte makroer definert i Python -skriptet kan utløses fra HTML -filen.

F.eks.: webiopi (). CallMacro ("go_forward"); Dette er et egendefinert anrop til en makro go_forward definert i Python -skriptet som håndterer prosessen med å kjøre begge motorene fremover.

Kataloghierarkiet for hvor filene er lagret på Pi, er vist på bildet vedlagt.

Robotmappen inneholder disse undermappene:

  • html: inneholder index.html
  • python: inneholder script.py
  • mjpg-streamer-r63: inneholder bygningsfilene og kjørbare for å kjøre webkameraet

MJPG-Streamer: Live-videostrømmen fra USB-webkameraet kjører på port 8080 til Pi som standard. For å se strømmen manuelt, naviger til RASPBERRYPI_IP: 8080 i nettleseren etter at du har slått på webkameraet.

LeapMotion -kode:

Kodestykker fra eksemplene i LeapMotion SDK ble innebygd i filen index.html. LeapMotion's leap.js -fil må legges til i html -mappen i prosjektkatalogen på Raspberry Pi.

PalmPosition -parameteren som sendes av LeapMotion brukes til å bestemme hvilken makro som skal utløses på Raspberry Pi.

Trinn 5: Kjøre prosjektet

Bare slå på Raspberry Pi og vent omtrent et minutt. Du vil se en ny hotpsot RaspberryPi dukke opp. Koble til dette hotspotet og åpne denne statiske IP -adressen i nettleseren: 192.168.42.1:8000. 8000 er standardporten til WebIOPi.

Raspberry Pi kan også konfigureres til å koble til det lokale WiFi -nettverket som en clien i stedet for å vises som et hotspot. Du må deretter bestemme den dynamiske IP -en som er tildelt Raspberry Pi av ruteren og deretter slå den opp i nettleseren for å leke med boten.

Du kan legge igjen en kommentar hvis du trenger hjelp eller har spørsmål om prosjektet. God hopp!

Hele kildekodene er lagt ved. Du kan legge igjen en kommentar hvis du trenger hjelp med noen del av byggingen av prosjektet. God hopp!

Anbefalt: