Sprawozdanie z laboratorium (zaawansowane algorytmy w PLNXT)

  • Robot: Ewka
  • Data wykonania: 26.05.2010 godz. 17:00
  • Autorzy: Gabriela Pasek, Michał Paszko, Leszek Piątek

Początek

Na początku zaznajomiliśmy się z tematyką laboratorium oraz specyfikacją algorytmów. Tym razem Ewka nie budziła jakichkolwiek podejrzeń co do nieprawidłowego działania. Robot początkowo zawierał szczypce, jednakże postanowiliśmy je usunąć w celu prawidłowego umocowania czujnika światła.

Uwolnić Ewkę ..

Zaczęliśmy od algorytmu Więźnia. Nasz program budowaliśmy modułowo, to znaczy dodając kolejną funkcjonalność, sprawdzialiśmy jej działanie na dołączonej macie testowej. Kiedy na początku skalibrowaliśmy wartości odbieranie przez czujnik światła z kolorami wzorcowymi na macie testowej, nic nie budziło naszych wątpliwości. Aczkolwiek po pierwszym załadowaniu programu do Ewki i uruchomieniu predykatu start zdaliśmy sobie sprawę, że kolory nie są dobrze odwzorowane. Stwierdziliśmy, że powodem może być zbyt dużego natężenie światła na macie, którą umieściliśmy na biurku przy oknie. Dlatego też spróbowaliśmy poeksperymentować z umiejscowieniem czujnika światła co do wysokości. W taki sposób zebraliśmy kilka próbek wartości referencyjnych kolorów odbieranych przez czujnik, uruchamialiśmy algorytm na Ewce, jednak nic nie wskazywało na poprawne działanie.. Ewka dalej była uwięziona ..

Ostatecznie postanowiliśmy umieścić matę testową na podłodze i pobierać wskazania czujnika właśnie z tej pozycji. Jak przypuszczaliśmy - nawet ponowna modyfikacja wysokości czujnika światła nie pozwoliła nam na ustalenie prawidłowych i jednoznacznych wartości i przedziałów dla identyfikacji kolorów. W dodatku ponownie pojawiały się problemy z połączeniem Bluetooth oraz 'wieszaniem się' predykatów nxt_open oraz stop.

Kod programów

Więzień

:- consult('plnxt.pl').
 %czarny: 17, czerwony: 40, biały: 43, szary: 35
 %18,37,41,36
start :-
	nxt_light_LED(activate),
	nxt_goal(ewka, alg1).
 
alg1 :- 
	nxt_go(250),
	trigger_create(_,check_red,[nxt_stop, nxt_play_tone(1000,1000),stop]),
 	trigger_create(_,check_line,[nxt_stop,Angle is 120 + random(120),nxt_rotate(300,Angle),alg1]).
 
check_line :-
	nxt_light(Value, force),write(Value),nl,
	Value < 25.
 
check_red :-
	nxt_light(Value, force),write(Value),nl,
	Value < 41,
	Value > 38.
 
stop :-
	trigger_killall,
	nxt_stop,
	nxt_close.

Spakowane pliki: pasek_paszko_piatek_lab4.rar

Spostrzeżenia, napotkane problemy, wnioski

Napotkane problemy

  • Głownym problemem na opisywanym laboratorium była mała różnica którą zwracał czujnik światła dla czerwieni (w stosunku do białego). Przez to nie byliśmy w stanie dobrze skalibrować funkcji wykrywającej nam kolor czerwony.
  • Ponownie pojawiał się problem z połączeniami Bluetooth oraz predykatami nxt_open oraz stop.
  • Czerwone pole było otoczone czarnym co spowodowało, że docelowo trzeba by użyć bardziej zaawansowanego algorytmu poszukiwania czerwieni niż się nam na początku wydawało - robot miał nie przekraczać czarnej linii.

Spostrzeżenia

  • Praca w środowisku NXT będzie jeszcze większą przyjemnością, jeśli zapewni się bezawaryjną komunikację Bluetooth komputera z robotem. Może warto poświęcić trochę czasu na identyfikację źródła tego problemu. Na pewno przyszłe grupy zyskały by na czasie.
  • Reset połączenia bluetooth, reset bricka, środowiska PLNXT oraz wykonanie nxt_open pomagał w 100% na przywrócenie połączenia

Wnioski

  • Z przyczyn od nas niezależnych nie mogliśmy zaprogramować wszystkich trzech algorytmów z laboratorium (poprzez niedokładne odczyty czujnika Ewka dalej jest uwięziona).

Uwagi dotyczące funkcjonalności PLNXT

  • Po raz kolejny użycie dowolnych predykatów czasami powodowało 'wieszanie się' środowiska PLNXT - interpreter nie przyjmował poleceń.
pl/dydaktyka/piw/2010/sprawozdania/piw20100526-17c.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