|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-11d [2009/01/18 22:28] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-11d [2019/06/27 15:50] |
====== 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. | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jasio_sr_1100.jpg|}} | |
===== 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: | |
| |
* po usłyszeniu klaśnięcia robot się zatrzymuje | |
* wydaje dźwięk | |
* następnie obraca o około 180 stopni | |
* i ucieka na pełnej prędkości przez 50 cm | |
* i przechodzi do zwykłego, powolnego poruszania się | |
* ponadto w przypadku najechania na przeszkodę robot zatrzymuje się a program kończy działanie | |
| |
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 - {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008: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. | |