Spis treści

Sprawozdanie 3


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:

:- 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. 

Próg wartości oświetlenia dobraliśmy empirycznie. Efekt był taki jakiego oczekiwaliśmy, co przetestowaliśmy kilkakrotnie, na załączonej macie.

Algorytm 2 był nieco bardziej rozbudowany, jednak nie oznaczało to dla nas, że był trudniejszy:

:- 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. 

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.

:- 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.

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