Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2010/05/25 19:29]
piw10
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2019/06/27 15:50] (aktualna)
Linia 11: Linia 11:
  
 ===== Rozgrzewka ===== ===== Rozgrzewka =====
-Tego dnia do współpracy przyznany został nam robot FranekBył przygotowany do działaniamiał zamontowane potrzebne sensory, co pozwoliło przystąpić do ćwiczeń.+Powodami nie wykonania zadań z poprzednich zajęć były problemy z połączeniem się z robotemTym razem robot był dla nas bardziej ​łaskawywięc bez problemów zaimplementowaliśmy algorytm 1: 
 + 
 +<code prolog>​ 
 +:- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + write('​-- start 0.3 --'​),​ 
 + nxt_light_LED(activate),​ 
 + gogo. 
 + 
 +gogo :- 
 + nxt_go(250),​ 
 + trigger_create(_,​ check_light,​ escape). 
 + 
 +check_light :- 
 + nxt_light(V,​ force), 
 + V < 45. 
 +  
 +escape :- 
 + Angle is 150 + random(60),  
 + nxt_rotate(100,​ Angle, force), 
 + gogo. 
 + 
 +% :- start.  
 +</​code>​ 
 + 
 +Próg wartości oświetlenia dobraliśmy empirycznie. 
 +Efekt był taki jakiego oczekiwaliśmy, co przetestowaliśmy kilkakrotnie,​ na załączonej macie. 
 + 
 +{{:​pl:​dydaktyka:​piw:​2010:​sprawozdania:​20100519_003b.jpg|}} 
 + 
 +Algorytm 2 był nieco bardziej rozbudowany,​ jednak nie oznaczało to dla nas, że był trudniejszy:​ 
 + 
 +<code prolog>​ 
 +:- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + write('​-- start 0.6 --'​),​ 
 + nxt_light_LED(activate),​ 
 + gogo. 
 + 
 +gogo :- 
 + nxt_go(100),​ 
 + trigger_create(_,​ check_light, ​ align), 
 + trigger_create(_,​ nxt_touch(1,​ force), wait_free_path). 
 + 
 +check_light :- 
 + nxt_light(V,​ force), 
 + V > 46. 
 +  
 +align :- 
 + trigger_killall,​ 
 + nxt_rotate(100,​ 3, force), 
 + gogo. 
 + 
 +wait_free_path :- 
 + trigger_killall,​ 
 + nxt_stop,​ 
 + nxt_play_tone(500,​500),​ 
 + trigger_create(_,​ nxt_touch(0,​ force), gogo). 
 + 
 +stop :- 
 + trigger_killall,​ 
 + nxt_stop. 
 + 
 +% :- start.  
 +</​code>​ 
 + 
 +Franek poruszał się po czarnej linii, a gdy napotkał przeszkodę,​ wydał dźwięk zatrzymując się. Po zwolnieniu blokady robot grzecznie ruszył do przodu tak jak poprzednio. 
 + 
 +===== Klask klask ===== 
 + 
 +Spośród algorytmów jako pierwszy wybraliśmy "​Panikarza"​. Potrzebne sensory Franek już posiadał, więc przystąpiliśmy ​do napisania algorytmu. Prace robiliśmy etapami, dodając każdorazowo kolejną akcje robota. 
 + 
 +<code prolog>​ 
 +:- consult('​plnxt.pl'​). 
 +  
 +start :- 
 + write('​-- start 0.0 --'​),​ 
 + nxt_goal(franek,​ my_actions). 
 +  
 +my_actions :-  
 + nxt_go(100),​ 
 + trigger_create(_,​ clap, panic). 
 + 
 +clap :- 
 + nxt_sound(Value,​force),​ 
 + Value > 30, 
 + write('​clap!'​). 
 + 
 +panic :- 
 + Angle is 160 + random(40),  
 + nxt_rotate(900,​ Angle, force), 
 + nxt_go(400). 
 + %dokonczyc... 
 +  
 +stop :- 
 + trigger_killall,​ 
 + nxt_stop. 
 +</​code>​ 
 + 
 +Franek poruszał się powoli i po każdym klaśnięciu odwracał się, następnie zwiększyliśmy jego prędkość "​uciekania"​. Wyniki uznaliśmy za zadowalające,​ jednak czas nie pozwolił nam dokończyć całkowicie danego algorytmu. 
 + 
 +===== Spostrzeżenia i wnioski ===== 
 + 
 +  * Pomimo poprawnego łączenia się z robotem poprzez bluetooth teoretycznie nie nawiązaliśmy połączenia (kolejne komunikaty konsoli o zajętości zasobu)jednak praktyka okazała się inna - komunikacja działała poprawnie, czym byliśmy miło zaskoczeni :) 
 + 
 +  * Zdarzało się, że środowisko się zawieszało przy użyciu prostych komend. Na szczęście wystarczało wówczas "​zabić"​ proces konsoli Prologa i uruchomić ją ponownie. Wydaje nam się, że wywołanie tylko raz predykatu nxt_open, a nie za każdym uruchomieniem pary nxt_open / nxt_close rozwiązuje problem. 
 + 
 +  * Predykat write wywołany w wątku działania robota niestety nie wypisuje od razu na ekran (zapewne buforuje gdzieś wewnętrznie),​ a szkoda, gdyż na pewno byłoby łatwiej z tym śledzić przebieg programu. 
pl/dydaktyka/piw/2010/sprawozdania/piw20100519-17b.1274808598.txt.gz · ostatnio zmienione: 2019/06/27 15:54 (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