====== Sprawozdanie 3 ====== **Robot:** Dyzio\\ **Data wykonania:** 19.05.2010 godz. 9:30\\ **Autorzy:** Martyka Łukasz, Stereńczak Agata, Szczurek Joanna\\ ===== Budowa robota ===== Po przyjściu na zajęcia otrzymaliśmy już zmontowanego robota. Dokonaliśmy pewnych zmian z umocowaniem czujników. ===== Zadanie 2 ===== Pracę na laboratorium rozpoczęliśmy od poprawienia zadania 2, które nie udało nam się zrealizować tydzień wcześniej. Poprawiony kod programu znajduje się poniżej. :- consult('plnxt.pl'). stop :- nxt_stop. start :- nxt_open, nxt_light_LED(activate, force), trigger_create(_,check_light,change_angle), trigger_create(_,check_border,stop), nxt_go(100). small_step :- trigger_create(_,check_light,change_angle), nxt_go(80), small_step. change_angle :- Angle is 5, nxt_rotate(300, Angle, force), small_step. check_border :- nxt_ultrasonic(Distance, force), Distance < 15. check_light :- nxt_light(Light,force), Light < 42. :- start. Poprawiliśmy zdolność jeżdżenia po linii poprzez poprawienie procedury check_light. Stworzyliśmy także procedurę check_border która sprawdzała odległość robota od przeszkody i wymuszała zatrzymanie. ===== Przykład algorytmu ===== Kolejną rzeczą jaką zrobiliśmy, było przeanalizowanie oraz modyfikacja i uruchomienie algorytmu podanego w przykładach, w którym robot reagował na klaśnięcie. Pozwoliło nam to na zapoznanie się z nowymi funkcjami przydatnymi do dalszej pracy. Dobraliśmy taki próg dźwięku (50) aby robot reagował na klaśnięcie a nie na szum w sali. Sposób działania robota przedstawiony jest na filmiku: [[http://www.youtube.com/watch?v=HdPZ1emknzw|Filmik]] ===== Panikarz ===== Ponieważ ten algorytm bardzo nam się spodobał, a wiedzieliśmy iż nie wystarczy nam czasu na zrobienie wszystkich algorytmów, postanowiliśmy go zaimplementować ;) Robot jeździł powoli, po klaśnięciu zmieniał kierunek i przez 1 sekundę jechał z maksymalną prędkością. Poniżej znajduje się kod programu. :- consult('plnxt.pl'). start :- nxt_open, nxt_goal(dyzio, go_on_buddy). go_on_buddy :- nxt_go(90), sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. trigger_create(_,clap,run_forest_run), trigger_create(_,touch,stop). run_forest_run :- Angle is 60, nxt_rotate(300, Angle, force), nxt_go_sec(900, 1), go_on_buddy. wait_a_second_buddy :- nxt_stop, sleep(1), trigger_create(_,clap,go_on_buddy). % Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. clap :- nxt_sound(Value,force), Value > 50. touch :- nxt_touch(Istouch, force), Istouch is 1. stop :- trigger_killall, nxt_stop, nxt_close. Owoc naszej pracy prezentuje filmik: [[http://www.youtube.com/watch?v=4y7S5hwmaec|Panikarz - Dyzio rozbójnik ]] ===== Wnioski ===== Niestety znowu zabrakło nam czasu. Praca z robotem spowodowała nam pewne problemy, gdyż po około 40 minutach zajęć robot odmówił posłuszeństwa - zaczął żyć własnym życiem. Wykonywał polecenia gdy my już zakończyliśmy je z konsoli. Przez parę minut mieliśmy problemy gdyż nie jechał kiedy mu kazaliśmy tylko wykonywał polecenia z dość dużym opóźnieniem i w zwolnionym tempie. Myśleliśmy iż może to być wina rozładowanych baterii ale po sprawdzeniu okazało się że są one sprawne. Problemy z pracą robota mogły powodować niezakończone wątki po wyjściu z SWIPL. ===== Spakowane pliki ===== {{:pl:dydaktyka:piw:2010:sprawozdania:piw20100519-09d.rar|spakowane pliki programów}}