Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:mindstorms:lab:lab_plnxt_zapoznanie [2008/12/17 07:57] 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 ===== |
Należy zbudować robota opisanego w instrukcji QuickStart i dołączyć sensory. | Należy zbudować robota opisanego w instrukcji QuickStart i dołączyć sensory. |
| |
===== Przygotowanie środowiska ===== | |
| |
* zapisz plik {{:pl:mindstorms:lab:plnxt-20081217.tar.gz|plnxt-20081217.tar.gz}} na dysku w folderze FIXME | |
* rozpakuj: tar xvzf plnxt-20081217.tar.gz | |
* przejdź do katalogu plnxt: cd plnxt | |
| |
===== Praca w powłoce SWIPL ===== | ===== Praca w powłoce SWIPL ===== |
* nxt_voltage_millivolt(Voltage). % Odczyt napięcia baterii. | * 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,80), % 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,80), % 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. |
| |
Proszę przetestować proste przykłady programów z wykorzystaniem mechanizmu trigger (dokumentacja: {{:pl:mindstorms:lab:threads.pdf|threads.pdf}}). | Proszę przetestować proste przykłady programów z wykorzystaniem mechanizmu trigger (dokumentacja: {{:pl:mindstorms:lab:threads.pdf|threads.pdf}}). |
| |
==== Przykład 1 ==== | ==== Przykład ==== |
| |
<code prolog> | <code prolog> |
Robota czekałoby bolesne spotkanie z przeszkodą. | Robota czekałoby bolesne spotkanie z przeszkodą. |
| |
==== Przykład 2 ==== | |
| |
<code prolog> | |
:- consult('../plnxt.pl'). | |
| |
start:- | |
nxt_open, | |
go_on_buddy, | |
trigger_create(_,pushed,[nxt_stop,nxt_close]). | |
| |
go_on_buddy :- | |
nxt_go(200), | |
sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. | |
trigger_create(_,clap,wait_a_second_buddy). | |
| |
wait_a_second_buddy :- | |
nxt_stop, | |
sleep(1), | |
trigger_create(_,clap,go_on_buddy). | |
| |
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. | |
clap :- | |
nxt_sound(Value,force), | |
Value > 15. | |
| |
% Sprawdzenie, czy sensor dotyku jest wciśnięty. | |
pushed :- | |
nxt_touch(Value,force), | |
Value=1. | |
</code> | |
| |
Robot jedzie do przodu. Zatrzymuje się po klaśnięciu. Wznawia ruch po ponownym klaśnięciu.\\ | |
Po wciśnięciu sensora dotyku zatrzymuje się i zamyka połączenie.\\ | |
Proszę odpowiednio dobrać próg natężenia dźwięku. W laboratorium może być głośno.\\ | |
Zbyt niska wartość może spowodować zapętlenie.\\ | |
Zbyt wysoka sprawi, że zamiast klaskać, trzeba będzie solidnie "puknąć" sensor. | |
| |
===== Implementacja algorytmu ===== | ===== Implementacja algorytmu ===== |
| |
Proszę zaimplementować jeden lub więcej z poniższych algorytmów: | Proszę zaimplementować poniższe algorytmy: |
| |
==== Omijanie 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 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. | ==== 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ę. |
| |
==== Unikanie przeszkód ==== | ===== Zakończenie ===== |
| |
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. | __UWAGA__! Prosze nie rozmontowywać robota! |
| |
==== Panikarz ==== | **__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! |
| |
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. | |
| |
===== Zakończenie ===== | |
| |
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ń]] |
| |
[[pl:mindstorms:lab:conf|konfiguracja BT]] | |