Spis treści

Sprawozdanie z laboratorium 3

1 Wstęp

Celem trzeciego, ostatniego laboratorium było zapoznanie się z bardziej zaawansowanymi funkcjami jakie oferuje środowisko dostarczone do zestawu LEGO Mindstorms.

W ramach bliższego zapoznawania się z zestawem i jego możliwościami mieliśmy oprogramować jeden bądź więcej z proponowanych algorytmów. Po długiej i konstruktywnej dyskusji na temat, jaki algorytm powinniśmy wybrać, doszliśmy do porozumienia. Wybraliśmy drogę, która oferowała największą możliwość zapoznania się z funkcjami oferowanymi przez zestaw, czyli algorytm złodziej (w pewnych kręgach mówi się, że wpływ na decyzję mógł mieć kolega z Nowej Huty, jednak jest to oczywista nieprawda).

2 Algorytm

Na zajęciach stworzyliśmy tylko jeden algorytm. Nie było to spowodowane tym, że nie mieliśmy ochoty bądź odpowiednich umiejętności do tego. Było wręcz przeciwnie (zwłaszcza w przypadku chęci). Po stworzeniu podstawowej wersji algorytmu stworzyliśmy dwie kolejne. W pełnej wersji jednak opisany został wyłącznie ostatni algorytm. Zawiera on bowiem funkcjonalność i możliwości poprzednich i nie było by konstruktywnym kilkukrotne powtarzanie tej samej informacji (było by za to bardzo nudne).

2.1 Wersja noob

Pierwotna wersja algorytmu ukazywała mało profesjonalnego złodzieja. Po tym jak udało mu się pochwycić „towar” odwracał się i zaczynał uciekać. Jednak jak tylko usłyszał, że goni go policja, zatrzymywał się. Prawdziwy i odważny złodziej tak nie postępuje, co dało nam podwaliny do kolejnej wersji.

2.2 Wersja normal

Druga wersja już odważniejszego złodzieja zakładała, że po przechwyceniu „towaru” nasz robot odwracał się, a następnie powoli zaczynał się oddalać. Jak usłyszał za sobą krzyk policjanta, bądź jakiegoś uczciwego obywatela zaczynał uciekać szybciej. Dopiero przy drugim zawołaniu zatrzymywał się i czekał aż dosięgnie go ręka sprawiedliwości.

2.3 Wersja ultimate

Ostateczna wersja naszego programu powstała dzięki wiedzy i doświadczeniu kolegi z grupy, zamieszkującego część Krakowa popularnie zwaną Nową Hutą. Kwestia gdzie i w jaki sposób uzyskał wiedzę i doświadczenie nie została jednak w pełni wyjaśniona (i mamy nadzieje, że tak pozostanie).

W celu zaimplementowania wszystkich opcji naszego algorytmu należało wykonać drobną modyfikację i przenieść czujnik odległości na tył robota. Po delikatnym tuningu nasz zrobotyzowany złodziej przedstawia się następująco:

Schemat postępowania naszego złodzieja można opisać w następujący sposób:

Implementacja powyższych kroków w środowisku Lego przedstawia się następująco:

Poniżej znajdują się filmiki przedstawiające złodzieja w akcji:

http://www.youtube.com/watch?v=OAxSQq9LEC8 - Pełnia możliwości

http://www.youtube.com/watch?v=_Cdo2vcyCQM - Szybki sukces

3 Podsumowanie

Nie wiemy jak zakończyła się misja naszego robo-złodzieja, jednak pewną wskazówką mogą być zdjęcia jakie otrzymaliśmy od niego jakiś czas po sprawozdaniu.

Laboratorium dostarczyło nam dużo zabawy związanej z wymyślaniem i wdrażaniem opracowanych rozwiązań. Ciekawym rozwinięciem dla danego algorytmu mogło by być dodanie współpracy pomiędzy dwoma robotami w celu efektywniejszego dostarczenia „towaru” do bazy.

Dodatkowo bardzo ciekawym urozmaiceniem laboratorium było by zwiększenie roli mechanika. Można by było to uzyskać poprzez podejście odwrotne niż prezentowane na laboratorium. Dostępny był by opis oraz algorytm, który trzeba by było przenieść na robota, którego dopiero należało by zbudować. Chociaż i tak najwięcej nauki i przyjemności mogło by dać faktyczne podzielenie zespołu na konstruktora i programistę.

W celu przedstawienia pełni możliwości zestawu LEGO Mindstorms, można by zaprezentować możliwości programowania na przykład z wykorzystaniem języka C. Środowisko LEGO Mindstorms NXT jest czasem dosyć irytujące (problemy ze ścieżkami, brak możliwości wyciągnięcia wszystkich elementów z pętli) i może część osób zniechęcić. Przedstawienie funkcjonalności robota, po napisaniu programu w C mogło by sprawić, że część osób zainteresowało by się głębiej tą tematyką. Dodatkowo ciekawe było by porównanie jakości sterowania i szybkości działania przy wykonywaniu programu stworzonego za pomocą dostarczonego środowiska oraz z wykorzystaniem innych środowisk.

4 Spakowany program

Ostateczny algorytm został spakowany i umieszczony w poniższym pliku:

zlodziej.rar