[[
✎ pl:dydaktyka:piw:2009:sprawozdania:piw20090422-15a
]]
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 - PLNXT zapoznanie ====== Data: 22 kwietnia 2009\\ Godzina: 15.30\\ Grupa: Artur Kosztyła, Marcin Krzych\\ Robot: Gienek\\ ====== Wstęp ====== Celem laboratorium było testowanie PLNXT w algorytmach o małej złożoności. \\ W czasie zajęć korzystaliśmy z zestawu Lego NXT łączącego się z komputerem za pomocą interfejsu BT oraz interfejsu programistycznego PLNXT.\\ ====== Zadania ====== Wszystkie przedstawione w opisie laboratorium na wiki przykłady zostały przeanalizowane i sprawdzone na robocie. \\ W tej fazie laboratorium nie napotkaliśmy żadnych problemów z funkcjonowaniem programów, jedynie, jak na załączonym zrzucie ekranu pojawił się problem z niezabitymi wątkami po wykonaniu programu reagującego na klaśnięcia. \\ W przykładzie z zatrzymywaniem i ruszaniem robota na klaśnięcie ustaliliśmy próg dźwięku na 50. Dopiero ta wartość pozwoliła nam wyeliminować hazardy pochodzące z otoczenia pracowni.\\ Co ciekawe robot rozpoznawał lekkie uderzenie dłonią w stół jako klaśnięcie i również wtedy reagował. {{:pl:dydaktyka:piw2009:sprawozdania:ex_console.png|500^}} \\ Jak widać, 2 wątki nie umarły po wykonaniu programu. Nastąpiło to po próbie wyjścia z konsoli po zakończeniu wykonania programu przez predykat ''stop''. ===== Przygotowanie do zajęć ====== Przy stanowisku zastaliśmy robota skonstruowanego zgodnie z instrukcją znajdującą się w QuickStart, wraz z dołączonymi sensorami wyglądającego tak: {{:pl:dydaktyka:piw2009:sprawozdania:p1040562.jpg|Gienek}} ===== Panikarz - Kod ===== <code prolog> :- consult('./plnxt.pl'). start :- nxt_open, thread_create(touch,_,[detached(true)]), thread_create(go_on_buddy,_,[detached(true)]). go_on_buddy :- nxt_go(200), sleep(1), trigger_create(_,clap,run_away). touch :- nxt_touch(X), write(X), X > 0, stop. run_away :- nxt_stop, nxt_rotate(600,120), nxt_go_cm(900, 30), go_on_buddy. % Sprawdzenie, czy natężenie dźwięku przekracza wartość progową clap :- nxt_sound(Value,force), Value > 50. stop :- trigger_killall, nxt_stop, nxt_close. </code> ===== Opis ===== Zadaniem robota było przemieszczanie się do przodu aż do momentu klaśnięcia. Wtedy robot obracał się o losowy kąt i szybko uciekał. Po pewnym czasie uspokajał się i kontynuował podróż normalnym wolnym tempem. \\ \\ Zachowanie taki zostało opisane powyższym kodem, przy którego użyciu robot wykonywał zadanie i zachowywał się poprawnie. \\ Napotkaliśmy jednak na problemy z wątkami, opisane poniżej. ===== Film pokazujący działanie robota ===== [[http://www.youtube.com/watch?v=lwDBSIiYdbk|Link do filmu]] ====== Napotkane problemy ====== W czasie pracy nad ostatecznym kształtem algorytmu Panikarz, dla poniższego kodu: <code prolog> :- consult('./plnxt.pl'). start :- nxt_open, thread_create(go_on_buddy,_,[detached(true)]). go_on_buddy :- nxt_go(200), sleep(1), trigger_create(_,clap,run_away), trigger_create(_,touch,stop). touch :- nxt_touch(X), X = 1. run_away :- nxt_stop, nxt_rotate(600,120), nxt_go_cm(900, 30), go_on_buddy. % Sprawdzenie, czy natężenie dźwięku przekracza wartość progową clap :- nxt_sound(Value,force), Value > 50. stop :- trigger_killall, nxt_stop, nxt_close. </code> pojawiały się następujące WARNINGi: {{:pl:dydaktyka:piw2009:sprawozdania:panikarz_v3_1console.png|500}} ====== Podsumowanie ====== Problemy z niszczeniem triggerów wydają się być mniejsze, niż tydzień temu, jednak pojawiły się problemy z niszczeniem wątków. Przy dłuższym wykonywaniu programu ich ilość rośnie, a środowisko zdaje się nie radzić sobie z ich zabijaniem/usuwaniem/kończeniem. Skutkowało to zrywaniem komunikacji z robotem, co wymuszało restart środowiska SWIPL.
pl/dydaktyka/piw/2009/sprawozdania/piw20090422-15a.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry