Sprawozdanie z laboratorium 'lab_plnxt_podstawy'

Robot: Gienek

Link do 07-gienek

Grupa: środa 9.30

Autorzy: Papciak, Kokoć, Srebrny

Użyte narzędzia:

  • zestaw LEGO,
  • adapter BT,
  • PLNXT.

Wstęp

Na początku dostaliśmy gotowego robota, na labolatorium znów powtórzył się problem z łącznością za pomocą bluetootha,
ale z wiedzą z poprzednich laborek szybko uporaliśmy się z tym problemem restartując komputer. A oto zdjęcie naszego robocika:

kody programów

Na początku standardowo przetestowaliśmy podane dwa przykłady.
Następnie na labolatorium zaimplementowaliśmy algorytm pt. „Panikarz” na odstawie przykładu drugiego dodając mu szereg rożnych predykatów.
Oto finalna wersja (wcześniej było parę innych ale nie będę podawał wszystkich):

:- consult('plnxt.pl').
 
start :-
       nxt_open,
       thread_create(go_on_buddy,_,[detached(true)]),
       thread_create(przeszkoda,_,[detached(true)]),
       thread_create(stopuj,_,[detached(true)]).
 
go_on_buddy :-
       nxt_go(200),
       sleep(1), % Chwila przerwy,
       trigger_create(_,clap,go_back).
 
stopuj :-
       sleep(1),
       trigger_create(_,dotyk,stop).
 
go_back :-
       nxt_stop,
       nxt_rotate(800,160),
       nxt_go_cm(-800,30),
       sleep(1),
       trigger_create(_,clap,go_on_buddy).
 
przeszkoda :-
       sleep(1),
       trigger_create(_,odl,dzwiek).
 
dzwiek :-
       nxt_light_LED(activate),sleep(2),nxt_light_LED(passivate).
 
% Sprawdzenie, .
odl :-
       nxt_ultrasonic(Value,force), Value<10.
 
clap :-
       nxt_sound(Value,force),
       Value > 60.
dotyk :-
       nxt_touch(Value,force), Value=1.
 
stop :-
       trigger_killall,
       nxt_stop,
       nxt_close.

Plik do pobrania: panikarz_dp.pl

Początkowo robot miał za zadanie po klaśnięciu obok niego się zatrzymać zrobić pełny obrót, cofnąć się szybko i znów zrobić pełny obrót po czym znów miał jechać do przodu. Sporo czasu zajęło ustalenie odpowiedniego progu dźwięku, na jaki robot miał reagować ze względu na dość duży, ale też zmienny hałas w laboratorium.
Potem testowaliśmy robota w różny sposób np. żeby wydał dźwięk jak napotka przeszkodę, czy też będzie ja próbował ominąć, stąd zapewne została dość nieintuicyjna nazwa predykatu do włączenia diody :-), potem też właśnie użyliśmy diody żeby zaświecał ją na 2 sec jak napotka coś przed sobą stąd też w predykacie `dzwiek` znajduje się włączenie diody i jej wyłączenie.

Filmy(.3GP) nakręcone telefonem podczas działania robota: Filmik 1.
w nowszym wydaniu Filmik 2.
pokazanie działającego wątku przy zatrzymaniu robota Filmik 3.

spostrzeżenia, napotkane problemy, wnioski

Problemy pojawiały się za każdym razem gdy chcieliśmy załadować nowy algorytm do robota, stare wątki się nie kilowały do końca - niestety przed każdą kolejną kompilacją napisanego programu konieczne było ponowne uruchamianie powłoki za pomocą polecenia xpce.
Jak dla nas czas zmiany wykonywania kolejnych poleceń jest zbyt długi (1-2sec.) przez co robot nie może wykonywać płynnych ruchów.
Problem też pojawił się z zapodaniem większej ilości wątków, ale nie doszliśmy do konkretniejszych wniosków w tym kierunku zabrakło czasu,
może to wynikało jakoś pośrednio z niestosowania w predykatach które występowały w tych watkach parametrów FORCE,
ale nie zdążyliśmy wystarczająco przetestować różne przypadki żeby dojść do tego dokładniej. Ogólnie na tym labolatorium mieliśmy bardziej skomplikowanego robota i mogliśmy napisać ciekawszy algorytm,
który dał dużo śmiechu i radochy ;-)

uwagi dotyczące funkcjonalności PLNXT

  • za długi czas reakcji sensorów
  • problem z nawiązaniem połączenia przez bluetooth
  • za długi czas przy zmianie polecenia (1-2sec)

inne uwagi

  • w bibliotece można jeszcze lepiej opracować budowanie wątków aby była bardziej przystępna i intuicyjna
  • więcej przykładów wykorzystujących rożne sensory robota, głównie przykłady opierają się na jeżdżeniu;]
pl/dydaktyka/piw/2009/sprawozdania/piw20090422-09e.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0