Spis treści

Języki sztucznej inteligencji - Laboratorium (zapoznanie z PLNXT)

Maksymilian Piasecki, Jan Pollak, Mariusz Sokołowski

Środa 14.01.09 godz. 11:00

Konstrukcja

Robot, którego używaliśmy na zajęciach był już przygotowany, był to jeden z przykładów z instrukcji LEGO. Oryginalnie ten typ robota prezentował podnoszenie piłeczki. Wyposażony był w czujnik nacisku i odległosci zamontowane z przodu robota oraz czujnik dźwięku.

Algorytmy

Na zajęciach zrealizowaliśmy cztery algorytmy w języku Prolog przy czym trzy z nich były to gotowe programy przygotowane na stronie z instrukcją. Pierwszy z nich realizował zwykłe przemieszczanie się robota. Kolejny zatrzymywał robota w przypadku napotkania przeszkody. Trzeci algorytm był to przykład nr 2 ze strony, którego zadaniem było zatrzymywanie robota i ponowny start po usłyszeniu klaśnięcia. Następnie przystąpiliśmy do implementacji własnego programu Panikarz. Jego zachowanie wyglądało następująco:

Do powyższego celu zmodyfikowaliśmy przykład nr 2:

:- consult('plnxt.pl').

start:-

nxt_open,
go_on_buddy,
trigger_create(_,pushed,[nxt_stop,nxt_close]).

go_on_buddy :-

nxt_go(200),
      sleep(1),
trigger_create(_,clap,uciekaj).

uciekaj :-

nxt_stop,
nxt_play_tone(1000,500),
nxt_rotate(600,180,force),
      nxt_go_cm(600,50),
start.

clap :-

nxt_sound(Value,force),
Value > 50.

pushed :-

nxt_touch(Value,force),
Value=1.

Pliki z programami - jasio_sr_1100.zip

Problemy, propozycje zmian

Podczas realizacji problemem okazało się dodanie przez nas dźwięku podczas ucieczki. Niestety nie udało się nam to przy pomocy opcji force, gdyż nie pozwala ona na równoległe wykonywanie czynności a jedynie sekwencyjne. Tak więc robot najpierw wydawał dźwięk a dopiero potem brał się za ucieczkę. Drugim napotkanym problemem było dziwne zachowanie podczas jazdy z dużą prędkością, kiedy to czasem nie zamierzenie zmieniał kierunek.