Spisu treści:

Zdalne wyszukiwanie i usuwanie robota ze sterowaniem Leap Motion: 5 kroków
Zdalne wyszukiwanie i usuwanie robota ze sterowaniem Leap Motion: 5 kroków

Wideo: Zdalne wyszukiwanie i usuwanie robota ze sterowaniem Leap Motion: 5 kroków

Wideo: Zdalne wyszukiwanie i usuwanie robota ze sterowaniem Leap Motion: 5 kroków
Wideo: Do czego zdolny jest najbardziej niebezpieczny pająk na świecie 2024, Lipiec
Anonim
Image
Image

W ramach mojego wpisu do Leap Motion #3D Jam, byłem podekscytowany zbudowaniem tego bezprzewodowego robota poszukiwawczego/ratowniczego sterowanego gestami, opartego na Raspberry Pi. Ten projekt demonstruje i dostarcza minimalistycznego przykładu, w jaki sposób bezprzewodowe gesty 3D mogą być używane do kontrolowania i interakcji z fizycznymi rzeczami.

Ponieważ ten projekt wykorzystuje popularną platformę WebIOPi IoT na Raspberry Pi, można go bardzo łatwo rozszerzyć, aby sterować i łączyć zwykle dowolny czujnik/sprzęt/elektronikę, który może być połączony z Raspberry Pi.

Niektóre możliwe scenariusze, które wyobrażam sobie, że inni Twórcy mogą wykorzystać ten projekt jako podstawę do budowania na:

1. Zdalny robot do usuwania bomb obsługiwany gestami (przy użyciu może ramienia OWI itp.)

2. Zdalna operacja chirurgiczna przez lekarza

3. Interaktywne wystawy sztuki lub treści edukacyjne sterowane gestami

4. Nieskończone możliwości/integracje (ograniczam wyobraźnię:))

Krok 1: Przegląd

Zrozumienie struktury WebIOPi
Zrozumienie struktury WebIOPi

Ten projekt pozwala użytkownikowi na interaktywne sterowanie robotem za pomocą gestów rąk 3D za pomocą Leap Motion podłączonego do komputera.

Wbudowane Raspberry Pi w robocie ma również kamerę internetową USB, która przesyła strumieniowo wideo na żywo z powrotem do użytkownika, które można zobaczyć w przeglądarce internetowej. Wbudowana w tę stronę biblioteka JavaScript LeapMotion przetwarza gesty rąk i wysyła sygnały sterujące z powrotem do Robota, który następnie odpowiednio się porusza.

Raspberry Pi w robocie jest skonfigurowane jako Hotspot (tryb AP) za pomocą podłączonego do niego klucza USB WiFi. Dzięki temu nasze komputery/urządzenia mogą bezpośrednio łączyć się z Raspberry Pi i sterować za pośrednictwem strony internetowej. Raspberry Pi można również skonfigurować do pracy w trybie klienta, w którym łączy się bezprzewodowo z punktem dostępowym routera WiFi, do którego jest już podłączony komputer/urządzenia.

Ten projekt jest oparty na WebIOPi (https://webiopi.trouch.com/), który jest popularnym frameworkiem IoT dla Raspberry Pi. Korzystając z dołączonego zestawu Weaved IoT (lub poprzez przekierowanie portów na routerze), ten robot może być zdalnie sterowany i/lub odbierać dane z dowolnej części świata.

Do budowy projektu wykorzystano następujące komponenty:

  1. Raspberry Pi B (100% kompatybilność w przód z Raspberry Pi B+)
  2. Kamera internetowa Logitech USB (niewielka 1,3 megapiksela)
  3. Układ scalony sterownika silnika L293D i osłona przeciwwybuchowa
  4. Klucz USB WiFi dla Raspberry Pi
  5. Powerbank USB dla Raspberry Pi
  6. Zewnętrzny akumulator 4 V/1,5 A do napędzania silników robotów

Krok 2: Budowanie projektu

Instalowanie WebIOPi, pisanie niestandardowego kodu i konfigurowanie kamery internetowej:

Instrukcje instalacji WebIoPi, podstawy frameworka i wiele przykładów są dostępne na stronie projektu tutaj:

Aby funkcje LeapMotion osadzone na stronie internetowej uruchamiały akcje GPIO na Raspberry Pi, użyliśmy makr, których szczegóły można znaleźć tutaj:

Napisałem również kilka notatek na temat rozpoczęcia powyższego procesu, które można znaleźć w załączeniu.

Instalacja i konfiguracja kamery internetowej

Używamy MJPG-Streamera, aby przesyłać strumieniowo obraz wideo z Raspberry Pi z powrotem do przeglądarki przez kamerę internetową USB podłączoną do Pi. Postępuj zgodnie z instrukcjami instalacji i kompilacji wskazanymi tutaj https://blog.miguelgrinberg.com/post/how-to-build-…, aby MJPG-Streamer działał na Raspberry Pi.

Konfiguracja Raspberry Pi jako AP/Hotspot

Aby skonfigurować Raspberry Pi jako Hostpot, postępuj zgodnie z instrukcjami podanymi tutaj: https://elinux.org/RPI-Wireless-Hotspot. Skonfigurowałem statyczny adres IP Raspberry Pi jako 192.168.42.1, który wpisalibyśmy w przeglądarce po uruchomieniu Pi w trybie AP.

Usługi WebIOPi, MJPG-Streamer i WiFi hotspot zostały skonfigurowane do automatycznego uruchamiania podczas uruchamiania, co pozwala nam bezpośrednio otworzyć przeglądarkę internetową i połączyć się z Robotem po jego uruchomieniu. Plik rc.local dostępny w repozytorium służy do uruchamiania kamery internetowej podczas rozruchu.

Krok 3: instrukcje budowy/okablowania

4 GPIO Raspberry Pi, a mianowicie GPIO 9, 11, 23 i 24, są połączone z układem scalonym sterownika silnika L293D, który odpowiednio napędza silniki po otrzymaniu żądań makr ze strony internetowej obsługiwanej przez framework Webiopi. Klucz sprzętowy USB WiFi i kamera internetowa USB Logitech są podłączone do 2 portów USB dostępnych w Raspberry Pi. Bank energii 5 V 4000 Mah dostarcza główne zasilanie do Pi. Do napędzania silników używany jest akumulator kwasowo-ołowiowy 4 V 1,5 A.

Uwaga: Ponieważ maksymalny prąd wyjściowy banku mocy, którego użyłem, wynosił nędznie 1000 Mah, musiałem użyć zewnętrznego akumulatora kwasowo-ołowiowego do napędzania silników. Jeśli masz bank mocy, który daje >= 2000Mah, możesz bezpośrednio napędzać silniki z szyny 5 V na Pi (jednak nie polecam tego w przypadku silników o dużej mocy)

Trzy kluczowe podsekcje projektu LeapMotion Javascript API, WebIOPi i MJPG-Streamer oraz ich podstawowa obsługa/konfiguracja zostały krótko opisane poniżej.

Krok 4: Zrozumienie platformy WebIOPi

Frontend, który jest wyświetlany w przeglądarce, jest napisany w HTML (Nazwa pliku:index.html) i JavaScript, podczas gdy backend, który obsługuje GPIO, jest napisany w Pythonie (Nazwa pliku: script.py). Szczegółowe uwagi dotyczące tworzenia niestandardowej aplikacji WebApp opartej na frameworku WebIOPi są dołączone jako uwagi w repozytorium Bitbucket.

Makra niestandardowe zdefiniowane w skrypcie Pythona można wyzwolić z pliku HTML.

Np.: webiopi().callMacro("go_forward"); Jest to niestandardowe wywołanie makra go_forward zdefiniowanego w skrypcie Pythona, które obsługuje proces sterowania silnikami w kierunku do przodu.

Hierarchia katalogów, w których pliki są przechowywane w Pi, jest pokazana na załączonym obrazku.

Folder Robot zawiera następujące podfoldery:

  • html: zawierający index.html
  • python: zawierający script.py
  • mjpg-streamer-r63: zawierający pliki kompilacji i plik wykonywalny do uruchomienia kamery internetowej

MJPG-Streamer: Strumień wideo na żywo z kamery internetowej USB działa domyślnie na porcie 8080 urządzenia Pi. Aby ręcznie wyświetlić strumień, przejdź do RASPBERRYPI_IP:8080 w przeglądarce po włączeniu kamery internetowej.

Kod skoku:

Fragmenty kodu z przykładów dostarczonych w LeapMotion SDK zostały osadzone w pliku index.html. Plik LeapMotion leap.js należy dodać do folderu html w katalogu projektu na Raspberry Pi.

Parametr palmPosition wysyłany przez LeapMotion służy do określenia, które makro ma zostać wyzwolone na Raspberry Pi.

Krok 5: Uruchamianie projektu

Po prostu włącz Raspberry Pi i odczekaj około minuty. Zobaczysz nowy hotpsot RaspberryPi. Połącz się z tym hotspotem i otwórz ten statyczny adres IP w przeglądarce: 192.168.42.1:8000. 8000 to domyślny port WebIOPi.

Raspberry Pi można również skonfigurować tak, aby łączył się z lokalną siecią Wi-Fi jako klient, zamiast wyświetlać się jako hotspot. Następnie musisz określić dynamiczny adres IP przypisany do Raspberry Pi przez router, a następnie uruchomić go w przeglądarce, aby bawić się z Botem.

Możesz zostawić komentarz, jeśli potrzebujesz pomocy lub masz pytania dotyczące projektu. Miłego skakania!

Załączam całe kody źródłowe. Możesz zostawić komentarz, jeśli potrzebujesz pomocy z jakąkolwiek częścią budowy projektu. Miłego skakania!

Zalecana: