[[
✎ pl:dydaktyka:piw:2009:sprawozdania:piw20090429-09d
]]
aiWiki
Pokaż stronę
Ostatnie zmiany
Indeks
Zaloguj
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Laboratorium (zaawansowane algorytmy w PLNXT) ====== ===== Informacje ===== 29.04.2009, godz. 9.30\\ grupa w składzie: Joanna Jaworek, Eliasz Kańtoch, Piotr Figiel\\ Informatyka Stosowana IV rok\\ Robot: Henio\\ ===== Budowa robota ===== Na początku zajęć stworzyliśmy robota, który zawierał 4 sensory: dotyku, odległości, światło oraz dźwięku.\\ Umożliwiło nam to zaimplementówanie i sprawdzenie algorytmu: śledzenie linii.\\ Pod koniec zajęć, ponieważ zostało nam jeszcze trochę czasu, stworzyliśmy algorytm "wiezien".\\ Algorytm ten jest bardzo podobny do poprzedniego dlatego nic nie musieliśmy zmieniać w budowie robota.\\ Poniżej zamieszczamy zdjęcie naszego robota, który służył do rozwiązania algorytmu 1 i 2.\\ {{:pl:dydaktyka:piw2009:sprawozdania:29042009_robot1.jpg|}} ===== Konfiguracja stanowiska ===== W przeciwieństwie do pierwszych zajęć konfiguracja stanowiska przebiegła bardzo szybko i bez większych komplikacji. Podobnie jak na poprzednich zajęciach często występowały problemy z połączeniem, ale : * ponowne uruchamianie powłoki\\ * restart komputera\\ * ponowne zalogowanie\\ rozwiązywały ten problem.\\ Algorytmy zostały stworzone na bazie wiedzy z poprzednich laboratoriów oraz opisu poleceń w dostęnej dokumentacji.\\ ===== Algorytm 1- główne zadania ===== Jako pierwszy algorytm postanowiliśmy stworzyć algorytm-"śledzenie linii".\\ ==== Opis ćwiczenia/problemu ==== Celem algorytmu "śledzenie linii" było znajdowanie czanej linii, a następnie poruszanie się wzdłuż tej linii. Po naciśnięciu sensora dotyku robot powinien kończyć pracę.\\ Wymagane sensory: światło, dotyk.\\ W celu sprawdzenia poprawności algorytmu posłużyliśmy się planszą testową.\\ ==== Kod programu ==== <code prolog> :- consult('../plnxt.pl'). kolo :- nxt_go(200), trigger_create(_,not(check_light),[nxt_stop,nxt_rotate(200,20),kolo]). trigger_create(_,check_touch,[nxt_stop,nxt_close]), nxt_close. check_sound :- nxt_sound(Value,force), Value > 50. check_touch :- nxt_touch(Value,force), Value < 50. check_light :- nxt_light(Value,force), Value < 28. start :- nxt_open, nxt_go(400), trigger_create(_,check_sound,[nxt_stop,nxt_close]), trigger_create(_,check_light,[nxt_stop,kolo]). :- start. </code> Powyższy kod spełnia warunki zadania, a ponadto wyłącza się nie tylko podczas naciśnięcia sensoru dotyku, ale także podczas klaśnięcia.\\ ==== Zdjęcia+film ==== Zdjęcie:\\ {{:pl:dydaktyka:piw2009:sprawozdania:29042009_002_.jpg|}} Filmiki:\\ [[http://www.youtube.com/watch?v=urvj0cja4Yk&feature=channel_page]] ==== Wnioski i napotkane problemy ==== Napotkane problemy:\\ * Podczas tworzenia algorytmu największy problem sprawiły nam dwie sytuacje: zmiana natężenia światła na planszy, bardzo duże przedziały dla czarnej linii oraz cienie (projekt był tworzony przy oknie)\\ * Problem sprawiło nam także śledzenie linii, określenie wartości kątu dla którego następuje obrót robota. Problem został ostatecznie rozwiązany.\\ Wnioski: * tworzenie i programowanie robotów to ogromna frajda:) * Programowanie w plnxt nie jest intuicyjne, a na pewno nie jest proste:) * Częste problemy z łącznością, które jednak nie powinny występować-wina sprzętu, nie naszego "dream teamu";) ===== Algorytm 2 -zadanie dodatkowe ===== Po zaimplementowaniu i sprawdzeniu algorytmu 1 postanowiliśmy rozwiązać problem algorytmu "więzień".\\ ==== Opis ćwiczenia/problemu ==== Celem zadania "więzień" jest poruszanie się wewnątrz czarnej linii, aż do momentu znalezienia klucza- czerwonego koła. Po znalezieniu klucza robot ucieka z planszy-przekracza czarną linię sygnalizując to odpowienim dźwiękiem.\\ Wymagane sensory: światło, dźwięk.\\ W celu przetestowania aplikacji posłużyliśmy się testową planszą, tą samą co w zadaniu poprzednim .\\ ==== Kod programu ==== <code prolog> :-consult('plnxt.pl'). start:- nxt_open, ruch. ruch:- nxt_go(200), trigger_create(_,linia,[nxt_stop,wycofaj]), trigger_create(_,klucz,[nxt_stop,wyjedz]). wycofaj:- %nxt_go_cm(-200,20), nxt_rotate(300,160,force), ruch. wyjedz:- %nxt_go_cm(900, 40), nxt_play_tone(500,2000), nxt_go(200). linia:- nxt_light(Value,force), Value<50. klucz:- nxt_light(Value,force), Value>60, Value<73. </code> Problemy podczas testowania algorytmu: * różne natężenie światła, co powodowało złe działanie algorytmu, częste błędy. * trudno było znaleźć odpowienie przedziały natęźenia światła dla:linia, czerwone koło, obszar biały. Przedziały zagnieżdżały się. Efekt można zauważyć na załączonym filmie. Robot zawraca także na białym obszarze, gdzie znajduje się cień, który zahacza o przedział wartości dla czarnej linii. ==== Zdjęcia+film ==== Zdjęcie\\ {{:pl:dydaktyka:piw2009:sprawozdania:29042009_robot2.jpg|}} Filmik:\\ [[http://www.youtube.com/watch?v=-qHbXaKXn8U&feature=channel_page]]\\ ==== Wnioski i napotkane problemy ==== Podobnie jak w poprzednim algorytmie, także i tutaj wystąpiło wiele komplikacji, które opóźniały powstanie poprawnie działającego algorytmu.\\ Można do nich zaliczyć: * problemy z odczytem kolorów ( sensor światło). Problem został częściowo rozwiązany poprzez wyłączenie "czerwonej lampki". * projekt był tworzony przy oknie. Na planszy pojawiało się wiele cieni, które powodowały błędne działanie algorytmu. Zawracanie robota na ciemnych obszarach wewnątrz czarnej linii. * niemożliwe było takie ograniczenie wartości kolorów, aby algorytm poprawnie działał we wszystkich miejscach na planszy.\\ Wnioski:\\ * Algorytmy tworzone dzięki plnxt są krótkie, jednak nie są intuicyjne. * PLNXT można zaliczyć do trudnych języków programowania. * Tworzenie robotów wykorzystujących sensor światła wiąże się z wieloma problemami (odczyt wartości/ zakłamania/błędy, rozwiązanie ich w niektórych momentach jest nierealne. ===== Podsumowanie, wnioski, napotkane problemy ===== * Największy problem w obu zadaniach sprawiło nam odczytywanie wartości w sensorze light oraz wybranie odpowiednich zakresów w celu rozpoznawania poszczególnych kluczy. *Problemem podobnie jak na poprzednich laboratoriach było ponowne uruchamianie programów. Często pojawiały się błedy, które zmuszały nas do restartowania systemu, bądź wylogowania użytkownika i ponownego zalogowania. * PLNXT pozwala tworzyc nam ciekawe programy w kilku linijkach kodu. ===== Uwagi dotyczące PLNXT ===== * PLNXT jest nieintuicyjny i nawet po stworzeniu kilku dobrze działających projektów nigdy nie jesteśmy pewni czy kod który obecnie piszemy poprawnie zadziała. * proponujemy stworzyć jeszcze kilka dokumentów w których opisany byłby sposób kompilowania i dokładny opis działania triggerów. ===== Kody źródłowe ===== {{:pl:dydaktyka:piw2009:sprawozdania:jaworek_kantoch_figiel.zip|}}
pl/dydaktyka/piw/2009/sprawozdania/piw20090429-09d.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry