Jakubowski Gniadek-Zając Michałek

1) W momencie rozpoczęcia ćwiczenia okazało się, że robot Agatka nie jest poprawnie złożony. Dlatego pierwsze kilka minut musieliśmy poświęcić na jego przebudowę według Quickstartu.

2) Dalszym krokiem była konfiguracja stanowiska pracy z NXT. Pewne czynności z instrukcji takie jak „Ustawienie parametrów portu i sparowanie” oraz „Konfiguracja PlNXT” zostały wykonane przez wcześniejszą grupę, dlatego nasza grupa dokonała głównie weryfikacji poprawności konfiguracji stanowiska.

3) Kolejnym krokiem było zapozanie się z architekturą API PLNXT na podstawie instrukcji. Następnie dokonalismy próby komunikacji z robotem przez Bluetooth oraz przetestowania podstawowych poleceń API. Podczas testowania wykryliśmy zauważalne gołym okiem niedokładności poleceń sterujących obrotem kół. Wyniki działania kolejnych wywołań takich komend jak nxt_rotate czy nxt_go_cm różniły się od siebie (i od zadanych wartości) o kilka (czasem kilkanaście) stopni.

4) Następnie przystąpiliśmy do do implementacji programów wymaganych w instrukcji do laboratorium. Niestety nie mieliśmy dostępu do planszy potrzebnej do testowania algorytmu 1, dlatego od razu przystąpiliśmy do implementacji algorytmu 2. W wyniku naszej pracy powstał poniższy program w prologu:

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

turn :-
    nxt_stop,
    Angle is random(2),
    nxt_play_tone(500,1000),
    nxt_rotate(360,90-Angle*180),
    move.
      
      move :-
    trigger_create(_,check_distance,[turn]),
    nxt_go(300).

:- start.

Po jego uruchomieniu robot jedzie do przodu, aż do napotkania przeszkody w odległości ok 15 cm. Wykonuje wtedy obrót o 90 stopni w losowym kierunku i kontunuuje jazdę aż to napotkania kolejnej przeszkody, po czym dokonuje kolejnego obrotu i kontunuje jazdę itd.

5) Podczas tworzenia programu napotkaliśmy na uciążliwy problem związany z komunikacją przez Bluetooth - robot często w losowym momencie przestawał reagować na komendy. Dopiero restart robota oraz powłoki Prologu przywracał system do życia. Czasami też następowało zawieszenie powłoki prologa i konieczny był jej restart.

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