Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20081217-08b [2009/01/13 22:51] jsi08 utworzono |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20081217-08b [2019/06/27 15:50] (aktualna) |
=== 1. Cel ćwiczenia === | === 1. Cel ćwiczenia === |
| |
Celem ćwiczenia było zapoznanie się z podstawowymi możliwościami oferowanymi przez system LEGO Mindstorms przez zbudowanie prostego robota mobilnego i zaprojektowanie algorytmu jego działania. | Celem ćwiczenia było skonstruowanie robota oraz odpalenie na nim prostych algorytmów sterowania zbudowanych w środowisku LEGO NTX. |
=== 2. Realizacja ćwiczenia === | === 2. Realizacja ćwiczenia === |
| |
== 2.1. Budowa robota == | == 2.1. Budowa robota == |
Nasz robot został zbudowany zgodnie z opisem zawartym w instrukcji Quickstart dołączonej do zestawu, ponadto został on udoskonalony o elementy umożliwiające załadunek oraz przewóz kulki, | Zbudowany przez nas robot oparty jest o model zawarty w instrukcji Quickstart dołączonej do zestawu. Dodatkowo wyposażyliśmy go w następujący zestaw czujników i manipulatorów pozwalających realizacje ciekawych zadań: |
a także elementy obronne służące do odpierania ataków wrogich robotów, chcących przejąć ładunek. | * czujnik dotyku |
| * czujnik odległości |
Poniżej przedstawiono zbudowane warianty robota: \\ | * sterowany silnikiem podnośnik ładunku (w naszym przypadku kulki) |
\\ | \\ |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:cywilny.jpg|}} \\ | Poniżej przedstawiono zdjęcia zbudowanego robota:\\ |
//Rysunek 1. Cywilna wersja robota// \\ | |
\\ | \\ |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:bojowy.jpg|}} \\ | {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:photo.jpg|}} \\ |
//Rysunek 2. Bojowa wersja robota// | //Rysunek 1. Widok z przodu// \\ |
| \\ |
| {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:photo(3).jpg|}} \\ |
| //Rysunek 2. Widok z boku// \\ |
| \\ |
| {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:photo(4).jpg|}} \\ |
| //Rysunek 2. Robot z ładunkiem// |
| |
== 2.2. Projektowanie algorytmu == | == 2.2. Projektowanie algorytmu == |
Algorytmy tworzone były przy pomocy środowiska NXT, gdzie metodą drag-and-drop mogliśmy szybko skonstruować działający algorytm z gotowych bloczków. | Algorytmy tworzone były przy pomocy środowiska NXT, gdzie metodą drag-and-drop mogliśmy szybko skonstruować działający algorytm z gotowych bloczków. Ze względu na znikomą ilość czasu spowodowaną koniecznością złożenia robota od postaw, a następnie rozebrania go, zrealizowaliśmy i przetestowaliśmy jedynie 2 algorytmy: |
| |
** 2.2.1. Patrol ** \\ | ** 2.2.1. Unik ** \\ |
Zaprojektowany algorytm prowadził robota po trajektorii kwadratu, powtarzając przejazd 2 razy. Realizacja algorytmu była trywialna i polegała na sterowaniu silnikami B i C odpowiedzialnymi za ruch kół robota. | Robot jedzie przed siebie aż do momentu napotkania przeszkody (wciśnięcie czujnika dotyku znajdującego się na specjalnie skonstruowanym wysięgniku) po czym cofa się (1 obrót kół napędowych), wydaje sygnał dźwiękowy, wykonuje zwrot o 90° w lewo i znów rusza przed siebie - od tego momentu algorytm jest powtarzany od początku. |
| |
** 2.2.2. Przewóz kulki ** \\ | ** 2.2.2. Ładunek ** \\ |
Zgodnie z naszym projektem robot wyposażony w widły przewozowe powinien: | Robot wyposażony w podnośnik ma za zadanie podjechać do rampy i zatrzymać się (czujnik odległości reagujący na specjalny pałąk na rampie), następnie podnieść ładunek (serwomechanizm manipulatora), wycofać (praca silników przez 2 sekundy), wykonać zwrot o 180° i odjechać. |
\\ | |
- dojechać do rampy – silniki napędowe B i C [Rysunek 3], \\ | |
- zatrzymać się w odległości ok. 4 cm od ściany – sensor ultradźwiękowy [Rysunek 4], \\ | |
- podnieść kulkę znajdującą się na rampie – silnik A, \\ | |
- wycofać wraz z ładunkiem, \\ | |
- obrócić się o 180O, \\ | |
- odjechać z pełną prędkością. \\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:rampa1.jpg|}} \\ | |
//Rysunek 3// \\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:rampa2.jpg|}} \\ | |
//Rysunek 4// | |
| |
| |
=== 3. Integracja i testy === | === 3. Integracja i testy === |
Kompilacja i załadowanie plików do bricka były bardzo proste dzięki pomocy środowiska NXT - pliki przesyłaliśmy przy pomocy interfejsu USB. System umożliwia również komunikację między autonomicznymi brickami (robotami) za pośrednictwem protokołu Bluetooth – niestety ze względu na ograniczony czas trwania laboratorium, nie zdążyliśmy zaimplementować i przetestować tego rozwiązania. W zrealizowanych testach okazało się, że przygotowane algorytmy działają poprawnie, jakkolwiek pewne problemy sprawiał sensor ultradźwiękowy, który przy każdej próbie inaczej oceniał odległość, w związku z czym występowały problemy z odpowiednim hamowaniem przed przeszkodą. Odpowiednia kalibracja sensora powinna poprawić zachowanie robota. Mimo opisanych powyżej problemów, udało się przeprowadzić kilka, zakończonych pełnym sukcesem, prób podjęcia i przeniesienia ładunku. | Testy algorytmu pierwszego przebiegły bez najmniejszych problemów - robot skutecznie 'odbijał' się od kolejnych przeszkód błądząc po terenie laboratorium. Podczas testowania algorytmu drugiego natrafiliśmy an 2 problemy: |
| - zbudowana rampa była niestabilnym podłożem dla kulki, która często spadała zanim robot zdążył załadować kulkę |
| - wysięgnik służący jako punkt odniesienia dla sensora odległości nie zawsze był wykrywany, przez co robot nie zawsze zatrzymywał się w żądanym miejscu (np. czasami przesuwał dość lekką rampę) - podejrzewamy że przyczyną tego jest fakt, że był za cienki (pojedyncza belka LEGO) |
| |
=== 4.Wnioski === | === 4.Wnioski i propozycje zmian === |
Budowa robotów z zestawu LEGO Mindstorms i tworzenie algorytmów przy pomocy środowiska NXT jest bardzo proste i daje dużo frajdy – algorytmy tworzy się na zasadzie intuicyjnego łączenia gotowych bloczków, przy czym nie ma jakichkolwiek problemów z komunikacją i niekompatybilnymi czujnikami – jedyne problemy na jakie możemy natrafić to, wspomniana w poprzednim punkcie, nieoprawna kalibracja czujników). Ponadto, podczas zajęć z zestawem można choć na chwilę powrócić do czasów dzieciństwa... | Rzeczą, która była najbardziej uciążliwa podczas zajęć laboratoryjnych, była konieczność budowania robota od podstaw, a następnie rozkładanie go na czynniki pierwsze. Zabiera to zdecydowanie zbyt wiele czasu, którego brakuje później na pisanie i testowanie faktycznie pouczających, a także ciekawych programów (budowanie klocków wg instrukcji to żadna filozofia). datego proponujemy pozostawienie robotów po zajęciach - kolejne grupy będą mogły dostosować go do swoich potrzeb przez wprowadzanie modyfikacji do konstrukcji bazowej. |
| |
=== 5.Załączniki === | === 5.Załączniki === |
Wraz ze sprawozdaniem załączamy plik do środowiska NXT - hitandrun.rbt zawierający algorytm | Plik do środowiska NXT - ladunek.rbt zawierający algorytm z punktu 2.2.1. |
z punktu | |
| |
\\ | {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:ladunek.rbt|}} |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:hitandrun.rbt.zip|}} | |