Serwisy partnerskie:
Close icon
Serwisy partnerskie

Inteligentny robot do rozpoznawania twarzy

Article Image
Elmax
Ten artykuł opisuje jak można zaprojektować inteligentnego robota, który potrafi rozpoznawać twarz Twoją lub innych stałych odwiedzających. Jeśli robot rozpozna prawidłowo, przywita się po imieniu.

Projekt może być wykorzystany do celów bezpieczeństwa poprzez streaming video na żywo wraz z tym systemem. Autorski prototyp używany do testów pokazany jest na fotografii 1.

Można użyć dowolnej maski twarzy, w tym dostępnej na rynku maski robota Tahta. W tym projekcie wykorzystano otwartoźródłową maskę twarzy robota InMoov, którą przedstawiono na fotografii 2.

Fotografia 1. Autorski prototyp podczas testów
Fotografia 2. Maska twarzy od robota InMoov
Wykaz elementów
Liczba
Symbol
Nazwa/opis/gdzie kupić
3
Cienkie metalowe pręty (7 cm)
1
Tekturowa lub drewniana podstawka do zamontowania głowy robota
1
Maska twarzy robota (InMoov lub podobny)

Montaż twarzy robota

Etapy montażu mogą się różnić w zależności od kształtu i wielkości głowy robota. Do testów użyliśmy głowy robota InMoov, stworzonej przy użyciu drukarki 3D. Możesz nawet wydrukować w 3D własną twarz i użyć jej jako głowy robota lub kupić wydrukowaną w 3D głowę robota z thingiverse.com.

Dwa moduły wyświetlacza OLED (DIS1 i DIS2) są używane jako oczy robota. Przylutuj oba moduły wyświetlacza i wykonaj odpowiednie połączenia. Upewnij się, że wyświetlacze OLED są dobrze przykręcone do okularu głowy robota, jak pokazano na rysunku 3. Połączenia wyświetlaczy OLED z Arduino są wymienione w tabeli poniżej.

Rysunek 3. Montaż głowy robota
Połączenie oled z arduino
Arduino Nano
OLED
GND
GND
5 V
VCC
A4
SDA
A5
SCL

Następnie należy ostrożnie zamontować kamerę Raspberry Pi (podłączoną do płytki Raspberry Pi) w pobliżu wyświetlaczy OLED. Przymocuj serwomechanizm w pobliżu ust głowy robota. Pozwoli to na otwieranie i zamykanie linii szczęk robota (patrz fotografia 4).

Fotografia 4. Serwomotor przymocowany do linii szczękowej robota

Podpora głowy robota

Mocno przymocuj drugi serwomotor do kartonowej lub drewnianej podstawy za pomocą śrub lub kleju na gorąco. Zapewni to ruch głowy robota w górę i w dół.

Aby stworzyć solidną podporę, przymocuj trzy cienkie metalowe pręty w pobliżu drugiego serwomotoru, tak jak do statywu aparatu fotograficznego. Przymocuj jeden koniec jednego z metalowych prętów do wału drugiego serwomechanizmu, a pozostałe dwa pręty do głowy robota, jak pokazano na fotografiach 5 i 6. W przedstawionym projekcie serwomotory służyły jako podpora; ruch szczęk i głowy nie był realizowany.

Fotografia 5. Drugi serwomechanizm umieszczony na kartonowej podstawie
Fotografia 6. Trzy metalowe pręty do podparcia

Finalna głowa robota z oczami, wykorzystująca dwa moduły wyświetlaczy OLED, będzie wyglądała jak na fotogafii 7.

Fotografia 7. Głowa robota z oczami OLED

Kodowanie

Kodowanie składa się z dwóch części: Kodowanie dla oczu robota za pomocą Arduino oraz kodowanie dla rozpoznawania twarzy za pomocą Raspberry Pi.

Kodowanie dla oczu robota. Przed rozpoczęciem pracy z kodem Arduino (smartface_recog.ino), przejdź do Library Manager w Arduino IDE i zainstaluj następujące biblioteki:

  • Adafruit GFX
  • SSD1306 OLED

Dodaj powyższe biblioteki Arduino do kodu za pomocą funkcji 'include', a następnie wstaw bitmapowy kod szesnastkowy dla oczu, jak pokazano na rysunku 8.

Rysunek 8. Bitmapa szesnastkowa w kodzie Arduino

Następnie utwórz funkcję loop(), która będzie wywoływała kody bitmap, aby pokazać je na wyświetlaczu OLED. Aby uczynić oczy bardziej interaktywnymi i żywymi, użyj funkcji random() (patrz rysunek 9).

Rysunek 9. Losowanie kodów bitmapy

Kodowanie dla rozpoznawania twarzy. Raspberry Pi służy do rozpoznawania osoby stojącej przed robotem (znanej lub nieznanej). Zainstaluj następujące biblioteki w Raspberry Pi dla środowiska Python3:

  • Numpy
  • Scipy
  • Open cv
  • Cv2
  • Face recognition
  • Espeak
  • Matplot
  • Keras

Aby zainstalować te biblioteki, należy postępować zgodnie z instrukcjami instalacji bibliotek dostępnymi w folderze dokumentacji każdej z nich.

Zaimportuj w kodzie Pythona trzy moduły: face recognition, cv2 i numpy, jak pokazano na rysunku 10. Utwórz różne tablice do rozpoznawania twarzy i nazwisk. Upewnij się, że w kodzie znajdują się nazwy plików graficznych wszystkich znanych osób (które mają być rozpoznawane) i przechowuj je w folderze do poprawnego rozpoznawania twarzy (patrz rysunek 11).

Rysunek 10. Kod Pythona do rozpoznawania twarzy
Rysunek 11. Uwzględnienie w kodzie nazwisk znanych osób

W następnej części kodu program dopasowuje twarz, która została uchwycona przez kamerę, do tablicy znanych twarzy. Jeśli twarz się zgadza, kod uruchamia funkcję syntezatora espeak.synth(), aby wywołać imię osoby przez głośnik podłączony do Raspberry Pi. Kod z funkcją 'espeak.synth()' jest pokazany na rysunku 12.

Rysunek 12. Kod z funkcją espeak.synth()

Połączenie z głośnikiem i kamerą

Aby uzyskać wyjście audio przez Raspberry Pi, podłącz wyjście audio TRRS (Aux) Raspberry Pi do TRRS(Aux) dowolnego głośnika ze wzmacniaczem. Podłącz moduł kamery Raspberry Pi do portu kamery obecnego na płytce Raspberry Pi.

Następnie włącz zasilanie płytki Arduino Nano połączonej z wyświetlaczami OLED poprzez pin 5 V Raspberry Pi. Twój robot rozpoznający twarze jest gotowy do pracy.

Procedura testowa

Po zakończeniu podłączania sprzętu i konfiguracji oprogramowania, zrestartuj Raspberry Pi.

Otwórz skrypt rozpoznawania twarzy (FaceRecoginitionv1.py) w terminalu Raspberry Pi i uruchom go. Powinieneś być w stanie zobaczyć ruchy oczu robota poprzez wyświetlacze OLED.

Jeśli staniesz przed kamerą, robot rozpozna twoją twarz. Wywoła Twoje imię, a także wyświetli je na ekranie komputera, jak pokazano na rysunku 13. Jeśli twoje imię nie jest zawarte w kodzie, na ekranie pojawi się komunikat „nieznany”.

Rysunek 13. Wykrywanie twarzy z wyświetlaniem imienia na ekranie komputera
Wideo
Do pobrania
Download icon Inteligentny robot do rozpoznawania twarzy - kod źródłowy
Firma:
AUTOR
Źródło
www.electronicsforu.com
Udostępnij
Zobacz wszystkie quizy
Quiz weekendowy
Czujniki temperatury
1/10 Temperatura to
UK Logo
Elektronika dla Wszystkich
Zapisując się na nasz newsletter możesz otrzymać GRATIS
najnowsze e-wydanie magazynu "Elektronika dla Wszystkich"