Sprawozdanie z laboratorium

  • Robot: Kajtek
  • Data wykonania: 9.06.2010 godz. 15:30
  • Autorzy: Boisse Dawid, Mlaś Paulina, Woliński Krzysztof

Początek

Na początku laboratorium zapoznaliśmy się z zadaniem do wykonania.

ASCII���{
    AEAverage = 270;
    AELimitsReached = 0;
    AEStable = 1;
    AFStable = 1;
    AFStatus = 4;
    AGC = 427;
    AWBBGain = 144;
    AWBGGain = 64;
    AWBRGain = 183;
    AWBStable = 1;
    AccelerometerDeltas = "(0.0086 0.0084 0.0071) @ 0.0200";
    ApertureValue = 3;
    BrightnessValue = 2.371410760832804;
    CurrentFocusPosition = 95;
    ExposureBias = 0;
    ExposureTime = 0.06650323478260869;
    Fnumber = 2.8;
    FocalLength = 3.85;
    FocusBand = "18.56 in [11.53, 27.77]";
    FocusMode = 0;
    FocusPeakSumArray =     (
        38944,
        39863,
        40662,
        41517,
        175182
    );
    FocusScan = "(0,10.16) (34,12.05) (66,14.26) (95,17.44) (123,12.27)
(149,14.28) (173,10.09) (195,10.80) (216,8.71) (236,7.66) (255,6.87) 0.1s ago";
    FocusScoresArray =     (
        682318,
        703253,
        718697,
        737446,
        3706138
    );
    FocusWindow = "844/31 156x250";
    FullyExposed = 1;
    ISOSpeedRating = 119;
    NoiseReduction = "S:6 C:8 Y:0";
    OneFrameAEMode = 1;
    Orientation = 1;
    OverflowOccurred = 0;
    PreviousFocusBand = "17.57 in [13.03, 22.30]";
    PreviousFocusScan = "(0,11.81) (34,9.98) (66,14.13) (95,16.41) (123,15.41)
(149,13.17) (173,10.68) (195,9.36) (216,8.45) (236,7.40) (255,6.64) 3.0s ago";
    SNR = 33.35961598151052;
    SensorID = 13904;
    Sharpness = 9;
    ShutterSpeedValue = 3.910431673351468;
    ispDGain = 256;
    sensorDGain = 256;
    "{Exif}" =     {
        ColorSpace = 65535;
        DateTimeDigitized = "2010:06:09 16:41:33";
        DateTimeOriginal = "2010:06:09 16:41:33";
        ExposureTime = 0.06666666666666667;
        FNumber = 2.8;
        FocalLength = 3.85;
        ISOSpeedRatings =         (
            119
        );
        PixelXDimension = 2048;
        PixelYDimension = 1536;
        Sharpness = 1;
    };
    "{TIFF}" =     {
        DateTime = "2010:06:09 16:41:33";
        Make = Apple;
        Model = iPhone;
        XResolution = 72;
        YResolution = 72;
    };... ASCII���{
    AEAverage = 202;
    AELimitsReached = 0;
    AEStable = 1;
    AFStable = 1;
    AFStatus = 4;
    AGC = 259;
    AWBBGain = 150;
    AWBGGain = 64;
    AWBRGain = 179;
    AWBStable = 1;
    AccelerometerDeltas = "(0.0058 0.0056 0.0050) @ 0.0200";
    ApertureValue = 3;
    BrightnessValue = 3.348623453066673;
    CurrentFocusPosition = 81;
    ExposureBias = 0;
    ExposureTime = 0.04166660869565218;
    Fnumber = 2.8;
    FocalLength = 3.85;
    FocusBand = "19.16 in [13.12, 27.41]";
    FocusMode = 1;
    FocusPeakSumArray =     (
        44664,
        44868,
        45140,
        45519,
        166862
    );
    FocusScan = "(0,16.74) (29,17.72) (56,14.38) (81,18.32) (105,14.94)
(127,11.05) 1.3s ago";
    FocusScoresArray =     (
        1131142,
        1136968,
        1140853,
        1144612,
        6618305
    );
    FocusWindow = "350/300 300x400";
    FullyExposed = 1;
    ISOSpeedRating = 70;
    NoiseReduction = "S:6 C:8 Y:0";
    OneFrameAEMode = 0;
    Orientation = 6;
    OverflowOccurred = 0;
    PreviousFocusBand = "76.70 in [0.00, 0.00]";
    PreviousFocusScan = "(0,121.86) (42,7.97) (81,9.89) (116,8.14) (149,6.88)
(178,6.43) (206,7.25) (231,6.50) (255,7.05) 4.6s ago";
    SNR = 36;
    SensorID = 13904;
    Sharpness = 9;
    ShutterSpeedValue = 4.584964507950436;
    ispDGain = 256;
    sensorDGain = 256;
    "{Exif}" =     {
        ColorSpace = 65535;
        DateTimeDigitized = "2010:06:09 16:41:13";
        DateTimeOriginal = "2010:06:09 16:41:13";
        ExposureTime = 0.04166666666666666;
        FNumber = 2.8;
        FocalLength = 3.85;
        ISOSpeedRatings =         (
            70
        );
        PixelXDimension = 2048;
        PixelYDimension = 1536;
        Sharpness = 1;
    };
    "{TIFF}" =     {
        DateTime = "2010:06:09 16:41:13";
        Make = Apple;
        Model = iPhone;
        XResolution = 72;
        YResolution = 72;
    };...

Kod programów

Na początku napisaliśmy program, który korzystał z wątków:

:- consult('plnxt.pl').
 
start :-
	nxt_goal(kajtek, go_on_buddy).
 
go_on_buddy :-
	nxt_light_LED(activate),
	go_go_go.
 
go_go_go :-
	stop,
	nxt_go(250),
	trigger_create(_,sprawdz, check_more).
 
sprawdz :-
	nxt_light(Value, force),
	Value > 41. %bialy
 
check_more :-
	stop,
	nxt_go_cm(50,2),
	nxt_light(Value, force),
	decide(Value).
 
decide(Value) :-
	Value < 30, %czarny
	escape.
 
decide(Value) :-
	Value >= 31,
	Value <	41. %czerwony
 
escape :-
	nxt_rotate(100, 120, force),
	go_go_go.
 
stop :-
	trigger_killall,
	nxt_stop.

Niestety program nie działał poprawnie, zmodyfikowaliśmy więc kod:

:- consult('plnxt.pl').
 
start :-	
	nxt_goal(kajtek, go_on_buddy).
 
go_on_buddy :-
	write('[GO ]'),
	nxt_go_cm(300,1),
	szukaj.	
 
szukaj :-
	write('szukam - '),		
	nxt_light(Value,force),
	write(Value),
	decyzja(Value).
 
decyzja(Value) :-
	Value < 35, %czarny
	write(' - czarny'),nl,
	obrot.
 
decyzja(Value) :-
	Value > 34,
	Value < 40, %czerwony
	write(' - czerwony'),nl,
	uciekaj.
 
decyzja(Value) :-
	Value > 39, %bialy
	write(' - bialy'),nl,
	nxt_stop,
	go_on_buddy.
 
obrot :-
	nxt_rotate(300,120),
	write('OBROT'),nl,
	nxt_stop,
	go_on_buddy.
 
uciekaj :-
	nxt_go_cm(300,50),
	write('UCIEKAJ'),nl.

Mimo zmian(zrezygnowaliśmy z wątków) robot niepoprawnie reagował na polecenia, główną przyczyną takiego stanu rzeczy były problemy z dobraniem odpowiednich wartości dla poszczególnych kolorów. Czytnik jest wrażliwy na zmiany takie jak: inne oświetlenie, cień, ruch itp., które uniemożliwiały trafne dobranie wartości kolorów.

Wartości kolorów

pod szafą Z LED:
bialy: 		63,69,49,46,
czerwony: 	68
carny:		

pod szafą BEZ LED:
biały: 		32,27,33,21
czarny: 	11,10
czerwony: 	23,21,22,26

pod oknem BEZ LED:
biały:		32,25,27,28,33,24
czarny:		16,17,15,16,
czerwony:	25,26,14,16

pod oknem Z LED:
biały:		69		
czarny:		
czerwony: 	67,68,66,

Spostrzeżenia, napotkane problemy, wnioski

Napotkane problemy

  • Głównym problemem była zbieżność wartości koloru czerwonego i białego, przez co robot czasem na białym polu 'znajdował' czerwony kolor i zaczynał uciekać. Próbowaliśmy zmieniać miejsce, włączać i wyłączać diodę, ale nie dawało to większych rezultatów, gdyż robot sam sobie rzucał cień. Większą część laboratorium spędziliśmy na szukaniu odpowiedniego miejsca, gdzie różnica między kolorami będzie optymalna dla zadania.
  • Brak dokumentacji do komunikacji między robotami dla PLNXT, przez co nie udało nam się nawiązać połączenia między robotami.

Uwagi dotyczące laboratorium

  • Bardzo przydatne byłoby wprowadzenie do komunikacji między robotami w PLNXT.
  • Pomocna mogłaby być zmiana koloru klucza dla więźnia na inny, tak by różnice wartości zczytywanych dla różnych kolorów były znaczące.
pl/dydaktyka/piw/2010/sprawozdania/piw20100609-15a.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