====== Laboratorium - zapoznanie z PLNXT ====== 08.04.2009, godz. 9.30\\ grupa w składzie: Joanna Koza, Tomasz Michalski, Kamil Mucha\\ Informatyka Stosowana IV 2008/2009\\ KA, WEAIiE, AGH\\ \\ robot HENIO\\ ===== Budowa robota ===== efekt końcowy - załączone sensory odległości i światła (koloru)\\ {{:pl:dydaktyka:piw2009:sprawozdania:akt-henio4.jpg|}} ===== Konfiguracja stanowiska do pracy z NXT ===== ==== Połączenie robota oraz pobranie PLNXT ==== Bez problemów. ==== Ustawienie parametrów portu i sparowanie ==== //./bin/plnxt_stty henio// - brak konieczności parowania ==== Konfiguracja PLNXT ==== **plnxt.pl**\\ % Specify the device files. nxt_serial_device(write,'/dev/rfcomm8'). nxt_serial_device(read,'/dev/rfcomm8'). ==== Sprawdzenie konfiguracji ==== Konfiguracja działa poprawnie. ===== Praca w powłoce SWIPL ===== //> xpce// [plnxt]. nxt_open. %testowe akcje nxt_close. ===== Implementacja algorytmu ===== ==== Algorytm 1 ==== :- nxt_open, nxt_light_LED(activate), Angle is 120 + random(120), trigger_create(_,check_color,[nxt_rotate(350,Angle,force)]), nxt_go(300,force). check_color :- nxt_light(Value,force), Value < 100. Program niestety nie działał na laboratorium, otrzymywaliśmy przy próbie jego uruchomienia następujące błędy::\\ {{:pl:dydaktyka:piw2009:sprawozdania:err1.jpg|}}\\ błąd zwracany przez niskopoziomowe funkcje nxt_actions wskazujący na problemy komunikacyjne z NXT\\ {{:pl:dydaktyka:piw2009:sprawozdania:err2.jpg|}}\\ błąd konfiguracji PLNXT (mimo iż działała poprawnie), wymuszający konieczność ponownego ustawienia portów i rekonfiguracji\\ \\ Nawet gdy już udało się uruchomić program i robot rozpoczął ruch, nie zatrzymywał się - być może błędnie dobieraliśmy wartość Value w check_kolor - zmienialiśmy ją od 1, przez 10 do 100 - nie przyniosło to żadnych efektów.\\ Kolejnym zauważonym problemem była niemożność korzystania z diody wbudowanej w czujnik światła. Umieszczenie komendy // nxt_light_LED(activate)// w poprawnie działającym kodzie skutkowało zawieszeniem się programu w czasie jej wykonywania. {{:pl:dydaktyka:piw2009:sprawozdania:akt-henio2.jpg|}} ==== Algorytm 2 ==== :- nxt_open, trigger_create(_,check_distance,[nxt_rotate(350,90,force)]), nxt_go(300,force). check_distance :- nxt_ultrasonic(Distance,force), Distance < 15. Chociaż ze względu na brak czasu (konieczność ponownego składania robota - patrz "uwagi") oraz problemy z PLNXT nie udało się nam uruchomić algorytmu 2 na zajęciach, identyczną funkcjonalność zrealizowaliśmy na pierwszych zajęciach wprowadzających:\\ \\ pierwszy projekt robota\\ {{:pl:dydaktyka:piw2009:sprawozdania:akt-lab1-1.jpg|}} \\ drugi projekt robota\\ {{:pl:dydaktyka:piw2009:sprawozdania:akt-lab1-2.jpg|}} \\ filmik do pobrania\\ [[http://student.agh.edu.pl/~kmucha/piw/akt-lab1.AVI]] ===== Uwagi i wnioski ===== * pierwszym napotkanym problemem było rozmontowanie robota przez poprzednią grupę (wbrew zaleceniom w instrukcji) - straciliśmy dużo czasu na ponowne złożenie robota; * kolejny problem dotyczył pozornie poprawnej komunikacji PLNXT i robota - błędy podczas próby uruchomienia programów. Probelmy niskopoziomowe wskazują na niedoskonałość PLNXT. * dokumentacja PLNXT nie zawiera kompletu informacji, np. o odczytach sensorów. Sensor światłą zwraca wartości 0-100, jednak brak wiadomości, która wartość to pełne światło, a która to ciemność (konieczność kodowania metodą prób i błędów). Komunikacja dwustronna i możliwość korzystania z instrukcji //write// na pewno ułatwiła by testowanie programów. * funkcjonalność PLNXT pozwala (przy założeniu bezawaryjności) na proste i skuteczne programowanie robota - pokryta jest pełnia jego funkcjonalności, dodatkowo można korzystać z zalet pisania w języku PROLOG.