Projekt wykorzystuje robota Sharky, przygotowanego w ramach nauki Arduino oraz uczenia maszynowego z użyciem Teachable Machine od Google. Jest on stworzony dla uczniów szkół średnich w celu nauki podstaw działania AI. Uczniowie będą musieli zaprogramować zachowania robota na podstawie przypisanych klas, różniących się od siebie animacją, działaniem silników itp. W ramach projektu stworzyliśmy kod do uzupełnienia, ponieważ uczniowie nie mają odpowiedniej wiedzy, a przede wszystkim czasu, aby zaprogramować robota od zera. Przygotowaliśmy także uniwersalną instrukcję, która pozwala stopniowo oswoić się z tematem uczenia maszynowego, oraz kilka elementów potrzebnych do wykonania zadania. Wzorowaliśmy się na zabawce Furby, która reagowała na otoczenie, zmiany położenia i inne bodźce.
1. Robot sharky
- silniczki z oponami
- ESP32-CAM
-Model robota
2. 2 ekrany Oled
3. dedykowane elementy druku 3d - wykonany przez nas
1. Drukarka 3d - BambuLab A1
2. lutownica
3. śrubokręt
Projekt wykorzystuje robota Sharky, przygotowanego w ramach nauki programowania Arduino oraz wprowadzenia do zagadnień związanych z uczeniem maszynowym, z wykorzystaniem narzędzia Teachable Machine od Google. Został on stworzony z myślą o uczniach szkół średnich, którzy dopiero rozpoczynają swoją przygodę z elektroniką, programowaniem oraz sztuczną inteligencją. Głównym celem projektu jest pokazanie w przystępny i praktyczny sposób, jak działają podstawowe mechanizmy AI oraz w jaki sposób można połączyć je z fizycznym urządzeniem, takim jak robot.
W ramach zajęć uczniowie będą mieli za zadanie zaprogramować różne zachowania robota na podstawie wcześniej przygotowanych i przypisanych klas rozpoznawanych przez model uczenia maszynowego. Każda klasa może odpowiadać innemu zachowaniu robota, na przykład konkretnej animacji, reakcji świetlnej, dźwiękowi, zmianie położenia, ruchowi silników lub innemu sposobowi interakcji z otoczeniem. Dzięki temu uczniowie mogą zobaczyć, że sztuczna inteligencja nie jest jedynie abstrakcyjnym pojęciem, ale może mieć realne zastosowanie w urządzeniach, które reagują na dane wejściowe i podejmują określone działania.
Projekt został zaprojektowany tak, aby był możliwy do wykonania w warunkach szkolnych, nawet przy ograniczonym czasie oraz niewielkim doświadczeniu uczestników. Z tego powodu przygotowaliśmy kod do uzupełnienia, który stanowi bazę całego programu. Uczniowie nie muszą pisać wszystkiego od zera, ponieważ mogłoby to być dla nich zbyt trudne i czasochłonne na początkowym etapie nauki. Zamiast tego skupiają się na najważniejszych elementach: rozumieniu działania programu, przypisywaniu reakcji do konkretnych klas oraz modyfikowaniu zachowania robota według własnych pomysłów.
Oprócz kodu przygotowaliśmy również uniwersalną instrukcję, która krok po kroku prowadzi uczniów przez cały proces pracy z projektem. Instrukcja pozwala stopniowo oswoić się z tematyką uczenia maszynowego, od przygotowania danych i trenowania modelu w Teachable Machine, aż po wykorzystanie wyników klasyfikacji do sterowania robotem. Dzięki temu uczniowie mogą lepiej zrozumieć, czym są klasy, dane treningowe, rozpoznawanie wzorców oraz jak model AI może wpływać na działanie fizycznego urządzenia.
W projekcie uwzględniliśmy także kilka dodatkowych elementów potrzebnych do wykonania zadania, takich jak przygotowane fragmenty programu, przykładowe klasy zachowań oraz materiały pomagające w organizacji pracy. Całość została opracowana w taki sposób, aby uczniowie mogli skupić się nie tylko na technicznej stronie projektu, ale również na kreatywnym projektowaniu interakcji robota z otoczeniem. Ważnym elementem jest tu eksperymentowanie — uczniowie mogą testować różne reakcje, zmieniać parametry ruchu, dodawać animacje oraz obserwować, jak robot zachowuje się w zależności od rozpoznanej klasy.
Dużą część pracy nad projektem poświęciliśmy również na przygotowanie oraz dopracowanie elementów drukowanych w technologii 3D. Był to jeden z bardziej czasochłonnych etapów, ponieważ pojawiły się problemy związane z wymiarowaniem poszczególnych części. Obiekty, które musieliśmy wykonać, były bardzo małe, przez co nawet niewielkie różnice w wymiarach mogły powodować problemy z ich dopasowaniem, montażem lub poprawnym działaniem całej konstrukcji. Wymagało to wielu prób, poprawek modeli oraz ponownego drukowania elementów, aby uzyskać części odpowiednio dopasowane do robota i jego mechanizmów.
Problemy z drukiem 3D pokazały nam, jak ważna jest precyzja podczas projektowania elementów mechanicznych. Przy tak małych komponentach trzeba było zwracać uwagę nie tylko na same wymiary, ale także na tolerancje, grubość ścianek, sposób łączenia części oraz ograniczenia drukarki 3D. Każda niedokładność mogła sprawić, że element był zbyt luźny, zbyt ciasny albo nie spełniał swojej funkcji. Dzięki temu etapowi zdobyliśmy praktyczne doświadczenie związane z projektowaniem, testowaniem i poprawianiem modeli 3D, co okazało się równie ważne jak sama część programistyczna projektu.
Kolejnym dużym wyzwaniem było programowanie robota. Kod okazał się bardzo złożony, ponieważ obejmował wiele różnych funkcji odpowiedzialnych za obsługę silników, animacji, reakcji robota oraz komunikacji z modelem uczenia maszynowego. Całość liczyła ponad 1000 linijek kodu, co znacząco utrudniało analizę, poprawianie błędów oraz wprowadzanie nowych funkcji. Dla osób początkujących taka ilość kodu mogłaby być przytłaczająca, dlatego konieczne było uporządkowanie programu i przygotowanie jego uproszczonej wersji, którą uczniowie będą mogli uzupełniać bez konieczności rozumienia od razu całej struktury projektu.
Podczas pracy korzystaliśmy również ze starszych wersji kodu, załączonych w plikach, które pozwalały nam porównywać różne rozwiązania i sprawdzać, które fragmenty działały poprawnie, a które wymagały poprawy. Analiza wcześniejszych wersji była pomocna, ale jednocześnie czasochłonna, ponieważ wymagała prześledzenia wielu zmian i zrozumienia, w jaki sposób poszczególne części programu wpływały na działanie robota. Zdarzało się, że poprawienie jednego fragmentu kodu powodowało problemy w innym miejscu, dlatego testowanie i debugowanie było jednym z najważniejszych etapów całego projektu.
Inspiracją dla projektu była zabawka Furby, która reagowała na otoczenie, zmiany położenia, dotyk oraz inne bodźce, sprawiając wrażenie interaktywnego i „żywego” urządzenia. Podobnie jak Furby, robot Sharky ma być czymś więcej niż tylko prostą konstrukcją elektroniczną. Jego zadaniem jest reagowanie na określone sygnały, wykonywanie zaprogramowanych zachowań i angażowanie użytkownika w interakcję. Dzięki temu projekt staje się bardziej atrakcyjny dla uczniów, ponieważ łączy naukę z zabawą, kreatywnością i możliwością obserwowania natychmiastowych efektów własnej pracy.
Całość ma na celu pokazanie, że podstawy sztucznej inteligencji można poznawać w sposób praktyczny, ciekawy i zrozumiały. Uczniowie, pracując z robotem Sharky, uczą się nie tylko programowania i podstaw elektroniki, ale również logicznego myślenia, rozwiązywania problemów oraz projektowania interakcji człowiek–maszyna. Projekt pokazuje też, że tworzenie działającego urządzenia wymaga połączenia wielu dziedzin: programowania, elektroniki, modelowania 3D, testowania oraz analizy błędów. Dzięki temu może być dobrym wprowadzeniem do bardziej zaawansowanych tematów związanych z robotyką, automatyką, projektowaniem technicznym, analizą danych i sztuczną inteligencją.
Kod w zipie poniżej