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:

  • Złodziej porusza się do przodu, dopóki nie napotka odpowiedniej „okazji”,
  • Ponieważ każdą nadarzającą się okazję należy łapać, to samo robi nasz robot,
  • Żeby nie budzić podejrzeć odwraca się i powoli udaje w przeciwnym kierunku,
  • Od tego momentu jeśli tylko znajdzie się w bazie (czujnik światła reagujący na wysokie natężenie światła) kończy „misję”,
  • Jeżeli ktoś za nim krzyknie zaczyna uciekać. Ponieważ mamy do czynienia z doświadczonym złodziejem, nie wykorzystuje całego potencjału prędkości na samym początku,
  • Jeśli tylko zauważy, że ręka sprawiedliwości zaczyna go dosięgać, zaczyna przyspieszać,
  • Kiedy tylko poczuje gorący oddech na swoim karku, zatrzymuje się gwałtownie, żeby zdezorientować przeciwnika, rzuca „towar” na ziemię i zaczyna uciekać najszybciej jak to możliwe,
  • Ponieważ prawdziwy złodziej nigdy nie daje za wygraną, nasz robot ucieka dopóki starczy mu sił (w bateriach), bądź dopóki nie znajdzie się w oświetlonym miejscu (oznacza to dom, bądź policyjną izbę przesłuchań z ostrymi światłami skierowanymi prosto w oczy).

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

pl/dydaktyka/jsi/2009/sprawozdania/jsi20091216-11c.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0