Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:lab:lab_plnxt_zapoznanie [2008/12/16 18:01] holownia |
pl:mindstorms:lab:lab_plnxt_zapoznanie [2019/06/27 15:50] (aktualna) |
* adapter BT, | * adapter BT, |
* PLNXT. | * PLNXT. |
| |
| ===== Przygotowanie stanowiska ===== |
| |
| __UWAGA!__ Przed rozpoczęciem ćwiczeń należy starannie przygotować swoje stanowisko pracy [[lab215|zgodnie z instrukcją]]. |
| |
===== Wstęp ===== | ===== Wstęp ===== |
**Warstwa, z której Państwo będziecie bezpośrednio korzystać.** Warstwa dostarcza predykaty realizujące złożoną pracę silników: ruch pojazdu do przodu, do tyłu, skręcanie, obracanie. | **Warstwa, z której Państwo będziecie bezpośrednio korzystać.** Warstwa dostarcza predykaty realizujące złożoną pracę silników: ruch pojazdu do przodu, do tyłu, skręcanie, obracanie. |
| |
Dokumentacja: FIXME | Dokumentacja: {{:pl:mindstorms:lab:nxt_movement.pdf|nxt_movement.pdf}} |
| |
===== Budowa robota ===== | ===== Budowa robota ===== |
| |
Należy zbudować robota opisanego w instrukcji QuickStart i dołączyć potrzebne sensory. | Należy zbudować robota opisanego w instrukcji QuickStart i dołączyć sensory. |
| |
| |
===== Praca w powłoce SWIPL ===== | ===== Praca w powłoce SWIPL ===== |
| |
Proszę uruchomić powłokę SWIPL i załadować plik plnxt.pl, a następnie: | Proszę uruchomić powłokę SWIPL (polecenie xpce) i załadować plik plnxt.pl ([plnxt].), a następnie: |
* Otworzyć połączenie: nxt_open. | * Otworzyć połączenie: nxt_open. |
* Wybrać polecenie z dokumentacji: np. nxt_go_cm(400,80). | * Wykonać serię wybranych z dokumentacji poleceń (przemieszczanie, odczyt sensorów). Np.: |
* Wykonać serię wybranych poleceń (przemieszczanie, odczyt sensorów). | * nxt_go(300). % Jazda do przodu z prędkością 300 stopni/sekundę. |
| * nxt_stop. |
| * nxt_go_cm(400,80). % Jazda do przodu z prędkościa 400 stopni/sekundę. Zatrzymanie po 80 cm. |
| * nxt_touch(Value). % Odczyt sensora dotyku. |
| * nxt_sound(Value). % Odczyt sensora dźwięku. |
| * nxt_light(Value). % Odczyt sensora światła. |
| * nxt_light_LED(activate). % Włączenie diody sensora światła. |
| * nxt_light(Value). |
| * nxt_light_LED(passivate). |
| * nxt_ultrasonic(Value). |
| * nxt_rotate(350,360). % Obrót w prawo o 360 stopni z prędkością 350 stopni/sekundę. |
| * nxt_play_tone(500,2000). % Wydanie dźwięku o częstotliwości 500 Hz i czasie trwania 2000 ms. |
| * nxt_voltage_millivolt(Voltage). % Odczyt napięcia baterii. |
* Zamknąć połączenie: nxt_close. | * Zamknąć połączenie: nxt_close. |
| |
===== Programy w pliku ===== | ===== Programy w pliku ===== |
| |
Większość predykatów ma swoją wersję z opcją 'force' (np. nxt_go(400,force).), która wymusza natychmiastowe wykonanie polecenia.\\ | Większość predykatów ma swoją wersję z opcją 'force' (np. nxt_go(400,force).), która wymusza natychmiastowe wykonanie polecenia.\\ |
Brak tej opcji sprawia, że polecenie oczekuje na wykonanie do zatrzymania robota.\\ | Brak tej opcji sprawia, że polecenie oczekuje z wykonaniem do zatrzymania robota.\\ |
To pozwala na pisanie sekwencyjnych programów, jak przykład niżej. | To pozwala na pisanie sekwencyjnych programów, jak przykład niżej. |
| |
start :- | start :- |
nxt_open, | nxt_open, |
nxt_go_cm(400,200), % Jazda 200 cm do przodu z prędkością 400 stopni/sekundę. | nxt_go_cm(400,80), % Jazda 80 cm do przodu z prędkością 400 stopni/sekundę. |
nxt_go_cm(-400,200), % Jazda 200 cm do tyłu z prędkością 400 stopni/sekundę. | nxt_go_cm(-400,80), % Jazda 80 cm do tyłu z prędkością 400 stopni/sekundę. |
nxt_close. | nxt_close. |
| |
===== Do czego w takim razie przydaje się 'force'? ===== | ===== Do czego w takim razie przydaje się 'force'? ===== |
| |
Proszę przetestować prosty program z wykorzystaniem mechanizmu trigger (dokumentacja FIXME): | Proszę przetestować proste przykłady programów z wykorzystaniem mechanizmu trigger (dokumentacja: {{:pl:mindstorms:lab:threads.pdf|threads.pdf}}). |
| |
| ==== Przykład ==== |
<code prolog> | <code prolog> |
:- consult('sciezka_do_plnxt.pl'). | :- consult('sciezka_do_plnxt.pl'). |
Robota czekałoby bolesne spotkanie z przeszkodą. | Robota czekałoby bolesne spotkanie z przeszkodą. |
| |
===== Implementacja algorytmu ===== | |
| |
Proszę zaimplementować jeden lub więcej z poniższych algorytmów: | |
| |
==== Omijanie przeszkód ==== | ===== Implementacja algorytmu ===== |
| |
Robot przemieszcza się do przodu. Po napotkaniu przeszkody zatrzymuje się i próbuje ją ominąć. W fazie przemieszczania do przodu (tylko w tej fazie) robot zatrzymuje się i zamyka połączenie po klaśnięciu. | Proszę zaimplementować poniższe algorytmy: |
| |
==== Unikanie przeszkód ==== | ==== Algorytm 1 ==== |
| Robot porusza się dowolnie wewnątrz obszaru ograniczonego czarną linią (można wykorzystać planszę testową). Nie może poza niego wyjechać! Gdy najedzie na czarną linię, powinien zawrócić -- niekoniecznie o 180 stopni, żeby było ciekawiej. Podpowiedź: można użyć formuły typu "//Angle is 120 + random(120)//". |
| |
Robot przemieszcza się do przodu. Po napotkaniu przeszkody cofa się, obraca w innym kierunku i wznawia przemieszczanie do przodu. W fazie przemieszczania do przodu (tylko w tej fazie) robot zatrzymuje się i zamyka połączenie po klaśnięciu. | ==== Algorytm 2 ==== |
| Robot podąża wzdłuż czarnej linii (można wykorzystać planszę testową). Nie może jej zgubić! Gdy napotka przeszkodę, powinien się zatrzymać i poinformować o problemie sygnałem dźwiękowym. Po usunięciu przeszkody robot powinien kontynuować jazdę. |
| |
==== Panikarz ==== | ===== Zakończenie ===== |
| |
Robot przemieszcza się powoli. Po klaśnięciu zmienia kierunek i szybko ucieka przez jakiś czas (wtedy nie jest podatny na klaśnięcie), po czym uspokaja się i znowu jedzie powoli. Zatrzymuje się i zamyka połączenie po wciśnięciu sensora dotyku. | __UWAGA__! Prosze nie rozmontowywać robota! |
| |
===== Zakończenie ===== | **__UWAGA__**! Jeżeli należycie Państwo do ostatniej tego dnia grupy ćwiczeniowej, należy //wyciągnąć baterie z robota// i przekazać je prowadzącemu do naładowania! |
| |
Rozmontować robota, wkladając wszystkie części do [[pl:mindstorms:lab:wyposazenie#rozlozenie_klockow_w_przegrodach|odpowiednich przegródek w pudełku]] | |
| |
__UWAGA__! Należy to robić powoli i ostrożnie - połamanie klocków przy rozmontowywniu jest latwiejsze niż przy montażu. :-( | |
| |
===== Sprawozdanie ===== | ===== Sprawozdanie ===== |
* uwagi dotyczące funkcjonalności PLNXT. | * uwagi dotyczące funkcjonalności PLNXT. |
| |
[[pl:mindstorms:studenci:przedmioty:jsi:sprawozdania2008|Wykaz sprawozdań]] | [[pl:dydaktyka:piw:2010:wykaz_sprawozdan|Wykaz sprawozdań]] |