Spisu treści:

Spraw, aby Twój gest drona był kontrolowany w 10 USD: 4 kroki
Spraw, aby Twój gest drona był kontrolowany w 10 USD: 4 kroki

Wideo: Spraw, aby Twój gest drona był kontrolowany w 10 USD: 4 kroki

Wideo: Spraw, aby Twój gest drona był kontrolowany w 10 USD: 4 kroki
Wideo: Momenty w Które Byście Nie Uwierzyli Gdyby Nie Zostały Nagrane - Część 5 2024, Listopad
Anonim
Image
Image
Spraw, aby Twój gest drona był kontrolowany za 10 USD
Spraw, aby Twój gest drona był kontrolowany za 10 USD
Spraw, aby Twój gest drona był kontrolowany za 10 USD
Spraw, aby Twój gest drona był kontrolowany za 10 USD

Ta instrukcja jest przewodnikiem po przekształceniu drona zdalnego sterowania w drona sterowanego gestami za mniej niż 10 USD!

Jestem osobą, która bardzo inspiruje się filmami Sci-Fi i staram się, aby technologia pokazana w filmie była realna. Projekt ten jest inspiracją z dwóch takich filmów: „GWIEZDNE WOJNY: Imperium kontratakuje” i „Project Almanac”. W obu filmach widać latający obiekt (statek kosmiczny X-wing i dron zdalnie sterowany), który był kontrolowany jedynie ruchami rąk. To zainspirowało mnie do stworzenia czegoś podobnego…

Oczywiście nie posiadam X-winga, więc niestety muszę pracować z moim Mini R/C Quadcopterem.

Plan jest więc taki - na moim laptopie będzie uruchomiony skrypt przetwarzania obrazu, który będzie stale szukał mojej ręki i śledził jej pozycję w kadrze wideo. Gdy uzyska współrzędne ręki, wyśle odpowiedni sygnał do drona, a zostanie to zrobione za pomocą Arduino podłączonego do laptopa wraz z modułem nadawczo-odbiorczym NRF24L01 2,4 GHz, który może bezpośrednio komunikować się z płytą odbiorczą dowolnego drona R/C.

Kieszonkowe dzieci

  • Laptop/komputer stacjonarny z zainstalowaną kamerą internetową i Pythonem. (Używam laptopa z systemem Windows z wbudowaną kamerą internetową i uruchomionym Pythonem 2.7.14)
  • Dowolny dron R/C działający na częstotliwości 2,4 GHz. (JJRC H36 w moim przypadku)
  • Arduino UNO wraz z kablem do programowania. (Używam jego klona, ponieważ jest tańszy)
  • Bezprzewodowy moduł nadawczo-odbiorczy anteny NRF24L01 2,4 GHz. (Kupiłem to stąd za jedyne 99 (1,38 USD)
  • Płytka adaptera 3.3V do modułu bezprzewodowego 24L01. (Kupiłem to stąd za jedyne 49 (0,68 USD)
  • Przewody połączeniowe męskie i żeńskie x7

Krok 1: Zbierz zapasy

Zbierz zapasy!
Zbierz zapasy!

Krok 2: Połączenie modułu NRF z Arduino

Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino
Połączenie modułu NRF z Arduino

Teraz, gdy masz już wszystkie części, zacznijmy od okablowania modułu NRF z Arduino.

  1. Najpierw włóż moduł NRF do gniazda w adapterze. Możesz odnieść się do powyższego obrazu.
  2. Następnie weź przewody męskie na żeńskie i podłącz adapter NRF do Arduino w następujący sposób: (patrz schemat połączeń powyżej)

    • Pin adaptera NRF - Pin Arduino
    • VCC - 5v
    • GND - GND
    • CE - cyfrowy pin 5
    • CSN - Pin analogowy 1
    • SCK – cyfrowy pin 4
    • MO - cyfrowy pin 3
    • MI - Pin analogowy 0
    • IRQ – nieużywane
  3. Po nawiązaniu połączenia podłącz Arduino do komputera za pomocą kabla USB do programowania Arduino i prawie gotowe.

Krok 3: Przejdźmy do kodowania

Przejdźmy do kodowania!
Przejdźmy do kodowania!
Przejdźmy do kodowania!
Przejdźmy do kodowania!

Teraz zaczyna się trudna część…!!!

Sam nie stworzyłem całego kodu. Zamiast tego wziąłem części i fragmenty kodu od różnych programistów i zintegrowałem je wszystkie w jeden z odrobiną poprawek. W związku z tym należy przyznać odpowiednie kredyty wszystkim oryginalnym twórcom.

Możesz pobrać wszystkie załączone kody tutaj i sprawić, by działało. Lub możesz przejść do mojego repozytorium Github, gdzie będę stale aktualizować najnowszy kod, aby lepiej śledzić.

Śledzenie dłoni:

W tym projekcie do śledzenia rąk wykorzystywany jest klasyfikator Haar Cascade. Kaskada Haar jest ćwiczona poprzez nałożenie obrazu pozytywowego na zestaw obrazów negatywowych. Te wytrenowane dane są zwykle przechowywane w plikach „.xml”. Możesz pobrać pliki Classifier prawie wszystkiego w Internecie lub możesz nawet utworzyć własny w ten sposób. W tym projekcie, ponieważ musieliśmy sterować gestami dłoni, użyłem klasyfikatora pięści o nazwie „closed_frontal_palm.xml” stworzonego przez Aravinda Nabissana do wykrywania moich dłoni. Możesz przetestować ten kod, uruchamiając kod "hand_live.py" w moim repozytorium.

Wybór kodu NRF24 pasującego do twojego drona:

Tak więc, zgodnie z producentem i modelem twojego drona, możesz odwołać się do repozytorium Github - "nrf24_cx10_pc" stworzonego przez Perry'ego Tsao, aby wybrać odpowiedni kod Arduino do uruchomienia, który będzie pasował do jego częstotliwości. Stworzył fajny samouczek, aby kontrolować swój dron CX10 na komputerze.

Ponieważ używałem drona JJRC H36, odniosłem się do innego repozytorium Github - "nrf24_JJRC_H36_pc", które było rozwidleniem repozytorium Perry'ego Tsao stworzonego przez Lewisa Cornicka, aby kontrolować jego JJRC H36 przez PC.

Przygotowanie Arduino:

Rozdzieliłem repozytorium Lewisa na moim Github, które możesz sklonować, jeśli pracujesz nad tym samym dronem. Musisz przesłać kod "nRF24_multipro.ino" raz na Arduino Uno, aby sparować go z dronem za każdym razem, gdy uruchamiamy nasz skrypt Python.

Testowanie komunikacji szeregowej:

W tym samym repozytorium możesz również znaleźć kod „serial_test.py”, który może być użyty do przetestowania komunikacji szeregowej skryptu Python z Arduino i czy twój dron zostanie sparowany, czy nie. Nie zapomnij zmienić portu COM w kodzie zgodnie z portem COM swojej płyty Arduino.

Integracja wszystkiego w jednym kodzie:

Zintegrowałem więc wszystkie te kody różnych programistów i stworzyłem własny kod "handserial.py". Jeśli robisz dokładnie to samo, co ja robię z dokładnie tym samym dronem, możesz bezpośrednio uruchomić ten kod, a następnie możesz sterować dronem, po prostu poruszając pięścią w powietrzu. Kod najpierw śledzi pięść w klatce wideo. W zależności od współrzędnej Y pięści, kod wysyła wartość przepustnicy do drona, aby dron poruszał się w górę lub w dół i podobnie, w zależności od współrzędnej X pięści, kod wysyła wartość lotki, aby dron poruszał się w lewo lub w prawo.

Krok 4: Uwaga autora

Są 4 punkty, o których chciałbym szczególnie wspomnieć w odniesieniu do tego projektu:

  1. Jak wspomniano wcześniej, ten kod nie jest w całości wykonany przeze mnie, ale pracuję nad nim nieprzerwanie i aktualizuję kod w celu lepszego śledzenia w moim repozytorium Github. Więc w przypadku jakichkolwiek zapytań lub aktualizacji możesz odwiedzić repozytorium lub wysłać ping na Instagram.
  2. Obecnie korzystamy z kamery internetowej laptopa, która nie pozwala na uzyskanie perspektywy widoku drona, ale w razie potrzeby kamery zamontowane na dronie mogą być również wykorzystywane do celów śledzenia. Pomoże to mieć lepszy widok i ostatecznie lepszą kontrolę.
  3. Do tego projektu używam drona JJRC H36, który jest jednym z najtańszych dronów dostępnych na rynku, dlatego brakuje mu stabilności żyroskopowej. To jest powód, dla którego możesz czuć, że ruch w filmie jest chwiejny, ale jeśli używasz drona przyzwoitej jakości i dobrej stabilności, nie napotkasz tego problemu.
  4. Chciałem pomajstrować przy Computer Vision i sterowaniu dronem, dlatego zacząłem od tego projektu. Ale po pracy nad wizją komputerową czuję, że nie jest to optymalne rozwiązanie do sterowania dronem. W związku z tym planuję w przyszłości zrobić coś w rodzaju rękawiczki z czujnikiem żyroskopowym do sterowania dronem. Więc bądź na bieżąco z aktualizacjami…

Jeśli podobał Ci się ten samouczek, polub i udostępnij go, a także zagłosuj na niego.

To wszystko na teraz.. Do zobaczenia następnym razem…

Zalecana: