Wstęp

Celem laboratorium było zapoznanie się z interfejsem programistycznym PLNXT i budowa prostych algorytmów.

Po zapoznaniu się z treścią teoretyczną przeszliśmy do realizacji zadań.

Kod programów

Zadanie 1

%
% Zadanie 1:
% 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.
%
 
% PLNXT - API w języku Prolog dla LEGO Mindstorms NXT
  :- consult('plnxt.pl').
 
 
  start :-
    nxt_open,
% aktywacja diody sensora światła
    nxt_light_LED(activate),
    loop.
 
% główna pętla programu
  loop :-
% sensor światła wyzwala trigger z cofnięciem i obrotem Czesia
    trigger_create(_,check_line,[nxt_stop, nxt_go_cm(-200,8,force),nxt_rotate(150,190),loop]),
% sensor dotyku zatrzymuje Czesia
    trigger_create(_,check_touch,[nxt_stop,nxt_close]),
    nxt_go(200).
 
% sensor dotyku
  check_touch :-
    nxt_touch(Val,force),
    Val>0.
 
% sensor światła
% ustawiony na małą ilość światła (kolor czarny)
  check_line :-
    nxt_light(LightValue,force),
    LightValue<50.

Zadanie 2

%
% Zadanie 2:
% Robot przemieszcza się po pomieszczeniu i zmienia kierunek poruszania się, gdy przed sobą napotka przeszkodę.
%
 
% PLNXT - API w języku Prolog dla LEGO Mindstorms NXT
  :- consult('plnxt.pl').
 
  start :-
    nxt_open,
    loop.
 
% główna pętla programu
  loop :-
% sensor odleglosci wyzwala trigger z cofnięciem i obrotem Czesława
    trigger_create(_,check_distance,[nxt_stop, nxt_go_cm(-200,8,force),nxt_rotate(150,190),loop]),
 
% zderzenie - sensor dotyku zatrzymuje Czesława
    trigger_create(_,check_touch,[nxt_stop,nxt_close]),
    nxt_go(200).
 
% sensor dotyku
  check_touch :-
    nxt_touch(Val,force),
    Val>0.
 
% sensor odleglosci
  check_distance :-
    nxt_ultrasonic(DistanceValue,force),
    DistanceValue<15.

Spostrzeżenia, napotkane problemy, wnioski

Realizacja zadań dostarczyła problemów

Blokowane kółko

Budowa i ciężar robota przy mniejszych prędkościach powodowały blokadę kółka tylnego (podpierającego). Podczas większych obrotów blokowało się i zatrzymywało obrót.

Wykorzystane rozwiązanie: wartość prędkości obrotów została zwiększona

Czarna linia

Po obrocie robota jego sensor nadal znajdował się nad czarną linią

Wykorzystane rozwiązanie: cofnięcie robota kilka centymetrów do tyłu (do miejsca gdzie nie było linii) i dopiero po tym obrót dzięki takiemu podejściu można uniknąć problemu z narożnikami (bez cofania Czesław utykał w „kozim rogu”)

Dodatkowe problemy przy zadaniu 1

Odpowiednia jasność

Jasność powierzchni po której kierował się Czesław zmieniała się podczas trwania laboratorium (godziny wieczorne) przez co pole białe było błędnie interpretowane jako ciemne.

Wykorzystane rozwiązanie: Sensor światła dodatkowo wyposażyliśmy w oświetlenie, które poprawiało jakość odczytów z sensora.

Dodatkowe problemy przy zadaniu 2

Czesław nie patrzy pod nogi

Czesław kierując się po pomieszczeniu laboratorium nie patrzył „pod nogi” przez co przeszkody napotykane pod nim (przepaść końca stołu) nie były rozpoznawane.

Wykorzystane rozwiązanie: brak (ze względu na brak czasu)

Proponowane rozwiązanie: Skierowanie sensora odległości pod odpowiednim kątem do powerchni poruszania się, oraz ustawienie odległości wyzwalającej trigger mniejszej od 15 (wykryta przeszkoda przed robotem), jak i większej od pewnej stałej (w przypadku nagłego spadku terenu przed robotem sensor odległości wykrywałby dziury itp).

Uwagi

Uwagi dotyczące funkcjonalności PLNXT / powłoki SWIPL

Podczas laboratorium napotkaliśmy problemy związane z komunikacją Bluetooth Czesława z komputerem. Aby z powrotem odzyskać połączenia niezbędne był restart powłoki SWIPL oraz robota.

Uwagi dotyczące laboratorium

W opisie API PLNXT na stronie laboratorium nie ma dokładnych informacji dotyczących wartości maksymalnych zmienny zmiennych przyjmowanych przez polecenia. Niektóre z poleceń nie są opisane.

Załączniki

Zdjęcia

Podczas testowania zaimplementowanych zadań wykonaliśmy następujące zdjęcia Czesława.

Programy

Dodatkowo dołączamy spakowane pliki wykonane na laboratorium.

piw20090408-17b.zip

Informacyjnie

Sprawozdanie opracowane przez:

  • Jacka Dymczaka
  • Piotra Kanię
  • Mateusza Urbanika
pl/dydaktyka/piw/2009/sprawozdania/piw20090408-17b.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