Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-11d [2009/01/18 21:28] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-11d [2019/06/27 15:50] (aktualna) |
====== Środa 14.01.09 godz. 11:00 ======= | ====== Środa 14.01.09 godz. 11:00 ======= |
===== Konstrukcja ===== | ===== Konstrukcja ===== |
Robot, którego używaliśmy na zajęciach był już wcześniej zbudowany, był to jeden z przykładów z instrukcji LEGO. Oryginalnie ten typ robota prezentował podnoszenie piłeczki. Wyposażony był w czujnik nacisku zamontowany z przodu robota oraz czujnik dźwięku. | 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|}} | {{: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. |