2025-08-28

Prototyp głowy Zervidjanny

Pierwszy etap budowy głowy Zervidjanny — od koncepcji mechanizmu szczęki, przez skanowanie 3D i modelowanie części, aż po montaż serwa, sprężynowy docisk oraz pierwsze testy reakcji na obraz z kamery.

prototyp głowy / szczęka / widzenie maszynowe

Od zwykłego pomysłu do głowy, która zaczyna reagować

Ten wpis zbiera w jedną całość etap budowy prototypu głowy Zervidjanny ze sklejki. Zaczęło się niewinnie: miała powstać szczęka, którą można otwierać i zamykać jak prosty chwytak. Szybko okazało się jednak, że taka głowa nie jest tylko kawałkiem mechaniki. To miejsce, w którym spotyka się konstrukcja, serwomechanizmy, kamera, detekcja obiektów, sterownik i trochę tej dziwnej robotycznej osobowości, którą chciałbym nadać Zervidjannie.

Dlatego zamiast pojedynczego testu powstał mały, kompletny system. Najpierw koncepcja i wymagania, potem szkice, skanowanie kości, model 3D, projekt CAD, cięcie laserem, montaż, poprawki wytrzymałościowe, własny sterownik serwa i na koniec integracja z widzeniem maszynowym. Brzmi jak plan na spokojny wieczór? Oczywiście, czyli w praktyce kilka etapów walki z mechaniką, Pythonem, PWM-em i własnym optymizmem.

Prototyp głowy Zervidjanny wykonany ze sklejki
Docelowy efekt tego etapu: prototyp głowy i szczęki wykonany ze sklejki, z mechanizmem zamykania, sprężyną i naciągiem linki.

Cel tego etapu

Chodziło o sprawdzenie, czy da się zbudować kompaktową szczękę inspirowaną głową zwierzęcia, która będzie nie tylko wyglądać sensownie, ale też faktycznie wykona pracę: otworzy się, złapie obiekt, przytrzyma go i będzie mogła reagować na dane z kamery albo na sygnał mowy.

  • mechanika szczęki w realnej skali, a nie tylko ładny render;
  • napęd serwem z odciążeniem przez elementy mechaniczne;
  • miejsce na rozwój widzenia maszynowego i przyszłą integrację z AI;
  • prototyp z materiału, który da się szybko wyciąć, poprawić i znowu przetestować.

Koncepcja: głowa ma być mechanizmem, czujnikiem i trochę twarzą robota

Na początku lista pomysłów rosła szybciej niż miejsce w czaszce. W głowie chciałbym docelowo zmieścić kamery, mikrofony, głośnik, czujniki odległości, być może dodatkowe czujniki środowiskowe, a sama szczęka miałaby pełnić rolę chwytaka. Teoretycznie można by zrobić zwykły uchwyt techniczny, ale wtedy nie byłaby to już Zervidjanna, tylko kolejny manipulator udający szczypce.

Pierwsza koncepcja zakładała wykorzystanie linek, rolek i wielobloczka podobnego do rozwiązań, które pojawiły się w projekcie nogi. Pomysł był kuszący, bo pozwalał zwiększyć siłę docisku. Problem w tym, że szczęka ma być nie tylko mocna, ale też szybka. Jeśli kiedyś ma poruszać się w rytm mowy albo reagować ekspresyjnie, nie może działać jak dźwig portowy uruchamiany raz na minutę.

Szkice koncepcyjne głowy i mechanizmu szczęki
Pierwsze szkice koncepcyjne głowy, mechanizmu szczęki, prowadzenia linki, rolek oraz osi obrotu.

Pierwsza selekcja pomysłów: ładne na kartce to jeszcze nie znaczy dobre w prototypie

Po kilku analizach zostały wymagania, które naprawdę miały znaczenie: szczęka musi szybko się otwierać i zamykać, generować rozsądny docisk, nie niszczyć złapanych obiektów, mieścić się w bardzo ciasnej przestrzeni i najlepiej dawać się później wykorzystać jako element wizualizacji mowy. Brzmi prosto tylko do momentu, w którym zaczyna się rysować rzeczywiste położenie serwa, osi, dźwigni i punktów mocowania.

Przez chwilę rozważałem sprzęgło cierne i dodatkową linkę z dyneemy, która po kontakcie z obiektem miałaby mocniej dociągać szczękę. Technicznie ciekawy patent, ale liczba elementów zaczęła rosnąć za szybko. Im więcej rolek, linek i regulacji, tym większa szansa, że prototyp będzie pięknie wyglądał na schemacie, a w praktyce będzie wymagał trzech rąk do uruchomienia.

Widzenie maszynowe: żeby szczęka wiedziała, na co patrzy

Równolegle do mechaniki ruszyły testy kamer i detekcji obiektów. Docelowo głowa nie ma poruszać szczęką losowo, tylko reagować na to, co widzi. W pierwszych próbach najważniejsze było wykrycie obiektu, określenie jego klasy, wyznaczenie środka ramki i przygotowanie danych, które później można przekazać do sterownika.

Testowałem klasyczną detekcję, segmentację oraz rozpoznawanie twarzy. Szczególnie ciekawy jest embedding twarzy, czyli zapis cech osoby jako wektor w przestrzeni latentnej. Dla człowieka to tylko ciąg liczb, ale dla programu to coś w rodzaju odcisku twarzy. W przyszłości głowa będzie mogła dzięki temu wiedzieć, kto do niej podchodzi, a nie tylko że w kadrze znajduje się jakaś osoba.

Moduły kamer przygotowane do testów widzenia maszynowego
Moduły kamer przygotowane do testów obrazu, detekcji obiektów i przyszłej integracji w głowie Zervidjanny.
Test detekcji obiektów i rozpoznawania twarzy
Testy widzenia maszynowego: ramki detekcji, klasy obiektów i segmentacja.

Skala 1:1, czyli najpierw trzeba wiedzieć, jak duża ma być ta głowa

Żeby nie projektować czegoś zupełnie oderwanego od anatomii, użyłem rzeczywistych kości jako punktu odniesienia. Najpierw próbowałem przenieść kształt ręcznie na papier, ale szybko wyszło, że takie rysowanie jest dobre do ogólnego kierunku, a nie do precyzyjnego projektowania. Przy tak ciasnym układzie każdy milimetr ma znaczenie.

Dlatego kolejnym krokiem było skanowanie 3D czaszki, szczęki i elementów kręgosłupa. Skan dostarczył bazy do modelowania, ustawienia osi obrotu i sprawdzenia, jak ruch szczęki może wyglądać w przestrzeni. Modele ze skanera oczywiście nie są idealne: mają artefakty, dziury i całą masę geometrii, którą trzeba poprawiać ręcznie. Ale jako baza pod projekt mechaniczny okazały się bardzo przydatne.

Skanowanie 3D czaszki i szczęki
Stanowisko skanowania 3D.
Model w Blenderze z osiami obrotu i zakresem pracy szczęki
Cyfrowa przymiarka w Blenderze: dopasowana czaszka, szczęka i osie obrotu.

Zakres ruchu: szczęka ma się otwierać, ale nie jak krokodyl po dopalaczach

Po ustawieniu modelu w Blenderze i sprawdzeniu osi obrotu przyjąłem orientacyjny zakres pracy szczęki. Naturalna anatomia nie daje tu prostego ogranicznika mechanicznego, bo w zwierzęciu robią to mięśnie i ścięgna. W prototypie trzeba było więc samemu wybrać kompromis między wyglądem, funkcją chwytaka i miejscem na obiekt.

W praktyce założyłem, że szczęka ma otworzyć się na tyle, aby złapać przedmiot o sensownym rozmiarze, np. butelkę albo puszkę. Z prostego założenia 15 stopni zrobiło się około 25 stopni, bo jak już budować robota, to niech przynajmniej potrafi złapać coś większego niż listek.

Serwo: małe, niskie i zaskakująco mocne

Do napędu szczęki potrzebne było serwo z dużym momentem, dobrą prędkością, metalową przekładnią i możliwie kompaktową obudową. Po porównaniu kilku modeli wybór padł na Savox SB2262SG. To niskoprofilowe serwo wygląda niepozornie, ale parametrami bardzo pasuje do takiego prototypu.

Szybko pojawiło się jednak podstawowe pytanie: jak nie zmarnować jego momentu? Jeśli serwo działa bezpośrednio na oś szczęki, a koniec pyska jest daleko od osi obrotu, siła na zębach spada dramatycznie. Dwa serwa pomogłyby, ale nadal nie rozwiązują problemu utrzymywania obciążenia przez dłuższy czas. A ja nie chciałem szczęki, która jest silna tylko przez sekundę, po czym grzeje się i prosi o urlop.

Serwomechanizm Savox SB2262SG wybrany do napędu szczęki
Wybrany serwomechanizm Savox SB2262SG — niski profil, metalowa przekładnia i korzystny stosunek momentu do wymiarów.

Przeliczenia sprowadziły projekt na ziemię

Pierwotny pomysł z linką i sprzęgłem ciernym wyglądał ciekawie, ale im dalej wchodziłem w szczegóły, tym bardziej konstrukcja przypominała miniaturowy dźwig upchnięty w czaszce. Do tego dochodziły średnice rolek, przesunięcia linki, zakres 160 stopni na serwie i realny zakres około 25 stopni na szczęce. Matematyka zaczęła dość brutalnie pokazywać, że prostota będzie tu większą zaletą niż efektowny mechanizm.

Ostatecznie uprościłem układ: serwo zostało ustawione tak, aby przekazywało moment przez dźwignię w korzystniejszym punkcie, około 60 mm od osi szczęki. Dało to lepszy docisk na końcu pyska, a jednocześnie pozwoliło wyrzucić z projektu nadmiar linek i sprzęgło cierne. Mniej elementów to mniej okazji do awarii, a przy prototypie ze sklejki to naprawdę ma znaczenie.

Model mechanizmu szczęki w Autodesk Inventor
Model mechanizmu w Autodesk Inventorze.

Sprężyna przejmuje dyżur, czyli serwo nie musi cierpieć cały czas

Największym problemem nie było samo zamknięcie szczęki, tylko jej dłuższe przytrzymanie. Serwo bez przekładni samohamownej musi cały czas pobierać prąd, żeby utrzymać pozycję pod obciążeniem. To kiepski pomysł, jeśli robot miałby przez chwilę nieść obiekt albo trzymać go w pysku.

Rozwiązaniem problemu stał się mechanizm pomocniczy ze sprężyną. Serwo wykonuje ruch, ustawia dźwignię i inicjuje zamknięcie, a za docisk odpowiada mechanika. Dzięki temu szczęka może pozostać zaciśnięta nawet wtedy, gdy serwo nie musi już walczyć z pełnym obciążeniem. Mechanizm dostał też ręczną regulację naciągu, bo przy prototypie nie ma sensu udawać, że wszystko da się policzyć idealnie. Lepiej zostawić sobie śrubę regulacyjną i trochę zdrowego rozsądku.

LightBurn, sklejka i laser, czyli cyfrowy projekt wychodzi z ekranu

Po dopracowaniu modelu CAD przyszedł czas na przygotowanie elementów do cięcia. Autodesk Inventor swoje, a LightBurn swoje: trzeba było przenieść szkice, uwzględnić szerokość cięcia lasera i dobrać tolerancje tak, aby wpusty nie latały luźno, ale też nie wymagały młotka pneumatycznego.

Dla sklejki 3 mm wyszło, że laser zabiera swoje, więc otwory i wypusty trzeba było korygować dziesiątkami milimetra. Punkty montażowe zaprojektowałem jako kwadratowe, z myślą o montażu na wcisk. Chodziło o to, żeby prototyp dał się szybko składać, rozbierać i poprawiać bez zalewania wszystkiego klejem.

Przygotowanie elementów do cięcia laserem w LightBurn
Elementy przygotowane w LightBurn: układ części, warstwy cięcia oraz optymalizacja zużycia sklejki.

Pierwszy montaż: zapach palonej sklejki jako zapach postępu

Moment, w którym elementy pierwszy raz wychodzą z lasera, zawsze jest przyjemny. Nagle coś, co jeszcze chwilę wcześniej było szkicem i modelem 3D, leży na stole jako prawdziwy zestaw puzzli. Najpierw powstał montaż pod serwo i śrubę naciągową, potem baza czaszki, wzmocnienia, zęby i szczęka.

Najbardziej cieszyło to, że większość wpustów weszła ciasno i pewnie. To oznaczało, że czas poświęcony na tolerancje nie poszedł na marne. Oczywiście prototyp nadal wyglądał jak połączenie warsztatu, stomatologii i modelarstwa, ale zaczął mieć realny charakter. I właśnie o to chodziło.

Mechanizm naciągowy prototypu szczęki
Mechanizm naciągowy z serwem, dźwigniami i pierwszym złożeniem elementów ze sklejki.

Sklejka szybko przypomniała, że nie jest stalowa

Pierwsze testy bardzo szybko zweryfikowały piękne założenia. Sklejka 3 mm jest świetna do szybkiego prototypowania, ale przy większym naciągu linki zaczęła pokazywać swoje ograniczenia. Osie, rolki i dźwignie dostały obciążenia, których w cyfrowym modelu nie czuć. Na stole czuć je natomiast bardzo szybko.

Poprawki były konieczne. Wzmocniłem okolice osi szczęki, przebudowałem dźwignię pomocniczą i poprawiłem rolki, żeby linka mogła pracować bez rozrywania konstrukcji. To był dobry przykład prototypowania w praktyce: nie chodzi o to, żeby pierwsza wersja była idealna. Chodzi o to, żeby szybko pokazała, co trzeba zmienić.

Ulepszona wersja prototypu szczęki Zervidjanny
Ulepszona wersja głowy po wzmocnieniu elementów, poprawieniu rolek i dopracowaniu prowadzenia linki.

Sterownik serwa: zwykły odbiornik RC to za mało

Na potrzeby pierwszych prób serwo można było poruszać zwykłym odbiornikiem RC, ale to szybko przestało wystarczać. Wybrane serwo potrafi pracować szerzej niż klasyczne 50 Hz i impuls 1-2 ms. Ma zakres około 800-2200 µs, neutralne 1500 µs, bardzo małe pasmo martwe i możliwość pracy nawet do 333 Hz. Szkoda byłoby tego nie wykorzystać.

Dlatego powstał prosty sterownik na STM32. Na początek nie projektowałem nowej PCB, tylko wykorzystałem znaną płytkę ZL27ARM. Sterownik generuje PWM dla serwa, komunikuje się z komputerem przez USB/VCP i przyjmuje prostą ramkę tekstową. Nie ma tu jeszcze CRC, szyfrowania ani wielkiej filozofii protokołu, bo celem była pierwsza działająca wersja, a nie certyfikowany system dla rakiety kosmicznej.

Pierwsza wersja kodu ustawiała sygnał startowy 50 Hz i impuls 1500 µs, czyli neutralną pozycję serwa. Problem pojawiał się przy zmianie parametrów: przez błąd w aktualizacji rejestrów jeden okres sygnału potrafił zmienić częstotliwość i wypełnienie. Serwo pewnie by to przeżyło, ale sterownik nie powinien zachowywać się jak loteria.

Po poprawkach PWM zaczął trzymać zadaną częstotliwość i szerokość impulsu stabilnie. Do tego doszła komunikacja USB jako VCP, testowy odczyt ADC i ogólna refaktoryzacja kodu. Ruch serwa stał się wyraźnie bardziej responsywny niż przy klasycznym odbiorniku RC. To był moment, w którym mechanika i elektronika zaczęły działać jak jeden prototyp, a nie dwa osobne eksperymenty na tym samym stole.

Sterownik STM32 i pomiar sygnału PWM dla serwa
Sterownik STM32 podczas testów: konfiguracja PWM, komunikacja przez USB/VCP i pomiar sygnału analizatorem logicznym.

Film: pierwszy ruch szczęki

Pierwszy warsztatowy test otwierania i zamykania szczęki. Widać pracę mechanizmu, reakcję na sterowanie i zachowanie prototypu pod obciążeniem.

Integracja: szczęka reaguje na obiekt i może udawać mowę

Na koniec połączyłem oprogramowanie detekcji obiektów ze sterownikiem szczęki. Kamera wykrywa zadany obiekt, program ocenia jego położenie i na tej podstawie wysyła komendę do serwa. W praktyce szczęka potrafiła reagować na puszkę lub butelkę w kadrze. Model detekcji nie był specjalnie uczony pod taki scenariusz, więc tym bardziej cieszyło, że całość zaczęła działać sensownie.

Drugim testem była wizualizacja mowy. Szczęka nie służyła wtedy jako chwytak, ale jako ruchoma paszcza reagująca na audio. Trzeba było dobrać uśrednianie, progi, czasy reakcji i kilka parametrów, żeby efekt nie wyglądał jak przypadkowe klapanie. Nie jest to jeszcze finalny system mimiki, ale jako pierwszy krok wypada bardzo dobrze.

Próby chwycenia obiektu
Reakcja szczęki na wykryty obiekt podczas pierwszych testów chwytaka.
Naśladowanie mowy
Pierwsze próby „gadania” Zervidjanny — szczęka reaguje na sygnał audio i porusza się w rytm generowanej mowy.

Wniosek po tym etapie

Z prostego pomysłu na szczękę powstał pełny mini-etap rozwoju Zervidjanny. Jest mechanika, jest modelowanie, jest cięcie laserem, jest sterownik i jest pierwsza reakcja na obraz z kamery. Prototyp jest jeszcze warsztatowy, miejscami surowy i na pewno nie końcowy, ale pokazuje, że obrany kierunek ma sens.

Najcenniejsze jest to, że ten etap zostawił nie tylko działający model, ale też gotowy szablon pracy: koncepcja, szybki prototyp, brutalna weryfikacja, poprawki i integracja z oprogramowaniem. Dokładnie tak powinien rozwijać się projekt Zervidjanny.

Skrót techniczny prototypu

Obszar Co powstało
Mechanika Głowa ze sklejki, ruchoma szczęka, sprężynowe wspomaganie docisku, regulacja naciągu i wzmocnione elementy po testach.
Widzenie maszynowe Testy kamery, detekcji obiektów, segmentacji oraz rozpoznawania twarzy jako przyszłego kontekstu interakcji.
Napęd szczęki Serwomechanizm Savox SB2262SG, dźwignie, linka, rolki i układ odciążający serwo podczas trzymania obiektu.
Sterowanie Sterownik STM32 z generacją PWM, komunikacja USB/VCP i prosta ramka poleceń wysyłana z komputera.
Integracja Reakcja szczęki na obiekt z kamery oraz pierwsza próba ruchu paszczy w rytm mowy.

Co dalej?

Kolejne kroki to przede wszystkim dopracowanie mechaniki szczęki. W planie jest dodanie czujnika nacisku, aby układ mógł kontrolować siłę zgryzu, a nie tylko pozycję serwa. Do przemyślenia jest także dodatkowa oś ruchu szczęki na boki, dzięki której głowa mogłaby wykonywać bardziej naturalne i mniej mechaniczne ruchy.

Obecny prototyp ze sklejki spełnił swoje zadanie jako szybki model testowy, ale następna wersja powinna zostać przeprojektowana już jako pełniejszy model 3D. Ważne będzie rozplanowanie miejsca pod docelowe kamery, sensory, przewody, elektronikę oraz dodatkowe moduły efektowe, takie jak generator wysokiego napięcia. Na tym etapie chodzi nie tylko o wygląd, ale też o to, żeby wewnątrz głowy zostawić miejsce na dalszy rozwój.

W dalszej kolejności dojdą elementy, które nadadzą głowie więcej charakteru: język, prostsza lub bardziej rozbudowana mimika oraz lepsze wykończenie zewnętrzne. Jak na kawałek sklejki, serwo i kilka wieczorów walki z własnymi pomysłami, to całkiem dobry punkt startowy.