1. Cel:

Celem pracy jest wykonanie projektu urządzenia mechatronicznego lub   kluczowego elementu urządzenia mechatronicznego, zbudowanego na bazie podzespołów LEGO oraz przeprowadzenie procesu projektowego zgodnego z rzeczywiście używanym procesem projektowania układów mechatronicznych.

Założenia projektowe:


2. Mechanika:

Etapy realizacji projektu w programie Fusion 360.

  1. Dyskusja mająca na celu ustalenia koncepcji projektu oraz początkowych wymagań projektowych.
  2. Stworzenie projektu rzeczywistego z posiadanych przez zespół klocków lego technic oraz ksylofonu.
  3. Przeprowadzenie pierwszych testów modelu rzeczywistego.
  4. Na podstawie modelu rzeczywistego stworzenie pierwszego prototypu CAD projektu.
  5. Stworzenie modelu CAD ksylofon w programie Fusion 360.
  6. Przeprowadzenie testów prototypu modelu CAD.
  7. Dyskusja oraz analiza zaistniałych problemów (m.in niepożądane bujanie się silnika górnego czy problem z blokującym się przewodem silnika).
  8. Wprowadzenie wniosków oraz rozwiązań z punktu 6 do modelu rzeczywistego.
  9. Testy modelu rzeczywistego po wprowadzonych zmianach.
  10. Zatwierdzenie poprawnego działania modelu rzeczywistego.
  11. Aktualizacja modelu CAD,
  12. Wykonanie animacji w programie Fusion 360 ukazujących działanie modelu.
  13. Stworzenie rysunków, widoków rozstrzelonych projektu itp.
  14. Stworzenie końcowej dokumentacji technicznej projektu.

Specyfikacja techniczna robota:


Opis ogólny

Model robota składa się z trzech par kinematycznych - ramienia uderzającego, ramienia obrotowego oraz nieruchomej podstawy. Z racji dwóch stopni swobody wyposażony jest w dwa silniki lego 54787, a sterowanie odbywa się za pomocą Lego NXT 53788.

Zasięg ramienia jest ograniczony i może ono wykorzystać tylko część ksylofonu, zależną od ustawienia robota. W celu zaangażowania całego instrumentu należy dodać kolejne roboty. Mimo wszystko jeden robot ma wystarczający zasięg ramienia do zagrania całej gamy dźwiękowej na ksylofonie, co pozwala na odtworzenie dowolnego utworu lub piosenki. 

Rys. 1 Widok poglądowy całego projekt

Rys. 2 Widok “eksplodujący” robota

Rys. 3 Rzuty prostokątne, rzut izometryczny oraz wymiary gabarytowe robota.

Rys.4 Rzuty prostokątne, rzut izometryczny oraz wymiary gabarytowe ksylofonu


Spis wykorzystanych klocków

Nazwa

Ilość

Lego 53788, Mindstorm NXT

1

Lego 32523, Technic, Liftarm 1 x 3 Thick

4

Lego, 55615, Technic, Pin Connector Perpendicular 3x3 Bent with 4 pins

5

Lego 53787, Electric Motor - NXT

2

Lego, 32270, Technic, Gear 12 Tooth Double Bevel

1

Lego, 3705, Technic, Axle 4

1

Lego, 32526, Technic, Liftarm 3x5 L-shape Thick

7

Lego, 3673, Technic, Pin without Friction Ridges Lengthwise

36

Lego, 32316, Technic, Liftarm 1 x 5 Thick

5

Lego, 6558, Technic, Pin Long with Friction Ridges Lengthwise

10

Lego, 32271,Technic Liftarm 1 x 9 Bent thick

4

Lego, 32136, Technic, Pin double with axle hole

1

Lego, 53793, Electric, Sensor, Touch NXT

1

Lego, 32525, Technic, Liftarm 1x11

4

Lego, 41678, Technic, Axle and Pin Connector Perpendicular Double Split

1

Lego, 42003, Technic Axle and Pin Connector Perpendicular 3-L with 2 Pin Holes

3

Lego, 32140, Technic, Liftarm 2x4 L-shape Thick

1

Lego, 48989, Technic, Pin Connector Perpendicular 3L with 4 Pins

4

Lego, 32062, Axle 2 Notches

Lego, 32524, Technic, Liftarm 1 x 7 Thick

3

Lego, 4459, Technic, Pin with Friction Ridges Lengthwise

20

Lego, 32498, Technic, Gear 36 Tooth Double Bevel

1

Lego, 3749, Technic, Axle Pin with without Friction Ridges Lengthwise

11 

Lego, 32054, Technic, Pin long with friction ridges lengthwise and stop bush

1

Lego, 32073, Technic, Axle 5

1

Lego, 3713, Technic Bush

1

Lego, 3536, Technic, Axle and Pin Connector

1

Lego, 6536, Technic, Axle and Pin Connector Perpendicular,

2

Lego, 32009, Technic, Liftarm 1 x 11.5 Double Bent Thick

1

Lego, 32277, Technic, Liftarm, 1x13 Thick

2

Suma: 

136

Opis silników

Do realizacji zadania robota zostały użyte silniki lego 54787. 

Rys.4 Pogląd wyglądu silnika

Rys. Zależność natężenia prądu do momentu obrotowego. Źródło: https://www.philohome.com/nxtmotor/nxtmotor.htm#hubdismantle


Opis ramienia obrotowego

Pierwszy silnik użyty w podstawie robota realizuje obrót ramienia w celu wyboru uderzanej płytki, dźwięku na ksylofonie. W celu zwiększenia dokładności i minimalizacji luzów występujących na silniku, użyta została przekładnia redukująca 1:3. Składa się ona z koła zębatego o 12 zębach (napędowe) oraz z koła o 36 zębach.  Pomimo zmniejszenia prędkości obrotu ramienia, jest ona nadal wystarczająca, nawet do gry szybszych utworów, jednocześnie zmniejszając obciążenia dynamiczne przy ruszaniu i zatrzymywaniu. 

Omawiany reduktor pod ramieniem obrotowym.

Wał większego koła zębatego stanowiącego oś obrotu ramienia, jest z dołu połączony z niewielkim wysięgnikiem. Jego rolą jest aktywacja krańcówki położonej w nieruchomej podstawie. Czynność ta jest wykonywana każdorazowo po uruchomieniu robota, w celu poprawnego zorientowania położenia ramienia względem bazy.

Krańcówka wraz z wysięgnikiem na wale koła zębatego (elementy zaznaczone na niebiesko).

Aby możliwie zmniejszyć moment bezwładności ramienia, napęd mechanizmu podnoszenia dźwigni został umieszczony bezpośrednio nad przekładnią - w ten sposób największa masa jest położona bezpośrednio w osi obrotu.

Cała konstrukcja ramienia obrotowego wsparta jest na dwóch punktach obrotu: omawianej powyżej osi napędzającej od dołu, oraz drugiej położonej nad silnikiem. Główną rolą umieszczenia górnego punktu obrotu, jest zwiększenie stabilności konstrukcji w trakcie zmiany przyspieszenia oraz uderzenia dzwonków przez dźwignię.

Wspomniane powyżej punkty obrotu w podstawie i ponad ramieniem, podświetlone są na niebiesko.


Mechanizm podnoszenia dźwigni

Umieszczona na ramieniu dźwignia musi mieć nadaną wystarczającą prędkość w momencie uderzania płytki, aby wydała dźwięk. Z tego powodu, zdecydowano o wykorzystaniu sprężystej gumki jako napęd nadający prędkość przed uderzeniem. Natomiast silnik, podnosi dźwignie poprzez trzpienie pełniące rolę krzywki. Umieszczenie dwóch trzpieni w wale silnika, pozwala na zwiększenie częstotliwości kolejnych uderzeń.

W takiej konfiguracji ramię jest odchylane z położenia równowagi i kiedy ruch trzpieni uwalnia ramię, wpada ono w gasnące drgania o takiej amplitudzie, że może uderzyć w płytkę z siłą wymaganą do wydania dźwięku a następnie wrócić do położenia równowagi. Kiedy drgania stopniowo gasną ramię zostaje podniesione do wyjściowej pozycji przez drugi trzpień.

Napęd dźwigni z wykorzystaniem elastycznej gumki (zaznaczonej kolorem pomarańczowym).

Układ działający jako krzywka (elementy współpracujące oznaczone na niebiesko), w trakcie podnoszenia dźwigni.

3. Elektronika:

Sterowanie robotem

Głównym założeniem całego projektu było napisanie takiego oprogramowania, które pozwoliłoby na proste dodawanie kolejnych melodii bez dużych zmian w kodzie. Zdecydowaliśmy się więc na zapis różnych utworów jako pliki tekstowe w odpowiednim formacie. Software ograniczyliśmy do ustawiania ramienia w odpowiedniej pozycji, a następnie obrotu drugim silnikiem w celu uderzenia w ksylofon. 

W celu spełnienia tych założeń na kontroler NXT wgraliśmy oprogramowanie leJOS NXJ (java), które pozwala na wydawanie poleceń kontrolerowi bezpośrednio przez port USB. Cały software sterujący został napisany w języku Java, co pozwoliło na łatwy sposób sterowania robotem, wygodny odczyt danych z pliku tekstowego oraz stworzenie przejrzystego interfejsu graficznego.

W momencie startu oprogramowania rozpoczyna się kalibracja robota, która polega na obracaniu się w lewo głównego silnika do momentu wciśnięcia krańcówki. Powoduje to zapamiętanie pozycji bazowej, względem której obliczane są położenia wszystkich płytek.

W celu wygodnego sterowania robotem oraz odpowiedniego ustawienia każdej z pozycji stworzyliśmy proste GUI posiadające wszystkie niezbędne opcje dostępne za pomocą przycisków.

Jedno ramię robota pozwala na zagranie dźwięków od C1 do C2 (jest ich w sumie 8). W oknie znajduje się 8 przycisków przypominających ksylofon, po kliknięciu, których robot zagra odpowiedni dźwięk. 

W klasie Movements zostały zapisane domyślne pozycje wszystkich płytek, więc teoretycznie zaraz po starcie robot powinien móc zagrać żądaną melodię. Krzywe ustawienie robota lub ksylofonu może jednak doprowadzić do nieprawidłowego uderzania w poszczególne płytki. Z tego względu dodaliśmy opcję ręcznego ustawienia każdej zapamiętanej pozycji poprzez GUI. 

W tym celu w interfejsie graficznym umieściliśmy następujące przyciski:


Zapis maszynowy nut

a) Melodia

Aby zapisać melodię potrzebny jest jakiś zapis, który określałby kolejność wydawanych dźwięków.


Mamy 7 podstawowych dźwięków w gamie c-dur: C, D, E, F, G, A oraz H. Ósmy ton jest powtórzoną toniką, czyli powtórzonym C. Każdy kolejny dźwięk następuje w tej samej kolejności.

Każda oktawa (czyli zakres tych 7 dźwięków) ma swoją nazwę aby je rozróżnić. Dzwonki posiadają zakres dźwięków przechodzący przez 3 oktawy: małą (dźwięki g, a, h), razkreślną (dźwięki c1, d1, e1, f1, g1, a1, h1), oraz dwukreślną (dźwięki c2, d2, e2, f2, g2, a2).

Taki zapis zostawiono w kodzie maszynowym dla robota, z lekką modyfikacją. Aby ustandaryzować to, że dwa znaki odpowiadają za wysokość dźwięku, do dźwięków oktawy małej dodano 0. Wtedy każda blaszka dzwonków będzie miała kolejno oznaczenie: g0, a0, h0, c1, d1, e1, f1, g1, a1, h1, c2, d2, e2, f2, g2, a2.

Dodatkowo zapis xx, jako zapis pauzy.


b) Rytm

Aby zapisać rytm potrzeba określić długość dźwięku. Standardowo możemy wyróżnić następujące nuty: cała nuta, półnuta, ćwierćnuta, ósemka, szesnastka itd.

Zasada ich odgrywania jest następująca: przyjmujemy że cała nuta trwa jednostkę czasu T, wtedy półnuta odtwarzana jest przez czas ½ T, ćwierćnuta ¼ T, ósemka ⅛ T, itd. Gdzie w mianowniku ułamka zawsze znajduje się kolejna potęga dwójki.

W zapisie maszynowym jako pierwszy znak podawać wartość mianownika ułamka długości, które podano wcześniej. Wtedy zapis dźwięku c1 o długości całej nuty zapisany jest jako 1c1, półnuty 2c1, ćwierćnuty 4c1, ósemki 8c1. Nuty krótsze od ósemki, takie jak szesnastka, odrzucono, zakładając, że nie bylibyśmy w stanie zbudować takiego układu, który grałby na tyle szybko.

Uwagi:

Nuty z kropką

Kropkę przy nutach zapisuje się po to, aby przedłużyć jej trwanie o połowę. Wtedy np. ćwierćnuta z kropką trwa ¼ T + ⅛ T = ⅜ T.

Rozwiązano poprzez podawanie liczby o 1 większej niż standardowy mianownik ułamka. W ten sposób ćwierćnuta z kropką dźwięku c1 zapisana jest jako 5c1.

Niestandardowe długości dźwięku (nie zrealizowano)

Nuty można łączyć ze sobą w dowolnej konfiguracji, aby uzyskać dowolną długość dźwięku. Na rysunku jest zapisane połączenie półnuty i ósemki, dzięki czemu długość takiego dźwięku wynosi ½ T + ⅛ T = ⅝ T.

Można pomyśleć o jakimś parametrze, który by określał niestandardową długość dźwięku. Np. jeśli pierwszym znakiem nie jest cyfra, tylko znak “x”, to wtedy po zapisie nuty znajdą się dwie liczby, które określają licznik i mianownik długości dźwięku względem T. Wtedy zapis jak na rysunku, byłby jednoznaczny z zapisem: “xe1 5 8”.

Nie zrealizowano jednak tego zapisu, bo można uzupełniać zapis pauzami i ze względu na specyfikę instrumentu, efekt będzie ten sam.

c) Tempo

Tempo określa długość parametru T. Tempo zwykle podaje się w uderzeniach na minutę (BPM). 

Taki zapis oznacza takie tempo, żeby w ciągu minuty zagrać idealnie 80 ćwierćnut. Można policzyć wtedy czas trwania ćwierćnuty w sekundach: 60/80 = ⅔ sekundy. (Aby policzyć parametr T należy pomnożyć razy 4: ⅔ * 4 = 8/3 = 2 ⅔ sekundy. Podczas programowania łatwiej posługiwać się parametrem T, a nie długością grania ćwierćnuty).

Wartość BPM podano w pierwszej linijce kodu.

d) Przykład

Zapis kodu na przykładzie fragmentu barki:

80

5xx

5c1

5a1

2a1 //ćwierćnuta z kropką + ósemka = półnuta (⅜ + ⅛ = 4/8 = ½)

8a1

8h1

8c2

8h1

8a1

5g1

3g1 //dwie ćwierćnuty z kropką = półnuta z kropką (⅜ + ⅜ = 6/8 = ¾)

4. Zarządzanie:

Struktura zarządzania projektem przedstawiona została na poniższym diagramie.

Zespół składał się z dwóch drużyn odpowiedzialnych za elementy mechaniczne oraz elektroniczne projektu. W celu zapewnienia porządku komunikacji, każda z tych drużyn posiadała lidera, odpowiedzialnego za podział zadań wśród poszczególnych członków. Ponadto, liderzy dbali o poprawność oraz jakość wykonywanych zadań. Jednoosobowy zespół, którego zadaniem było fizyczne wykonanie robota, wspomagał prace obu drużyn. Osoba ta odpowiedzialna była za dopilnowanie zgodności efektów z postawionymi założeniami koncepcyjnymi oraz weryfikację wykonalności modelu CAD. Team Leader natomiast dbał o odpowiednie tempo prac, poprzez wyznaczanie terminów wykonania postępów oraz  informował wszystkich członków o obecnej sytuacji wynikającej z konsultacji projektowych. W celu odpowiedniego zmotywowania każdego uczestnika, wprowadzona została tabela, umieszczona na początku dokumentu, w której każdy rozliczał się ze zrealizowanych zadań.


Komunikacja

W celu zapewnienia odpowiedniej komunikacji utworzono dedykowany zespół na platformie Teams.

Kanał ten przede wszystkim służył do przeprowadzania konferencji poszczególnych drużyn, pozwalał na przeprowadzenie dyskusji na temat prowadzonych prac. Na kanale ogólnym umieszczano najważniejsze aktualności. Stanowił również bazę danych plików tworzących projekt. 


Trello

Trello jest intuicyjnym narzędziem do organizacji zespołowej. To przede wszystkim wirtualna tablica Kanban, na której umieszczano karty z zadaniami dla poszczególnych zespołów. Poniżej przedstawiono trzy tablice dotyczące wybranych aspektów projektu.

Tablica dotycząca wykonania dokumentacji.

Tablica dotycząca części mechanicznej.

Tablica dotycząca części elektronicznej


Gantt

Graf ten stosowany był głównie w celu podziału zespołu na poszczególne zadania, oraz rozplanowanie ich w czasie. Poniżej przedstawiono jego fragment.

Github 

W celu kontroli wersji tworzonego oprogramowania, zastosowano serwis github.

(https://github.com/PawelMiera/LEGO_Musician)


5. Rzeczywisty model:

Podczas projektowania robota bardzo pomocna okazała się możliwość testowania różnych konfiguracji na bieżąco. Być może jest to wyjątek od reguły, że prościej i taniej jest coś zaprojektować niż wykonać. Klocki Lego zostały stworzone do tego, żeby dało się je łatwo składać i rozkładać. 

Prace prowadziliśmy w ogólnym cyku: ogólna koncepcja - prototyp z lego - testy i wnioski - powtórz. Gdy efekt był zadowalający budowaliśmy model CAD. Mimo, że czasami problemów nie dało się zauważyć od razu i model CAD wymagał zmian to można stwierdzić, że prototypowanie odgrywało bardzo ważną rolę w rozwoju projektu. 

Bez zmontowania rzeczywistego modelu nie mogliśmy wnioskować (a przynajmniej byłoby to dużo trudniejsze) o takich aspektach jak ułożenie kabli czy wpływ napięcia gumki na ruch ramienia. 

Poprawne dobranie geometrii ramienia było kluczowe dla działania całego robota ponieważ dla skutecznego uderzenia w płytkę ramię musi uderzyć z dość dużą siłą raz a następnie powrócić do położenia wyjściowego. Dla teoretycznego przewidzenia tego trzeba by było znać wiele parametrów takich jak współczynniki tarcia na złączach i współczynnik sprężystości gumki.

Sposób ułożenia kabli także miał duży wpływ na poprawne działanie. W poprzedniej wersji projektu podpora górnego łożyska wieży była bliżej osi przez co przy próbie bazowania siła sprężystości kabla uniemożliwiała wciśnięcie krańcówki, przez co projekt wymagał zmian.




6. Podsumowanie:

Wykonany projekt robota spełnia przedstawione na początku wymagania. Zarówno model CAD jaki i oprogramowanie zostało poprawnie zaprojektowane, czego dowodem jest rzeczywisty model urządzenia. Robot z powodzeniem odgrywa wskazane utwory, błędy podczas działania są pomijalnie małe i nie wpływają na ogólny odbiór melodii. Model urządzenia składa się z wielu klocków, co ze względu na ograniczoną moc wykorzystanych komputerów, nie pozwalało na wykonanie kompletnego zestawu, w którym osobne moduły odpowiadałyby za cały zakres klawiszy instrumentu. Zastosowana koncepcja i przedział dostępnych dźwięków mimo wszystko pozwala zagrać wszystkie przewidziane sekwencje, dlatego projekt ten może posłużyć jako baza do bardziej rozbudowanego układu. Robot można również zaadaptować do gry na niektórych instrumentach klawiszowych.

7. Linki:

Model CAD projektu:

https://a360.co/3lZacqD

https://a360.co/3n6MsSH  (koncepcja dwóch robotów)

Youtube

https://youtu.be/vXAMyevRrb4

https://youtu.be/uXphwf6PLRo

https://youtu.be/dvTyofb-Ooc

Pineterest: 

https://pin.it/5MToeMi

Github: 

https://github.com/PawelMiera/LEGO_Musician