Skład zespołu:
Bartosz Beza
Wojciech Kucharski
Piotr Walat
1. Wstęp
Laboratorium miało na celu dalszą pracę z interfejsem programistycznym PLNXT oraz implementację wybranych algorytmów. Programy wykorzystywały mechanizmy wielowątkowości oraz tzw. 'trigerrów' (wyzwalaczy?).
Głównym zadaniem wykonywanym podczas laboratorium było zaimplementowanie algorytmu Sprzątacz opisanego w instrukcji do laboratorium.
2. Konstrukcja robota
Wykorzystanym robotem był robot Henio udostepniony w wariancie Quick start przez prowadzącego.
W trakcie przeprowadzanych testów dokonaliśmy kilku poprawek konstrukcji robota w tym w szczególności obniżenia sensora odległości.
W końcowej części laboratorium przeprowadziliśmy próby zainstalowania specjalnego „ramienia” służącego do przepychania przedmiotów, jednakże niestety z powodu braku czasu nie uruchomiliśmy robota w takiej postaci.
Modyfikacje
Wersja po przeróbkach
3. Opracowanie algorytmów
Naszym celem było napisanie programu sterującego w taki sposób robotem, aby ten „oczyszczał” teren o promieniu X wokół siebie z przedmiotów.
Implementacja algorytmu opierała się na poniższych krokach:
rotacja robota o 360 stopni lub dopóki nie zostanie wykryta przeszkoda
jeśli zostanie wykryta przeszkoda (trigger) robot porusza się X+d cm do przodu usuwając przeszkodę
robot cofa się o X+d cm do tyłu wracając do poprzedniego położenia
powrót to początku algorytmu (rotacja + detekcja)
sprzatacz.pl
:- consult('plnxt.pl').
start :-
nxt_open,
thread_create(rotate,_,[detached(true)]).
rotate :-
nxt_rotate(150,360),
trigger_create(_,obstacle,remove_obstacle).
obstacle :-
nxt_ultrasonic(Value, force),
Value < 15.
remove_obstacle :-
nxt_stop,
nxt_go_cm(200,15),
nxt_rotate(300,180),
nxt_go_cm(200,15),
nxt_rotate(300,180),
rotate.
stop :-
trigger_killall,
nxt_stop,
nxt_close.
Za X przyjęto arbitralną wartość dostosowaną do warunków panujących na stole pod oknem (15).
4. Napotkane problemy
5. Co rozszerzyć w laboratorium?
5. Wnioski
Bardziej złożone problemy i algorytmy często wymagają przemyślnej konstrukcji robota, tak aby nie generować niepotrzebnych komplikacji.
nxt_go_cm(-200,15) sprawiało kłopoty… być może z naszej winy, aczkolwiek nie udało nam się rozwiązać tej kwestii