Robot: Kajtek
Data wykonania: 02.06.2010 godz. 17:00
Autorzy: Łukasz Bartos, Magdalena Bytom, Grzegorz Świeczkowski

Budowa robota

Na ostatnich zajęciach zrealizowaliśmy algorytm więźnia, więc teraz przystąpiliśmy do realizacji robota-sprzątacza. Miał on za zadanie oczyścić teren w promieniu 40cm, wypychając ewentualne przeszkody poza obszar.

Przed implementacją samego algorytmu musieliśmy udoskonalić samą łyżkę spychającą oraz sensor odległości, ponieważ sam sensor był przesłaniany przez ową łyżkę. Po poprawkach elementów konstrukcyjnych przez mechanika, grupa przystąpiła do implementacji algorytmu.

Implementacja

Początkowo rozpoczęliśmy implementację przy użyciu wyzwalaczy, podobnie jak na poprzednich zajęciach. Jednak po kilku chwilach namysłu doszliśmy do wniosku, że przy realizacji tego zadania triggery nie będą konieczne, a zastąpić je można zwykłą pętlą.

Pierwsza realizacja algorytmu

:- consult('plnxt.pl').

start :-
	nxt_open,
	nxt_goal(kajtek, sprzataj).

sprzataj :-
	nxt_rotate(200,20),
	szukajPrzeszkody,
	sprzataj.

sprzataj :- sprzataj.

szukajPrzeszkody :-
	nxt_ultrasonic(Value, force),
	Value < 40,
	wypchnij.

wypchnij :-
	% jedz 40 cm do przodu i sie wroc
	nxt_go_cm(100,40),
	nxt_go_cm(-100,40).
stop :-
	nxt_stop,
	nxt_close.

Ponieważ realizacja zadania poszła nam w miarę sprawnie, to postanowiliśmy wykorzystać czas, który pozostał do końca laboratorium. Naszym celem stała się łyżka spychacza, którą chcieliśmy zautomatyzować. Stwierdziliśmy, że nie będzie optymalnym ze względu na zużycie baterii, przesuwanie i obracanie się robota. Postanowiliśmy, że łyżka będzie ciągle podniesiona, aby zostać opuszczona na podłoże tylko w razie konieczności, tzn. pojawi się przeszkoda.

Modyfikacja

wypchnij :-
	% opusc spychacz
	nxt_motor('A', 20, angle(30)),
	% jedz 40 cm do przodu i sie wroc
	nxt_go_cm(100,40),
	nxt_go_cm(-100,40),
	% podnies spychacz
	nxt_motor('A', -20, angle(30)).

Niestety nie udało nam się w pełni przetestować nowej implementacji, z powodu braku czasu.

Problemy, spostrzeżenia

Sama realizacja algorytmu nie sprawiła istotnych problemów. Jednak przy próbie wdrożenia naszej modyfikacji, mieliśmy problemy z notacją, która pozwoli sterować odpowiednim motorem. Ponadto problem stanowiło odpowiednie dobranie kąta, aby łyżka mogła być swobodnie opuszczana i podnoszona.

Kilkakrotnie musieliśmy zrestartować robota ze względu na problemy z połączeniem bluetooth. Ponadto w pewnym momencie koniecznym okazało się zabicie zawieszonych procesów i zrestartowanie powłoki.

sprzatacz.pl

pl/dydaktyka/piw/2010/sprawozdania/piw20100602-17a.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