[[
✎ pl:dydaktyka:piw:2009:sprawozdania:piw20090422-15d
]]
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ć.
==== 1) Kody programów wykonanych na zajęciach: ==== ===== Algorytm 1 ===== Panikarz - wymagane sensory: dźwięku, dotyku. Robot przemieszcza się powoli. Po klaśnięciu zmienia kierunek i szybko ucieka przez jakiś czas (wtedy nie jest podatny na klaśnięcie), po czym uspokaja się i znowu jedzie powoli. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku. Rozwiązanie <code prolog> :- consult('../plnxt.pl'). start :- nxt_open, thread_create(go_on_buddy,_,[detached(true)]), trigger_create(_,sensor,stop). go_on_buddy :- nxt_go(200), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,run_away_buddy). run_away_buddy :- nxt_rotate(350,180), nxt_play_tone(800, 2000), nxt_go(800), sleep(2), nxt_stop, go_on_buddy. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. sensor :- nxt_touch(Value, force), Value = 1, stop. stop :- trigger_killall, nxt_stop, nxt_close. </code> ===== Algorytm 2 ===== Omijanie przeszkód - wymagane sensory: odległości, dźwięku. Robot przemieszcza się do przodu. Po napotkaniu przeszkody zatrzymuje się i próbuje ją ominąć. W fazie przemieszczania do przodu (tylko w tej fazie) robot zatrzymuje się i zamyka połączenie po klaśnięciu. <code prolog> :- consult('../plnxt.pl'). start :- nxt_open, thread_create(go_on_buddy,_,[detached(true)]), trigger_create(_,sensor,stop). go_on_buddy :- nxt_go(200), trigger_create(_, distance, move_around). move_around :- nxt_stop, D = 10, nxt_rotate(350,90), nxt_go_cm(350,D), nxt_rotate(350,-90), nxt_go_cm(350,D), nxt_rotate(350,-90), nxt_go_cm(350,D), nxt_rotate(350,90), go_on_buddy. distance :- nxt_ultrasonic(D, force), D < 5. % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. sensor :- nxt_touch(Value, force), Value = 1, stop. stop :- trigger_killall, nxt_stop, nxt_close. </code> ==== 2) Spostrzeżenia, napotkane problemy, wnioski, uwagi na temat PLNXT: ==== * w przykładzie 1. pomimo tego, że nie było możliwości zatrzymania robota, można było to zrobić przy użyciu kombinacji klawiszy Ctrl + C i a * po ponownym włączeniu robota po czynnościach opisanych w poprzednim punkcie, robot zaczął jeździć tylko w kółko * po kolejnym włączeniu robota jego zachowanie było jeszcze bardziej chaotyczne - być może było to spowodowane działającymi w tle starymi wątkami * w przykładzie 2. robot na początku w ogóle nie skręcał, dopiero po ponownym uruchomieniu xpce i załadowaniu pliku działał normalnie * w wykonanych przez nas przykładach zauważyliśmy, że w celu zmiany parametrów ruchu robota przy użyciu triggera potrzebne jest użycie predykatu nxt_stop, bez niego nic się nie zmienia
pl/dydaktyka/piw/2009/sprawozdania/piw20090422-15d.txt
· ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
Pokaż stronę
Poprzednie wersje
Menadżer multimediów
Do góry