Laboratorium (zapoznanie z PLNXT)

środa 9.30 8 IV 2009

Team w składzie:
Jarosław Luks
Wojciech Kubik
Jakub Kościółek

Wstęp

Po rozpoczęciu laboratorium zastaliśmy gotowego robota z podłączonymi sensorami.
Nie pozostało nam więc nic innego jak zapoznać się z instrukcjami do laboratorium i wykonać postawione przed nami zadania.

Algorytm 2

Wykonywanie zadań zaczęliśmy od zaimplementowania algorytmu nr 2.
Zrobiliśmy tak, gdyż wydawał nam się on łatwiejszy do zaimplementowania oraz
sam efekt działania algorytmu był bardzo efektowny :-P

Robot przemieszcza się po pomieszczeniu i zmienia kierunek poruszania się, gdy przed sobą napotka przeszkodę.

:- consult('plnxt.pl').
 
start :-
	nxt_open,
	trigger_create(_,check_distance,[nxt_stop, obrot]),
	nxt_go(300).
 
check_distance :-
	nxt_ultrasonic(Distance,force),
	Distance < 15.

obrot :-
	nxt_rotate(300, 100 + random(100)),
	trigger_create(_,check_distance,[nxt_stop, obrot]),
	nxt_go(300).

Robot jedzie do przodu a następnie jeżeli napotka przeszkodę w zasięgu sensora odległości zatrzymuje się i obraca się o losowy kąt. Następnie porusza się znów dalej w przód i jeśli ponownie napotka przeszkodę dokonuje obrotu, i tak cały czas :-)

Algorytm 1

Gdy udało nam się w końcu uporać z rozwiązaniem zadania nr 2, przeszliśmy wraz z programistą Kubikiem oraz inżynierem Kościółkiem do rozwiązania zagadki wymagającej użycia sensora światła. Po owocnej, choć burzliwej konsultacji doszliśmy do porozumienia w kwestii algorytmu rozwiązującego postawione zadanie. Efekt naszej żmudnej pracy zaprezentowany został poniżej.

Robot porusza się dowolnie wewnątrz obszaru na planszy testowej ograniczonego czarną linią. Nie może poza niego wyjechać! Gdy najedzie na czarną linię, powinien zawrócić. Niekoniecznie o 180 stopni. Np. Angle is 120 + random(120) zunifikuje Angle z liczbą z przedziału od 120 do 240. Można jej użyć jako kąt obrotu robota.

  :- consult('plnxt.pl').
 
  start :-
    nxt_open,
    nxt_light_LED(activate),
    loop.
 
  loop :-
    trigger_create(_,check_color,[nxt_stop, nxt_go_cm(-200,8,force),nxt_rotate(150,190),loop]),
    nxt_go(200).

  check_color :-
    nxt_light(LightValue,force),
    LightValue<50.

Zgodnie z instrukcjami zadania nasz „mały zwiadowca” jeździ sobie wewnątrz czarnego okręgu. I tak sobie jeździ dopóki nie napotka brzegu okręgu, po czym zmienia kierunek swych poszukiwań.

Spostrzeżenia, napotkane problemy, wnioski

Wbrew pozorom, pomimo zaimplementowania algorytmów rozwiązujących postawione przed nami problemy, nie uniknęliśmy problemów z funkcjonowanie naszego zestawu LEGO.

* Początkowo mieliśmy problem aby w ogóle połączyć się z naszym robotem. Po ustawieniu parametrów portu oraz sparowaniu próbowaliśmy sprawdzić konfigurację, jednak wykazywała ona błędy. Po kilkukrotnym powtórzeniu procedury, zniechęceni niepowodzeniami postanowiliśmy uruchomić ponownie komputer, co przyniosło pożądany efekt i w końcu udało nam się połączyć z robotem. Jak się później okazało koledzy z team'u obok połączyli się z naszym robotem przez co my nie uzyskać połączenia.

* Myśleliśmy, iż po uporaniu się z tym problemem wszystko pójdzie gładko, jednak jak na ironie napotkaliśmy kolejne problemy. Podczas pracy z robotem i jego sensorami parokrotnie doszło do utraty komunikacji z robotem, co skutkowało brakiem możliwości ponownego połączenia się z robotem. Problemem były funkcje nxt_actions, które zaczęły wyrzucać wyjątki, niemniej jednak nie udało nam się zlokalizować przyczyny takiego zachowania. Było to bardzo uciążliwe ponieważ przez błędy interfejsu PLNXT straciliśmy sporo czasu (restart komputera),co uniemożliwiło nam dalsze prace z naszym zestawem i możliwość głębszego zapoznania się możliwościami robota.

* Natomiast gdy udało już nam się nawiązać połączenie, to robot spisywał się bez zarzutu, w momencie gdy wszystko działało sprawnie, praca z robotem była niesamowitą frajdą dla nas, zwłaszcza że nasza grupa w dzieciństwie uwielbiała bawić się lego technics a mindstormy przeniosły nas w nowy świat klocków lego :)

* Niestety nie przygotowaliśmy się dobrze do laboratorium i nie mieliśmy żadnego aparatu fotograficznego którym moglibyśmy udokumentować naszą pracę oraz zauważone nieprawidłowości w funkcjonowaniu zestawu, ale na następne laborki będziemy już gotowi :)

pl/dydaktyka/piw/2009/sprawozdania/piw20090408-09b.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