Głowa robota InMoov

Głowa robota InMoov

Każdy pasjonat robotyki z pewnością zna robota humanoidalnego InMoov. Opracował go francuski rzeźbiarz i projektant Gael Langevin. Na stronie https://www.inmoov.fr znajduje się szczegółowy opis jego budowy. Ponieważ budowa całego robota jest dosyć czasochłonna oraz kosztowna, w pierwszej kolejności można zbudować jego głowę i w jej wnętrzu umieścić komputer Raspberry Pi, sterownik serwomechanizmów, czujnik temperatury oraz elementy odpowiedzialne za odtwarzanie dźwięku i rozpoznawanie mowy. Dzięki takiemu rozwiązaniu można szybko przejść do pisania programu sterującego dla robota i poznawać jego niesamowite możliwości.

Podstawowe parametry:
  • Raspberry Pi Zero 2W,
  • zawiera sterownik serwomechanizmów, czujnik temperatury oraz elementy odpowiedzialne za odtwarzanie dźwięku i rozpoznawanie mowy,
  • kluczowe elementy konstrukcji można wydrukować na drukarce 3D.

Budowę urządzenia można podzielić na dwie części. Pierwsza część to głowa robota InMoov zbudowana według opisu umieszczonego na stronie https://www.inmoov.fr. Druga część dotyczy elementów dodanych do pierwotnego projektu. Są to elementy montażowe i podzespoły elektroniczne oraz dodatkowo wydrukowane części pokazane na fotografiach 1…3. Aby zmieścić komputer Raspberry Pi oraz sterownik serwomechanizmów w głowie robota, konieczna była zmiana serwomechanizmu HS 805BB typu gigant na serwomechanizm Feetech FI7635M typu standard. Żeby to zrobić, zaprojektowano specjalny adapter zaprezentowany na fotografii 4. Projekty wszystkich dodatkowo zaprojektowanych części można pobrać na stronie https://github.com/ZW-Robotics/Glowa_robota_InMoov_STL. Z kolei uchwyt do przymocowania kamery dla komputera Raspberry Pi jest dostępny na stronie https://www.thingiverse.com/thing:2197719/files.

Fotografia 1. Uchwyty na dodatkowe podzespoły elektroniczne
Fotografia 2. Szkielet i podstawa stojaka
Fotografia 3. Zewnętrzne części obudowy stojaka
Fotografia 4. Wygląd zaprojektowanego adaptera do serwomechanizmu

Budowa i działanie

Schemat ideowy układu elektronicznego znajduje się na rysunku 1. Do zasilania zastosowano dwa zasilacze. Pierwszy, podłączony do złącza ZAS1, zasila serwomechanizmy, drugi, podłączony do złącza ZAS2, zasila pozostałe podzespoły elektroniczne. Wyeliminowano w ten sposób zakłócenia pochodzące od serwomechanizmów, które mogłyby zaburzyć pracę komputera Raspberry Pi. Element WŁ1 to główny włącznik zasilania.

Rysunek 1. Schemat ideowy układu elektronicznego

Do komputera Raspberry Pi opisanego jako MOD1, poprzez port microUSB, podłączona jest karta dźwiękowa. Do karty dźwiękowej za pośrednictwem kabli zakończonych wtykami jack 3,5 mm dołączono mikrofon M1 oraz wzmacniacz audio MOD2, z którego wzmocniony sygnał trafia do głośnika G1. Moduł MOD3 jest odpowiedzialny za sterowanie serwomechanizmami SERWO1...5, które poruszają ruchomymi częściami głowy. Układ scalony U1 to czujnik temperatury, który do poprawnej pracy potrzebuje rezystora R11.

Wygląd stojaka uatrakcyjniono, umieszczając w jego przedniej części napis InMoov, który po włączeniu napięcia zasilania jest automatycznie podświetlany przez diody LED1...10. Rezystory R1...10 ograniczają płynący przez nie prąd.

Montaż i uruchomienie

Po pobraniu plików STL ze strony https://www.inmoov.fr można zacząć drukowanie części. Do tego celu zastosowano drukarkę Creality Ender 5 oraz filament PLA. Mając wydrukowane części, niezbędne elementy montażowe oraz podzespoły elektroniczne, możliwy jest wstępny montaż głowy, co zostało pokazane na fotografii 5.

Fotografia 5. Wstępny montaż głowy robota InMoov

Kolejnym krokiem jest wydrukowanie części dodanych do pierwotnego projektu, dostępnych na stronie https://github.com/ZW-Robotics/Glowa_robota_InMoov_STL. Do przykręcenia wszystkich dodatkowych uchwytów oraz złożenia stojaka potrzebne są różnego rodzaju śruby M3 oraz wkręty do tworzywa.

Przed wkręceniem śrub M3 konieczne jest nagwintowanie otworów. Po przymocowaniu wszystkich elementów elektronicznych można wykonać pomiędzy nimi połączenia. Większość połączeń jest wykonanych za pomocą gniazd i wtyków BLS oraz JST-SM. Jest też kilka połączeń lutowanych oraz przykręcanych.

Wszystkie szczegóły zostały uchwycone na fotografiach 6…10. Obwód zasilający sterownik serwomechanizmów wykonano przewodami o przekroju 0,75 mm², pozostałe przewody mają przekrój 0,35 mm². Rezystory ograniczające prąd płynący przez diody LED1…10 zostały przylutowane bezpośrednio do ich dodatnich wyprowadzeń, następnie całość zaizolowano osłoną termokurczliwą. Aby łatwiej było zorganizować przewody, zostały one ze sobą skręcone i spięte opaskami kablowymi.

Fotografia 6. Połączenia pomiędzy złączami zasilania i włącznikiem głównym
Fotografia 7. Połączenia do diod LED
Fotografia 8. Połączenia wewnątrz stojaka
Fotografia 9. Podłączenie głośnika
Fotografia 10. Połączenia wewnątrz głowy robota

Oprogramowanie

Przed rozpoczęciem pisania programu sterującego konieczne jest zainstalowanie systemu operacyjnego dla komputera Raspberry Pi Zero. Zadanie to ułatwia program Raspberry Pi Imager, który pobrano ze strony https://tiny.pl/c725f. Jest dostępnych wiele wersji systemu operacyjnego, co pokazuje rysunek 2, jednak najbardziej odpowiednia okazała się wersja Raspberry Pi OS (Legancy).

Rysunek 2. Dostępne wersje systemu operacyjnego

Po zakończeniu instalacji systemu operacyjnego w oknie konfiguracyjnym widocznym na rysunku 3 trzeba włączyć niezbędne interfejsy. Na rysunku 4 zaprezentowano niezwykle przydatne narzędzie, jest to program VNC Viewer, dzięki któremu jest możliwe zdalne połączenie z komputerem Raspberry Pi.

Rysunek 3. Okno konfiguracyjne do włączenia interfejsów
Rysunek 4. Wygląd programu VNC Viewer

Wystarczy wpisać adres IP komputera Raspberry Pi, który możemy uzyskać, wpisując w terminalu polecenie

pi@raspberrypi:~ $ hostname -I

oraz hasło dostępu ustalone w trakcie instalacji systemu. Za pomocą terminala należy także zainstalować potrzebne biblioteki języka Python – listę poleceń pokazano na listingu 1.

Listing 1. Polecenia instalujące niezbędne biblioteki języka Python
pi@raspberrypi:~ $ sudo pip3 install adafruit-circuitpython-servokit
pi@raspberrypi:~ $ pip3 install w1thermsensor
pi@raspberrypi:~ $ sudo pip3 install SpeechRecognition
pi@raspberrypi:~ $ sudo pip3 install PyAudio
pi@raspberrypi:~ $ sudo apt-get install flac
pi@raspberrypi:~ $ sudo apt-get install espeak

Aby syntezator mowy prawidłowo wymawiał polskie litery, konieczne jest otwarcie pliku, w którym zapisane są odpowiednie ustawienia, za pomocą polecenia:

pi@raspberrypi:~ $ sudo nano
/usr/lib/arm-linux-gnueabihf/espeak-data/voices/default

Następnie trzeba wstawić w jego treści następujące linie:

name default
language pl
gender male
intonation 2

Żeby nie uszkodzić ruchomych części robota, został napisany specjalny program, dzięki któremu określa się maksymalne dopuszczalne pozycje serwomechanizmów. Okno programu zostało pokazane na rysunku 5. Otrzymane dane należy następnie zastosować w trakcie pisania programu sterującego.

Rysunek 5. Program określający maksymalne dopuszczalne pozycje serwomechanizmów

Gotowy program sterujący można pobrać za pomocą terminala, wpisując polecenie:

pi@raspberrypi:~ $ git clone https://github.com/ZW-Robotics/Program_sterujacy_InMoov.git

Aby program działał poprawnie, komputer Raspberry Pi musi mieć aktywne połączenie z internetem. W powłoce języka Python można obserwować, w jaki sposób program interpretuje wypowiedziane przez użytkownika słowa. Więcej informacji na temat opisanego projektu oraz film prezentujący działanie zaprogramowanej głowy robota InMoov znajduje się na stronie internetowej www.zw-robotics.pl.

Zygmunt Wypich
zygmunt.wypich@zw-robotics.pl

Wykaz elementów:
Rezystory:
  • 100 Ω 10 szt.
  • 4,7 kΩ
Półprzewodniki:
  • dioda LED 5 mm biała matowa 10 szt.
  • czujnik temperatury DS18B20
Pozostałe:
  • Raspberry Pi Zero 2W
  • karta pamięci microSD o pojemności 16 GB
  • oryginalna kamera dla Raspberry Pi 8 Mpx
  • adapter do kamery dla Raspberry Pi Zero o długości 150 mm
  • przewód OTG microUSB – USB o długości 140 mm
  • karta dźwiękowa USB
  • wzmacniacz audio PAM8403
  • głośnik o mocy 1 W i rezystancji 8 Ω oraz średnicy 50 mm
  • mikrofon pojemnościowy o średnicy 6 mm
  • sterownik serwomechanizmów Adafruit PCA9685
  • serwomechanizm TowerPro SG92R 2 szt.
  • serwomechanizm PowerHD 1201MG 3 szt.
  • serwomechanizm Feetech FI7635M
  • zasilacz z wtykiem DC 5,5×2,5 mm o napięciu wyjściowym 5 V i wydajności prądowej 4 A
  • zasilacz z wtykiem DC 5,5×2,1 mm o napięciu wyjściowym 5 V i wydajności prądowej 2 A
Elementy mechaniczne i połączeniowe:
  • wtyk jack 3,5 mm z przewodem o długości 200 mm
  • wtyk microUSB z przewodem o długości 100 mm
  • wtyk jack 3,5 mm z przewodem o długości 70 mm
  • gniazdo DC 5,5×2,5 mm
  • gniazdo DC 5,5×2,1 mm
  • gniazdo BLS 1 pin 2 szt.
  • gniazdo BLS 2 piny 3 szt.
  • gniazdo BLS 3 piny 3 szt.
  • gniazdo BLS 5 pin 2 szt.
  • pin żeński BLS 27 szt.
  • gniazdo JST-SM 3 piny 5 szt.
  • pin żeński JST-SM 15 szt.
  • wtyk JST-SM 3 pin 5 szt.
  • pin męski JST-SM 15 szt.
  • przełącznik dwupozycyjny podwójny o wymiarach 24×21 mm
  • przewody 0,34 mm² biały, czarny, czerwony
  • przewody 0,75 mm² czarny, czerwony
  • listwa zaciskowa 2 piny
  • tulejka na przewód o przekroju 0,34 mm² i długości 8 mm 4 szt.
  • tulejka na przewód o przekroju 0,75 mm² i długości 6 mm 2 szt.
  • tulejka na przewód o przekroju 2,5 mm² i długości 8 mm 4 szt.
  • wkręt do tworzywa z łbem stożkowym 2×6 mm 4 szt.
  • wkręt do tworzywa z łbem walcowym 2,2×6 mm 40 szt.
  • wkręt do tworzywa z łbem walcowym 3×12 mm 15 szt.
  • śruba z łbem stożkowym M3×8 mm 6 szt.
  • śruba z łbem walcowym M3×5 mm 4 szt.
  • śruba z łbem walcowym M3×12 mm 7 szt.
  • nakrętka M3 7 szt.
Artykuł ukazał się w
Elektronika Praktyczna
sierpień 2023
DO POBRANIA
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów