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)

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::

błąd zwracany przez niskopoziomowe funkcje nxt_actions wskazujący na problemy komunikacyjne z NXT

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.

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

drugi projekt robota

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