Różnice

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

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2010/05/25 19:21]
piw10 utworzono
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2019/06/27 15:50] (aktualna)
Linia 7: Linia 7:
 ---- ----
  
 +===== Ciąg dalszy =====
 +Tego dnia do współpracy przyznany został nam robot Franek. Był przygotowany do działania, miał zamontowane potrzebne sensory, co pozwoliło przystąpić do ćwiczeń. Prace rozpoczęliśmy od wykonywania algorytmów z poprzedniego tygodnia...
 +
 +===== Rozgrzewka =====
 +Powodami nie wykonania zadań z poprzednich zajęć były problemy z połączeniem się z robotem. Tym razem robot był dla nas bardziej łaskawy, wię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.1274808094.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