Spisu treści:

HackerBox 0024: Zadanie wizji: 11 kroków
HackerBox 0024: Zadanie wizji: 11 kroków

Wideo: HackerBox 0024: Zadanie wizji: 11 kroków

Wideo: HackerBox 0024: Zadanie wizji: 11 kroków
Wideo: XXXI Sesja Rady Miejskiej w Budzyniu - 25.04.2022 r. 2024, Listopad
Anonim
HackerBox 0024: Wizja Quest
HackerBox 0024: Wizja Quest

Vision Quest - W tym miesiącu hakerzy HackerBox eksperymentują z komputerową wizją i śledzeniem ruchu serwo. Ta instrukcja zawiera informacje dotyczące pracy z HackerBox #0024, które możesz odebrać tutaj do wyczerpania zapasów. Ponadto, jeśli chcesz otrzymywać co miesiąc taki HackerBox bezpośrednio do swojej skrzynki pocztowej, zasubskrybuj na HackerBoxes.com i dołącz do rewolucji!

Tematy i cele edukacyjne dla HackerBox 0024:

  • Eksperymentowanie z widzeniem komputerowym
  • Konfiguracja OpenCV (Computer Vision)
  • Programowanie Arduino Nano z Arduino IDE
  • Sterowanie serwosilnikami za pomocą Arduino Nano
  • Montaż mechanicznego zespołu obrotu i przechyłu
  • Sterowanie ruchem Pan i Tilt za pomocą mikrokontrolera
  • Wykonywanie śledzenia twarzy za pomocą OpenCV

HackerBoxes to miesięczna usługa subskrypcji dla elektroniki DIY i technologii komputerowej. Jesteśmy hobbystami, twórcami i eksperymentatorami. Jesteśmy marzycielami marzeń. ZHAKUJ PLANETĘ!

Krok 1: HackerBox 0024: Zawartość pudełka

HackerBox 0024: Zawartość pudełka
HackerBox 0024: Zawartość pudełka
  • HackerBoxes #0024 Karta referencyjna kolekcjonerska
  • Zespół trzech wsporników do przesuwania i pochylania
  • Dwa serwa MG996R z akcesoriami
  • Dwa aluminiowe okrągłe sprzęgacze serwo
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Zespół aparatu cyfrowego z kablem USB
  • Trzy soczewki z uniwersalnym mocowaniem zaciskowym
  • Lekka inspekcja medyczna pióra
  • Dupont skoczki męskie/żeńskie
  • Kabel MicroUSB
  • Ekskluzywna naklejka OpenCV
  • Ekskluzywna naklejka Dia de Muertos

Kilka innych rzeczy, które będą pomocne:

  • Mały skrawek drewnianej deski do podstawy aparatu
  • Lutownica, lut i podstawowe narzędzia lutownicze
  • Komputer do uruchamiania narzędzi programowych

Co najważniejsze, będziesz potrzebować poczucia przygody, ducha DIY i ciekawości hakerskiej. Hardkorowa elektronika DIY nie jest trywialnym zajęciem i nie rozwadniamy jej dla Ciebie. Celem jest postęp, a nie doskonałość. Kiedy będziesz wytrwać i cieszyć się przygodą, wiele satysfakcji można czerpać z nauki nowych technologii i, miejmy nadzieję, z udanych projektów. Sugerujemy, aby każdy krok robić powoli, pamiętając o szczegółach i nigdy nie wahając się poprosić o pomoc.

NAJCZĘŚCIEJ ZADAWANE PYTANIA: Lubimy prosić wszystkich członków HackerBox o naprawdę wielką przysługę. Poświęć kilka minut na zapoznanie się z najczęściej zadawanymi pytaniami na stronie HackerBoxes przed skontaktowaniem się z pomocą techniczną. Chociaż oczywiście chcemy pomóc wszystkim członkom tak bardzo, jak to konieczne, większość naszych e-maili wsparcia zawiera proste pytania, które są bardzo wyraźnie omówione w FAQ. Dziękuję za zrozumienie!

Krok 2: Wizja komputerowa

Wizja komputerowa
Wizja komputerowa

Widzenie komputerowe to interdyscyplinarna dziedzina, która zajmuje się sposobem, w jaki komputery uzyskują zrozumienie na wysokim poziomie z cyfrowych obrazów lub filmów. Z perspektywy inżynierskiej wizja komputerowa ma na celu zautomatyzowanie zadań, które może wykonać ludzki system wzrokowy. Jako dyscyplina naukowa, wizja komputerowa zajmuje się teorią stojącą za sztucznymi systemami, które wydobywają informacje z obrazów. Dane obrazu mogą przybierać różne formy, takie jak sekwencje wideo, widoki z wielu kamer lub wielowymiarowe dane ze skanera medycznego. Jako dyscyplina technologiczna, wizja komputerowa stara się zastosować swoje teorie i modele do budowy komputerowych systemów wizyjnych. Poddomeny wizji komputerowej obejmują rekonstrukcję sceny, wykrywanie zdarzeń, śledzenie wideo, rozpoznawanie obiektów, szacowanie pozycji 3D, uczenie się, indeksowanie, szacowanie ruchu i przywracanie obrazu.

Warto zauważyć, że widzenie komputerowe można uznać za odwrotność grafiki komputerowej.

Krok 3: Przetwarzanie i OpenCV

Przetwarzanie i OpenCV
Przetwarzanie i OpenCV

Przetwarzanie to elastyczny szkicownik programowy i język do nauki kodowania w kontekście sztuk wizualnych. Przetwarzanie promuje umiejętność korzystania z oprogramowania w sztukach wizualnych i umiejętności wizualne w zakresie technologii. Dziesiątki tysięcy studentów, artystów, projektantów, badaczy i hobbystów używają Przetwarzania do nauki i tworzenia prototypów.

OpenCV (Open Source Computer Vision Library) to biblioteka oprogramowania do wizji komputerowej i uczenia maszynowego typu open source. OpenCV został zbudowany w celu zapewnienia wspólnej infrastruktury dla aplikacji widzenia komputerowego i przyspieszenia wykorzystania percepcji maszynowej w produktach komercyjnych. Biblioteka OpenCV zawiera ponad 2500 zoptymalizowanych algorytmów, które obejmują kompleksowy zestaw zarówno klasycznych, jak i najnowocześniejszych algorytmów wizji komputerowej i uczenia maszynowego. Algorytmy te mogą być używane do wykrywania i rozpoznawania twarzy, identyfikowania obiektów, klasyfikowania ludzkich działań w filmach, śledzenia ruchów kamery, śledzenia poruszających się obiektów i tak dalej.

Zainstaluj OpenCV w ramach przetwarzania z menu Plik > Przykłady, wybierając „Dodaj przykłady”, a następnie w zakładce Biblioteki, instalując zarówno biblioteki wideo, jak i OpenCV. Otwórz przykład LiveCamTest, aby uzyskać podstawowe śledzenie twarzy. Sprawdź kilka innych przykładów OpenCV do przetwarzania tutaj.

Więcej zasobów:

Getting Started with Computer Vision to projekt książkowy zapewniający łatwy punkt wyjścia do twórczych eksperymentów z widzeniem komputerowym. Wprowadza kod i koncepcje niezbędne do budowania projektów wizji komputerowej.

Programowanie wizji komputerowej za pomocą Pythona to książka O'Reilly na temat PCV, moduł Pythona o otwartym kodzie źródłowym do wizji komputerowej.

Nauka OpenCV

Wizja komputerowa: algorytmy i aplikacje

Opanowanie OpenCV

Kurs Stanford CS231n Konwolucyjne sieci neuronowe do rozpoznawania wizualnego (16 filmów)

Chris Urmson TED Talk Jak samochód bez kierowcy widzi drogę

Krok 4: Platforma mikrokontrolera Arduino Nano

Platforma mikrokontrolera Arduino Nano
Platforma mikrokontrolera Arduino Nano

Możemy użyć dowolnej popularnej platformy mikrontrolera do sterowania serwami w naszym uchwycie kamery pan and tilt. Arduino Nano to zminiaturyzowana płytka Arduino do montażu powierzchniowego, przyjazna dla płytek stykowych, ze zintegrowanym portem USB. Jest niesamowicie w pełni funkcjonalny i łatwy do zhakowania.

Cechy:

  • Mikrokontroler: Atmel ATmega328P
  • Napięcie: 5V
  • Cyfrowe piny we/wy: 14 (6 PWM)
  • Piny wejścia analogowego: 8
  • Prąd DC na pin we/wy: 40 mA
  • Pamięć Flash: 32 KB (2 KB dla bootloadera)
  • SRAM: 2 KB
  • EEPROM: 1 KB
  • Szybkość zegara: 16 MHz
  • Wymiary: 17mm x 43mm

Ten szczególny wariant Arduino Nano to czarna konstrukcja Robotdyn. Interfejs jest przez wbudowany port MicroUSB, który jest kompatybilny z tymi samymi kablami MicroUSB, które są używane w wielu telefonach komórkowych i tabletach.

Arduino Nanos ma wbudowany układ mostka USB/szeregowego. W tym konkretnym wariancie układ mostkowy to CH340G. Zwróć uwagę, że istnieją różne inne typy układów mostków USB/szeregowych używanych na różnych typach płyt Arduino. Te układy umożliwiają komunikację portu USB komputera z interfejsem szeregowym w układzie procesora Arduino.

System operacyjny komputera wymaga sterownika urządzenia do komunikacji z układem USB/szeregowym. Sterownik umożliwia komunikację IDE z płytą Arduino. Konkretny sterownik urządzenia, który jest potrzebny, zależy zarówno od wersji systemu operacyjnego, jak i typu układu USB/szeregowego. Dla układów CH340 USB/Serial dostępne są sterowniki dla wielu systemów operacyjnych (UNIX, Mac OS X lub Windows). Producent CH340 dostarcza te sterowniki tutaj.

Po pierwszym podłączeniu Arduino Nano do portu USB komputera powinna zaświecić się zielona lampka zasilania, a wkrótce po tym niebieska dioda LED powinna zacząć powoli migać. Dzieje się tak, ponieważ Nano jest fabrycznie załadowany programem BLINK, który działa na zupełnie nowym Arduino Nano.

Krok 5: Zintegrowane środowisko programistyczne Arduino (IDE)

Zintegrowane środowisko programistyczne Arduino (IDE)
Zintegrowane środowisko programistyczne Arduino (IDE)

Jeśli nie masz jeszcze zainstalowanego Arduino IDE, możesz pobrać je ze strony Arduino.cc

Jeśli chcesz uzyskać dodatkowe informacje wstępne dotyczące pracy w ekosystemie Arduino, sugerujemy zapoznanie się z instrukcjami dla warsztatu HackerBoxes Starter Workshop.

Podłącz Nano do kabla MicroUSB, a drugi koniec kabla do portu USB w komputerze, uruchom oprogramowanie Arduino IDE, wybierz odpowiedni port USB w IDE pod narzędzia>port (prawdopodobnie nazwa z wchusb w nim). Wybierz również "Arduino Nano" w IDE w menu narzędzia>płyta.

Na koniec załaduj przykładowy kod:

Plik->Przykłady->Podstawy->Mrugnięcie

W rzeczywistości jest to kod, który został wstępnie załadowany do Nano i powinien teraz działać, aby powoli migać niebieską diodą LED. W związku z tym, jeśli załadujemy ten przykładowy kod, nic się nie zmieni. Zamiast tego zmodyfikujmy nieco kod.

Przyglądając się uważnie, widać, że program włącza diodę, czeka 1000 milisekund (jedna sekunda), wyłącza diodę, czeka kolejną sekundę, a potem robi to wszystko od nowa - na zawsze.

Zmodyfikuj kod, zmieniając obie instrukcje „delay(1000)” na „delay(100)”. Ta modyfikacja spowoduje, że dioda LED będzie migać dziesięć razy szybciej, prawda?

Załadujmy zmodyfikowany kod do Nano, klikając przycisk PRZEŚLIJ (ikona strzałki) tuż nad zmodyfikowanym kodem. Obejrzyj poniżej kod, aby uzyskać informacje o stanie: „kompilowanie”, a następnie „przesyłanie”. W końcu IDE powinno wskazać „Przesyłanie zakończone”, a dioda LED powinna migać szybciej.

Jeśli tak, to gratulacje! Właśnie zhakowałeś swój pierwszy fragment kodu osadzonego.

Po załadowaniu i uruchomieniu wersji z szybkim miganiem, dlaczego nie sprawdzić, czy możesz ponownie zmienić kod, aby dioda LED szybko mignęła dwukrotnie, a następnie odczekać kilka sekund przed powtórzeniem? Spróbuj! Co powiesz na inne wzory? Kiedy już uda Ci się zwizualizować pożądany rezultat, zakodować go i obserwować, jak działa zgodnie z planem, zrobiłeś ogromny krok w kierunku zostania kompetentnym hakerem sprzętowym.

Krok 6: Serwosilniki

Serwosilniki
Serwosilniki

Serwosilniki są zazwyczaj sterowane serią powtarzających się impulsów elektrycznych, w których szerokość impulsów wskazuje położenie serwomechanizmu. Sygnał sterujący z modulacją szerokości impulsu (PWM) jest często generowany przez zwykły mikrokontroler, taki jak Arduino.

Małe serwomechanizmy hobbystyczne, takie jak MG996R, są połączone standardowym połączeniem trójprzewodowym: dwa przewody do zasilania prądem stałym i jeden przewód do przenoszenia impulsów sterujących. Serwa MG996R mają zakres napięcia roboczego 4,8-7,2 VDC.

Krok 7: Montaż mechanizmu panoramowania i pochylania

Montaż mechanizmu obrotu i pochylenia
Montaż mechanizmu obrotu i pochylenia
  1. Wyciągnij oba serwa MG996R z ich toreb i na razie odłóż na bok dołączone akcesoria.
  2. Do każdego serwomechanizmu dołącz aluminiowy, okrągły łącznik serwo. Zwróć uwagę, że sprzęgi są dostarczane w oddzielnych torebkach od serw. Łącznik jest bardzo ciasno spasowany. Zacznij od wciśnięcia łącznika na koniec wyjścia serwa, a następnie wkręć śrubę w środkowy otwór. Dokręć gwint, aby naciągnąć łącznik na wyjście serwa.
  3. Zwróć uwagę, że są trzy wsporniki do zespołu pan-tilt - dwa wsporniki skrzynkowe i jeden wspornik U.
  4. Zamontuj jeden z wsporników skrzynkowych na aluminiowym kole dla jednego z serwomechanizmów. Nazwiemy to serwo serwo pan. Ustaw wspornik skrzynkowy jego środkową ścianą na aluminiowym okręgu tak, aby pozostałe dwie ściany wspornika skrzynkowego były skierowane na zewnątrz serwomechanizmu patelni. Użyj środkowych otworów na środkowej ścianie wspornika skrzynki. Taki układ powinien umożliwić serwomechanizmowi obracanie dołączonego wspornika skrzynkowego po uruchomieniu.
  5. Umieść drugi serwomechanizm (serwo przechyłu) w wsporniku skrzynkowym, który jest przymocowany do aluminiowego koła serwa patelni. Użyj co najmniej dwóch śrub i nakrętek, aby przymocować serwomechanizm przechylania – po jednej z każdej strony.
  6. Trzymając wspornik w kształcie litery U, włóż mosiężne „łożysko” od wewnętrznej strony litery U przez jeden z dużych otworów montażowych.
  7. Umieść wspornik w kształcie litery U z łożyskiem na serwomechanizmie przechylania, który znajduje się wewnątrz wspornika skrzynkowego, tak aby drugi duży otwór montażowy obrotu (ten bez łożyska) był wyrównany z aluminiowym okręgiem na serwomechanizmie przechyłu.
  8. Użyj śrub, aby przymocować wspornik w kształcie litery U do aluminiowego koła po jednej stronie wspornika w kształcie litery U.
  9. Po drugiej stronie wspornika w kształcie litery U dokręć pojedynczą śrubę przez łożysko i do małego otworu w wsporniku skrzynkowym wewnątrz. Powinno to umożliwić późniejszy obrót wspornika w kształcie litery U wokół wspornika skrzynkowego, gdy zostanie uruchomiony serwomechanizm przechylania.

Krok 8: Montaż zespołu Pan i Tilt

Montaż zespołu obrotu i przechyłu
Montaż zespołu obrotu i przechyłu
Montaż zespołu obrotu i przechyłu
Montaż zespołu obrotu i przechyłu

Pozostały wspornik skrzynki można przykręcić do małego kawałka drewnianej deski, aby służyć jako podstawa kamery, jak pokazano na zdjęciu. Na koniec serwomechanizm jest montowany w pozostałym wsporniku skrzynkowym za pomocą co najmniej dwóch śrub i nakrętek, aby przymocować serwomechanizm do wspornika - po jednej z każdej strony.

Krok 9: Podłącz i przetestuj zespół Pan i Tilt

Podłącz i przetestuj zespół obrotu i przechyłu
Podłącz i przetestuj zespół obrotu i przechyłu

Aby okablować serwa zgodnie ze schematem, najszybciej jest po prostu odciąć oryginalne złącza żeńskie od serwomechanizmów, a następnie użyć kilku żeńskich końcówek zworek DuPont, aby podłączyć sygnał i linie uziemienia do pinów Nano.

Nano nie ma wystarczającego prądu na zasilaniu 5V, aby zasilić serwa z USB, dlatego zalecane jest dodatkowe zasilanie. Może to być wszystko w zakresie 4,8-7,2 V. Na przykład cztery baterie AA (w szeregu) sprawdzą się ładnie. Dobrym wyborem jest również zaopatrzenie ławki lub brodawki ścienne.

Prosty przykładowy kod Arduino załączony tutaj jako PanTiltTest.ino może być użyty do testowania sterowania dwoma serwami z monitora szeregowego na Arduino IDE. Ustaw szybkość transmisji monitora tak, aby odpowiadała 9600bps ustawionej w przykładowym kodzie. Wprowadzenie wartości kąta pomiędzy 0 a 180 stopni odpowiednio ustawi serwa.

Na koniec moduł kamery USB (lub inny czujnik) można zamontować do wspornika U zespołu obrotu i przechyłu do użytku w aplikacjach śledzących.

Krok 10: Śledzenie twarzy za pomocą OpenCV

Image
Image
Zhakuj planetę
Zhakuj planetę

System śledzenia twarzy wizyjny maszynowy można wdrożyć, łącząc podsystemy, jak pokazano na schemacie blokowym. Szkic SerialServoControl dla Arduino można znaleźć w poniższym samouczku Sparkfun wraz z powiązaną demonstracją za pomocą OpenCV, Processing, Arduino, kamery USB i zespołu Pan/Tilt do śledzenia ludzkiej twarzy. Demo wykorzystuje dwa serwa do zmiany położenia kamery, aby utrzymać twarz wyśrodkowaną w kadrze wideo, nawet gdy użytkownik porusza się po pokoju. Na przykład kod w C#, sprawdź repozytorium GitHub dla wideo CamBot.

Krok 11: Zhakuj planetę

Jeśli podobał Ci się ten Instrucable i chciałbyś, aby pudełko z projektami elektroniki i technologii komputerowych było dostarczane co miesiąc prosto do Twojej skrzynki pocztowej, dołącz do nas i SUBSKRYBUJ TUTAJ.

Dotrzyj i podziel się swoim sukcesem w komentarzach poniżej lub na stronie HackerBoxes na Facebooku. Daj nam znać, jeśli masz jakieś pytania lub potrzebujesz pomocy. Dziękujemy za bycie częścią HackerBoxes. Prosimy o nadsyłanie swoich sugestii i opinii. HackerBox to TWOJE pudełka. Zróbmy coś wspaniałego!

Zalecana: