|
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2010/05/25 23:57] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100519-17b [2019/06/27 15:50] |
====== Sprawozdanie 3 ====== | |
| |
* Robot: **Franek** | |
* Data wykonania: **19.05.2010 godz. 17:00** | |
* Autorzy: **Agata Krysian, Łukasz Mendakiewicz, Tomasz Skrzypczak** | |
| |
---- | |
| |
===== 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 pomimo kilku prób, 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. | |